面向面经学习之操作系统 第二章 内存管理 (第二节 分段式管理、段页式管理)
一、分段式管理:
思想举例:把代码和数据分开管理。
1、概念
按照这段内存所使用的内在逻辑来分成若干个大小不等的区间,我们称为段。(代码段、静态数据和全局数据段、堆段、栈段)
段就相当于分页式管理里的页一样,我们只需要装入必要的段。
段的好处:逻辑上是一个完整的单元。好处:
- 相关的数据一定是整体进,整体出,不会出现分页式管理的“抖动”现象。
- 保护:比如代码数据分开,读写权限什么的也就分开了。
段号和段内的偏移。
做保护的时候:一个段一个策略。
做地址转换的时候:用段号来查一张段表,段表记录了每个段在内存中的起点,得到了起点再得出段的长度,我们判断偏移量没有段的长度,则没有越界,从而允许访问。
也就是说,分段式管理引入了段表的概念。
2、和分页式管理的对比:
- 段太大了可能会出现外碎片。
- 交换单元上来讲:分页式可能会出现“抖动”,分段式不会。
- 分段式便于共享。
二、段页式管理:
先查段表再查页表。