分段内存管理

一、分页系统的缺点

  分页系统存在的一个无法容忍,同时也是分页系统无法解决的一个缺点就是:一个进程只能占有一个虚拟地址空间。在此种限制下,一个程序的大小至多只能和虚拟空间一样大,其所有内容都必须从这个共同的虚拟空间内分配。

二、分段管理系统

1、分段管理的概念

  分段管理就是将一个程序按照逻辑单元分成多个程序段,每一个段使用自己单独的虚拟地址空间。例如,对于编译器来说,我们可以给其5个段,占用5个虚拟地址空间,并分配一段连续的地址空间(段内要求连续,段间不要求连续,因此整个作业的地址空间是二维的)。其逻辑地址由段号S与段内偏移量W两部分组成。如下图所示:
分段内存管理_第1张图片
  如此,一个段占用一个虚拟地址空间,不会发生空间增长时碰撞到另一个段的问题,从而避免因空间不够而造成编译失败的情况。如果某个数据结构对空间的需求超过整个虚拟之地所能够提供的空间,则编译仍将失败。不过出现这种可能的概率恐怕不会比太阳从西边出来的概率高出多少。

  在页式系统中,逻辑地址的页号和页内偏移量对用户是透明的,但在段式系统中,段号和段内偏移量必须由用户显示提供,在髙级程序设计语言中,这个工作由编译程序完成。
在这里插入图片描述

2、段表

  每个进程都有一张逻辑空间与内存空间映射的段表,其中每一个段表项对应进程的一个段,段表项记录该段在内存中的起始地址和段的长度。
在这里插入图片描述
  在配置了段表后,执行中的进程可通过查找段表,找到每个段所对应的内存区。可见,段表用于实现从逻辑段到物理内存区的映射,如图3-14所示。
在这里插入图片描述

3、信息共享

  分段系统的一个突出优点,是易于实现段的共享,对段的保护也十分简单。
分段内存管理_第2张图片

4、分段内存管理的优缺点

【优点】:

  • 每个逻辑单元可单独占用一个虚拟地址空间,这样使得编写程序的空间大为增长。

  • 由于段式按逻辑关系划分,因此信息共享起来十分方便

  • 对于空间稀疏的程序来说,分段管理将节省大量的空间

【缺点】:

  • 存在外部碎片,一个段必须全部加载到内存。

三、分页与分段的主要区别

  • 页式系统中,逻辑地址的页号和页内偏移量对用户是透明的,但在段式系统中,段号和段内偏移量必须由用户显示提供

  • 分页是一维地址空间,分段是二维的(段内和段间)

  • 页的大小不可变段的大小可以动态改变

  • 页和段都有存储保护机制。但存取权限不同:段有读、写和执行三种权限而页只有读和写两种权限

参考:https://www.cnblogs.com/edisonchou/p/5115242.html
https://blog.csdn.net/qq_28602957/article/details/53637103

你可能感兴趣的:(#,操作系统原理,分段内存管理,操作系统)