image.png

  1. 在分段映射方式下,虚拟地址由2部分组成,段选择因子和段内偏移量
  2. 段内选择因子又包含:段号和特权等标志位
  3. 段号可以去段表中需要映射,即段号的相关信息(段内描述符)
  4. 段内描述符包含:段基地址,段限界和特权级DPL

    流程描述

  5. cpu读取到一个虚拟地址

  6. 从虚拟地址的段选择因子中取出段号
  7. 拿着段号去段表中寻找段内描述符
  8. 从段内描述符中获取段基地址
  9. 拿着段基地址(实际的物理内存地址)去物理内存中找
  10. 到了物理内存后,从段基地址开始移动 虚拟地址中的段内偏移量长度,即为虚拟地址的映射的物理内存地址
  11. 注意段表中的段内描述符中的段界限,是为了校验段偏移量的。

缺点及解决方式

1.内存碎片

image.png

  • 内部内存碎片:被加载进内存的的程序段可能不常用
  • 外部内存碎片:如上图所示,外部程序加载不进来了。

    2.外部内存碎片的解决方式

    可以把上图蓝色块从物理内存中取出后,紧接着橙色区域放置。这样就可以将两个空闲内存小块合成一个大块。从物理内存中取出的数据,会放置回磁盘。这部分磁盘就叫做交换区
    image.png

    疑问点

  1. 段表是放置在哪里的?内存?寄存器?