4.6 分段存储管理方式

4.6 分段存储管理方式

随着操作系统的演进,存储管理方式也经历了从单一连续分配到固定分区分配,再到动态分区分配的转变。为了进一步提高内存利用率,发展到了离散分配方式,即分页存储管理方式。然而,分段存储管理方式的引入,主要是为了满足用户在编程和使用上的多样需求,特别是那些其他存储管理方式难以满足的需求,使得分段存储管理成为现代存储管理的一个重要基础。

4.6.1 分段存储管理方式的引入

分段存储管理方式的引入主要基于以下几点考虑:

1. 方便编程

传统的程序通常可以划分为主程序段、子程序段、数据段等多个相对独立的逻辑单位。分段存储管理方式允许程序员根据逻辑关系将作业分成若干个段,每个段独立编址,从而大大提高了编程的方便性和程序的可读性。

2. 信息共享

分段存储管理方式以段为基本单位,方便实现程序和数据的共享。与分页存储相比,段的概念更贴近程序的逻辑结构,使得共享某一过程、函数或文件时,实现共享变得更为简单和直接。

3. 信息保护

信息保护也是以段为基本单位进行的。通过在段上设置保护标志,可以灵活控制对段的访问权限,有效地实现信息保护。

4. 动态增长

某些段(尤其是数据段)在使用过程中可能需要动态增长。分段存储管理方式允许段动态增长,而无需预先确定段的最大大小,从而更好地应对动态变化的存储需求。

5. 动态链接

分段存储管理非常适合于动态链接的需要。系统仅在程序执行时才将必要的目标程序段装入内存,并在需要时动态链接其他段,提高了内存利用率,并减少了程序启动时间。

分段存储管理方式的优势

分段存储管理方式的引入,不仅满足了程序员在编程上的需求,提高了内存利用率,还支持了信息共享与保护、动态链接等高级功能,使得操作系统的存储管理更加灵活和高效。因此,分段存储管理方式已成为现代操作系统中不可或缺的一部分,广泛应用于多种高级语言和编译系统中。

 

4.6 分段存储管理方式

存储管理技术随着操作系统的发展而不断演进,从单一连续分配发展到固定分区分配,进而到动态分区分配,最终发展到离散分配方式,如分页存储管理方式。然而,分段存储管理方式的引入并非仅仅出于提升内存利用率的考虑,它更多地是为了满足用户和程序员在编程和使用上的需求,尤其是那些其他存储管理方式难以满足的需求。因此,分段存储管理方式成为现代操作系统中一项基础且关键的技术。

4.6.2 分段系统的基本原理

1. 分段

分段存储管理方式中,作业的地址空间被划分为若干个逻辑上的段,每个段都是一组逻辑上相对独立的信息。典型的段包括主程序段、子程序段、数据段和栈段等。每个段从0开始编址,并占用一段连续的地址空间。段的长度由其逻辑信息组的长度决定,因此,各段的长度不相等。这种方式使得整个作业的地址空间表现出二维特性:每个段既包含了一部分地址空间,又标识了逻辑关系。

2. 段表

分段式存储管理系统为每个段分配连续的内存空间。为了能从物理内存中准确找到每个逻辑段对应的位置,系统需为每个进程建立一张段映射表,即段表。段表记录了每个段在内存中的起始地址(基址)和段的长度。段表的配置确保了逻辑地址到物理地址映射的正确性。

3. 地址变换机构

为实现逻辑地址到物理地址的变换,系统中设置了段表寄存器,存放段表的始址和长度。地址变换时,系统比较逻辑地址中的段号和段表长度,确保访问不越界。通过段表,系统计算出段对应的物理内存位置,完成地址变换。

分页与分段的区别

分页和分段系统在表面上看似相似,都采用离散分配方式并通过地址映射机构实现地址变换。但本质上两者完全不同:

  • 页是物理单位:分页旨在消减内存碎片,提高内存利用率,是系统管理的需要。
  • 段是逻辑单位:分段满足用户需求,每个段都是一组逻辑上相对完整的信息。
  • 页的大小固定:由系统决定,用户程序地址空间是一维的。
  • 段的长度不固定:由用户程序决定,地址空间是二维的。

分段存储管理方式的引入,极大地增强了操作系统的灵活性和功能性,满足了用户在编程和数据处理上的多样化需求。它不仅便于编程,而且方便了信息的共享和保护,支持了动态链接以及段的动态增长,是现代操作系统不可或缺的一部分。

4.6 分段存储管理方式

