跳到主要内容

地址翻译

地址空间、物理寻址和虚拟寻址分别是什么?​

  • 地址空间: 非负整数地址的有序集合, 大小由机器字长决定;
  • 物理寻址: 内存是连续字节组成的数组, 每个字节有唯一的物理地址, CPU 直接用物理地址访问内存;
  • 虚拟寻址: CPU 生成虚拟地址, 由 CPU 上的内存管理单元 (MMU) 翻译成物理地址后再访问;
  • MMU: 用查询表完成虚拟地址与物理地址的映射;

页命中时地址翻译经历哪些步骤?​

  1. CPU 生成虚拟地址并交给 MMU;
  2. MMU 生成 PTE 地址并交给内存;
  3. 内存返回该 PTE 的内容;
  4. MMU 据此构造物理地址并交给内存;
  5. 内存把数据返回给 CPU;

缺页时地址翻译经历哪些步骤?​

  1. CPU 生成虚拟地址并交给 MMU;
  2. MMU 生成 PTE 地址并交给内存;
  3. 内存返回该 PTE 的内容;
  4. MMU 发现页不在内存, 触发缺页异常处理程序, 把缺页调入内存;
  5. CPU 重新发送刚才的虚拟地址, 转入页命中流程;

多级页表解决什么问题?​

  • 问题: 单级页表要为整个虚拟地址空间维护映射, 占用空间过大;
  • 方案: 用多级页表压缩, 上级页表的表项负责映射下级页表;
  • 收益: 未使用的地址区间不必分配下级页表;