OS-交换空间与缓存管理

交换空间

现代操作系统通过交换空间(swap space)实现虚拟内存的扩展能力。当物理内存容量不足以容纳所有活跃进程的页时,操作系统会将低频访问的页换出(page out)到磁盘的专用交换区域,从而释放物理内存资源。这种机制使得程序能够使用远大于实际物理内存的地址空间。

存在位

在地址转换过程中,硬件通过页表项(PTE)中的**存在位(Present Bit)**判断目标页的物理状态:

  • 存在位=1:页位于物理内存,可直接通过PFN访问
  • 存在位=0:页已被换出到交换空间,触发页错误(Page Fault)

当发生页错误时,操作系统执行以下处理流程:

  1. 定位磁盘地址:从PTE中提取页的磁盘存储位置
  2. 发起换入操作
    • 选择待换出的物理页(若内存已满)
    • 将目标页从交换空间载入物理内存
  3. 更新内存结构
    • 修改PTE的存在位为1
    • 写入新的物理页帧号(PFN)
    • 刷新TLB对应条目
  4. 恢复执行:重新执行触发页错误的指令

再看 TLB 未命中,现在 TLB 未命中有三种可能:

  1. 该页存在且有效,TLB 未命中处理程序得到虚拟地址到物理地址映射关系后写入 TLB 即可。
  2. 该页有效但不在物理内存中,触发页错误并从交换空间中读入物理内存。
  3. 该页无效,操作系统可能会直接杀死程序。

交换策略

物理内存被认为是虚拟内存的缓存,那么操作系统需要减小缓存未命中,提高缓存命中率。

LRU

需要注意区分 LFU 和 LRU:

  • LFU:替换最不经常使用的页面。LFU算法基于页面的访问频率,即页面被访问的次数。它会优先替换那些在历史中被访问次数最少的页面。
  • LRU:替换最近最少使用的页面。LRU算法基于页面的访问时间,即页面最后一次被访问的时间。它会优先替换那些在最近一段时间内没有被访问过的页面。
updatedupdated2025-04-112025-04-11