跳到主要内容

虚拟内存与页表

虚拟内存是什么?​

  • 定义: 对内存的抽象, 为每个进程提供私有的内存空间;
  • 结构: 由连续的字节组成的数组, 内容存放在磁盘上;
  • 索引: 每个字节有唯一的虚拟地址, 作为这个数组的下标;

页是什么?​

  • 页: 磁盘与内存之间的传输单元, 作用类似缓存中的块;
  • 虚拟页: 虚拟内存中的页;
  • 物理页 (帧): 物理内存中的页;

虚拟页有哪几种状态?​

状态含义
未分配尚未创建的页
已缓存已分配且已缓存在物理内存中的页
未缓存已分配但尚未缓存在物理内存中的页

页表做什么?​

  • 页表项 (PTE): 记录虚拟页的状态与位置;
    • 已缓存: 保存物理页号;
    • 未缓存: 保存磁盘地址;
    • 未分配: 无有效映射;
  • 翻译: 内存管理单元 (MMU) 查询页表, 完成虚拟地址到物理地址的翻译;
  • 保护: 页表项同时记录访问权限, 实现内存保护功能;

页表

页命中和缺页有什么区别?​

  • 页命中: 目标页已缓存在物理内存, 翻译流程直接完成;
  • 缺页: 目标页不在物理内存, 触发缺页异常, 由内核把页从磁盘调入内存后重新执行该指令;