分段存储管理方式的引入,主要是为了更好地满足用户和程序员在编程和数据处理上的需求,特别是实现段的共享和保护,这是其他存储管理方式难以达到的。下面我们将进一步探讨分段存储管理方式下的信息共享问题。

4.6.3 信息共享

分段系统的显著优势之一是易于实现段的共享。这意味着多个进程可以共享一个或多个分段,而且对段的保护也非常简单直接。

1. 分页系统中的程序和数据共享

在分页系统中,虽然也可以实现程序和数据的共享,但这种共享的实现远不及分段系统来得直观和便捷。举个例子,假设一个多用户系统,能同时接纳40个用户运行同一个文本编辑程序。如果文本编辑程序包含160KB的代码和40KB的数据区,总共需要8MB的内存空间来支持这40个用户。通过共享可重入代码,内存需求可以大幅减少,但在分页系统中实现这种共享需要为每个进程建立多个页表项,这一过程较为复杂。

2. 分段系统中的程序和数据共享

分段系统由于以段为基本单位,无论段的大小如何,都只需要为该段建立一个段表项,从而使共享实现变得异常简单。继续以文本编辑程序为例,在分段系统中,我们只需在每个进程的段表中为文本编辑程序设置一个段表项,这个段表项的基址指向内存中editor程序的起始地址。这种做法大大简化了共享实现的过程。

可重入代码的重要性

可重入代码,或称为“纯代码”,是指一种可以被多个进程同时访问的代码。要保证代码的可重入性,代码在执行过程中绝对不能有任何改变。这要求可重入代码不能被任何进程修改。然而,在实际中,大多数代码在执行过程中可能会有所变化,例如计数器、指针、信号量等。为了解决这一问题,每个进程都应该有自己的局部数据区,以存放执行中可能会变化的数据。这样,程序在执行时只会修改属于该进程私有的数据区中的数据,而不会去修改共享的代码,从而保持代码的可重入性。

分段存储管理方式不仅提高了编程的便捷性,还极大地简化了信息共享和保护的实现,支持了动态链接以及信息的动态增长,对现代操作系统的设计和实现有着深远的影响。

 

4.6 分段存储管理方式

分段存储管理方式通过将程序分成逻辑上的各个段,如主程序段、子程序段、数据段等,每个段独立编址,并根据逻辑关系组织,这不仅方便了程序的组织和管理,也为信息的共享与保护提供了便利。以下深入探讨段页式存储管理方式,这是分页与分段管理方式的结合体,旨在吸收两者的优点,实现更高效的内存管理。

4.6.4 段页式存储管理方式

段页式存储管理方式结合了分页系统的内存利用效率和分段系统的用户友好性,通过将程序首先分段,再将各段分页,有效解决了内存的外部碎片问题,同时保留了分段管理的所有优点,如便于共享、保护、动态链接等。

1. 基本原理

段页式系统的核心思想是将用户程序首先划分为逻辑上的段,然后每个段进一步划分为页。这种方式既保持了段的逻辑单位特性,又引入了页的物理单位特性,从而兼顾了分段和分页的优点。在这种系统中,地址空间由段号、段内页号及页内地址三部分组成,实现了从用户逻辑地址到物理地址的映射。

2. 地址变换过程

段页式管理系统中,地址变换是通过段表和页表配合完成的。首先,利用段号查找段表得到页表的位置,然后通过页表将逻辑地址映射到物理地址。这一过程需要三次内存访问:首先访问段表,然后是页表,最后才是实际的数据或指令。为了优化这一过程,系统中增设高速缓冲寄存器(如快表),以减少对内存的访问次数,提高执行速度。

优化访问速度

由于直接访问段表和页表会显著增加内存访问次数,因此,在地址变换机构中增设高速缓冲寄存器是提高系统执行速度的关键。通过缓存最近访问的页表项,大多数访问可以直接通过快表完成,从而避免了多次访问内存的开销。

段页式存储管理的优势

  • 提高内存利用率:通过解决外部碎片问题,段页式管理方式有效提高了内存的利用率。
  • 便于编程和管理:保留了分段管理的优点,如便于编程、易于实现信息共享和保护等。
  • 动态链接与动态增长:支持程序的动态链接和段的动态增长,适应了程序运行中的实际需求。

段页式存储管理方式的引入,是对现有分段和分页管理方式的一种优化和提升,它更好地平衡了内存利用率和用户编程需求之间的矛盾,为现代操作系统的存储管理提供了一种高效的解决方案。

 

 

 

 

  • 21
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏驰和徐策

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值