- 在分段映射方式下,虚拟地址由2部分组成,段选择因子和段内偏移量
- 段内选择因子又包含:段号和特权等标志位
- 段号可以去段表中需要映射,即段号的相关信息(段内描述符)
-
流程描述
cpu读取到一个虚拟地址
- 从虚拟地址的段选择因子中取出段号
- 拿着段号去段表中寻找段内描述符
- 从段内描述符中获取段基地址
- 拿着段基地址(实际的物理内存地址)去物理内存中找
- 到了物理内存后,从段基地址开始移动 虚拟地址中的段内偏移量长度,即为虚拟地址的映射的物理内存地址
- 注意段表中的段内描述符中的段界限,是为了校验段偏移量的。
缺点及解决方式
1.内存碎片
- 内部内存碎片:被加载进内存的的程序段可能不常用
- 外部内存碎片:如上图所示,外部程序加载不进来了。
2.外部内存碎片的解决方式
可以把上图蓝色块从物理内存中取出后,紧接着橙色区域放置。这样就可以将两个空闲内存小块合成一个大块。从物理内存中取出的数据,会放置回磁盘。这部分磁盘就叫做交换区
疑问点
- 段表是放置在哪里的?内存?寄存器?