分段存储管理

「分段存储」是一种存储管理方式,即以为单位进行主存分配。

分段存储的引入:主要目的是为了满足用户在编程和内存使用上要求

  • 方便编程:通常,一个程序是由若干个自然段组成,因而,用户希望能够把程序按逻辑关系分成若干个段,每个段有段名和长度,用户程序在执行时可按段名和段内地址进行访问。 
  • 共享和保护:在实现程序和数据共享和保护时,都是以信息逻辑单位为基础的,比如,共享例程和函数。而在分页存储管理中,每页是存放信息的物理单位,本身并没有完整的意义,因而不便于实现信息共享和保护,而段是信息的逻辑单元 。

基本原理

每个进程的地址空间被划分为若干段,每段有段名; 每段都从 0 开始连续编址,段的长度由相应的逻辑信息组的长度决定。 段间可以不连续编址。 采用二维地址空间来表示,

其中, S:段号,W:段内地址。

「分段管理」指的是以段为单位进行主存分配,每段分配一个连续的主存物理空间; 段间可以不连续:段和段之间在主存中地址可以是离散的。

如下图,每一段之间是连续的,但段和段之间是离散的。操作系统为了进行管理,需要创建一个段表,其中包含三列重要信息:段的序号,段的长度和段首地址。

img-2024-04-24 18-41-49.png

为了记记录和管理进程分段信息,引入段表

img-2024-04-24 18-45-36.png

共享和保护

特点

  • 没有内部碎片; 
  • 便于共享和保护; 
  • 存在外部碎片; 
  • 由于段内连续分配,段的长度受内存空闲区大小的限制; 
  • 需要更多硬件支持。

分段和分页比较

分段存储管理与分页存储管理的比较:

不同点 

  • 是信息的物理单位,分页是为了实现离散分配方式,以减少内存的碎片,提高内存利用率。或者说,分页仅仅是由于系统管理的需要,而不是用户的需要。 
  • 是信息的逻辑单位,它含有一组其意义相对完整的信息,分段的目的是为了能更好地满足用户的需要。 
  • 页的大小固定且由系统确定,把逻辑地址划分为页号和页内地址两部分是由硬件实现的,因而,一个系统只能有一种大小的页面。 
  • 段的长度不固定,取决于用户编写的程序,通常由编译程序在对源程序进行编译时,根据信息的性质来划分。
  • 分页的逻辑地址空间是一维的,即单一的线性地址空间,程序员只需利用一个地址符。即可表示一个地址。 
  • 分段的逻辑地址空间是二维的,程序员在标识一个地址时,既需给出段名,又需给出段内地址。 

相同点 

  • 采用离散分配方式; 
  • 通过地址映射机构实现地址变换。