0%

Virtual Memory

概念

  1. 每个程序有自己的地址空间,这些地址空间被分为很多拥有连续地址范围的页面
  2. 程序运行时,并非所有页面都要加载进内存。只有需要时,页面才被OS映射到物理内存
  3. 页面可以被交换(和磁盘)
  4. 程序里用到的是虚地址

Paging

问题

  • 如何把虚地址映射到物理地址

相关概念

  • 页面

    • 虚拟地址空间单元

  • 页表

    • 页面和页框的映射关系
    • Present/Absent
    • Page Frame Number
  • 页框

    • 物理内存空间单元

MMU

Memory Management Unit

翻译过程

  • 虚拟地址

    • 虚拟页面号

      • 高4位
    • 偏移量

      • 低12位
  • 步骤

    • 由虚拟地址找到虚拟页面号和偏移量
    • 由页表得到物理页面号(顺便判断是否会缺页中断,如果缺页中断就不用找了)
    • 加偏移量得到物理地址

优化

Speeding Up paging

  • TLBs

    • 情报

      • 大多数程序总是对少量的页面进行频繁的访问
    • 功能

      • 引入一个小型的硬件设备TLB将虚拟地址直接映射到物理地址,不再需要去查找页表

Reduce Page Table Size

  • Multilevel Page level

    • 缺点

      • 影响查找速度
  • Inverted Page Table

    • 哈希
    • 全局只有一张表

Page Replacement Alg

为什么需要PRA

  • 新的进程已经没内存了,所以要替换一些进程

分类

  • 最优置换算法

    • 特点

      • Optimal but unreliazable
      • Page fault数最小
      • 替换最后使用的进程
    • 计算缺页中断次数

  • Least Recently used

    • 概念

      • 参考之前的序列,找到最不常用的
    • 分类

      • Strict LRU

        • 缺陷

          • 要维护一个链表,每次都要更新链表
      • Approximately LRU

    • 硬件实现

  • Simulating LRU

    • Not Frequently used
  • The Working Set PRA

  • The WS Clock

  • FIFO