分段 读操作系统概念第六版

来源:互联网 发布:英国教育体系 知乎 编辑:程序博客网 时间:2024/04/30 06:17

采用分页内存管理有一个不可避免的问题:用户观点的内存和实际内存的分离。用户观点的内存和实际内存不一样。用户观点的内存需要映射到实际内存。该映射允许逻辑内存和物理内存的不同。

 

想一下你在写程序时是如何考虑程序的。你会认为程序是由主程序加上一些子程序、过程、函数或模块所构成的。还有各种数据结构:表、数组、堆栈、变量等。每个模块或其他数据元素都可以通过名称引用。你会说“符号表”、“函数sqrt”、“主函数”,而并不关心这些元素所在内存的位置。你不关心符号表是放在函数sqrt之前还是之后。这些段的长度是不同的,其长度是由这些段在程序中的目的所定义的。段内的元素是由它们距段首的偏移来决定的。

分段就是支持这种用户观点的内存管理方案。逻辑地址空间是由一组段组成。每个段都有名称和长度。地址指定了段名称和段内偏移。因此用户通过两个量来指定地址:段名称和偏移。

一个Pascal编译器可能会创建如下不同的段:

1:全局变量;

2:过程调用堆栈,以用于保存参数和返回地址;

3:每个过程或函数的代码部分;

4:每个过程或函数局部变量部分。

 

分页产生内部碎片,分段产生外部碎片。