本节所使用的符号:

地址翻译

地址翻译是一个N元素的虚拟地址空间(VAS)中的元素和一个M元素的物理地址空间(PAS)中元素之间的映射

映射实现:
MMU利用页表来实现这种映射。CPU中的一个控制寄存器,页表基址寄存器PTBR指向当前页表。n位的虚拟地址包含两个部分:一个p位的虚拟页面偏移(VPO)和一个(n-p)位的虚拟页号(VPN)。MMU利用VPN来选择适当的页表条目(PTE)。将页表条目中的物理页号(PPN)和虚拟地址中的VPO串联起来,就得到相应的物理地址。因为物理和虚拟页面都是P字节的,所以物理页面偏移(PPO)和VPO是相同的。

使用页表的地址翻译:

页面命中时CPU硬件执行的步骤:

  1. 处理器生成一个虚拟地址,传送给MMU
  2. MMU生成PTE地址,并向高速缓存/主存请求得到它
  3. 高速缓存/主存向MMU返回PTE
  4. MMU由PTE中的PPN和虚拟地址中的VPO构造出物理地址,传送给高速缓存/主存
  5. 高速缓存/主存返回所请求的数据字给处理器。

缺页时的步骤:

  1. 这一步等同于命中时的1-3
  2. PTE中的有效位为0,所以MMU触发异常,传递CPU中的控制到操作系统内核中的缺页异常处理程序
  3. 缺页处理程序确定出物理存储器中的牺牲页,如果这个页面已经被修改了,则把它换出到磁盘。
  4. 缺页处理程序调入新的页面到原牺牲页面,并更新存储器中的PTE
  5. 缺页处理程序返回到原来的进程,再次执行导致缺页的指令。CPU将引起缺页的虚拟地址重新发送给MMU。因为虚拟页面现在缓存在物理存储器中,所以就会命中。

最新文章

  1. java web学习总结(二十一) -------------------模拟Servlet3.0使用注解的方式配置Servlet
  2. python学习 小游戏
  3. IntelliTrace简介
  4. 补丁vs错误(codevs 2218 错误答案)
  5. 首发 手把手教你制作 Windows8 应用程序内部的 hubtile (动态瓷砖控件) MetroStyle(转)
  6. 解析 MACH_O 文件
  7. LaTeX新人教程,30分钟从完全陌生到基本入门
  8. 深入.Net字符串类型
  9. android stuido 在线安装svn插件,添加版本库无响应
  10. Matlab命令eig
  11. python中将两个list合并为字典
  12. 多元高斯分布(The Multivariate normal distribution)
  13. 站点的rel="alternate"属性
  14. JS判断当前设备类型
  15. 用记事本编写helloworld文件但是javac时报错
  16. Django-Signals信号量
  17. ssm学习的第一个demo---crm(3)
  18. 50.IOS上传APP问题
  19. 格式化json日期'/Date(-62135596800000)/'
  20. K8s-Demo实现

热门文章

  1. 测试那些事儿—SQL Server服务器角色和数据库用户角色
  2. 深入学习Motan系列(五)—— 序列化与编码协议
  3. QT4.8.6-VS2010开发环境配置
  4. PythonStudy——函数对象 Function object
  5. Amundsen — Lyft’s data discovery & metadata engine
  6. java_字段声明
  7. Keepalived+LVS实现高可用负载均衡双主模式
  8. Netty学习记录
  9. 【算法和数据结构】_16_小算法_IntToStr: 将整型数据转换为字符串
  10. 异步启动solidworks