《CSAPP》地址翻译
2024-08-27 05:11:26
本节所使用的符号:
地址翻译
地址翻译是一个N元素的虚拟地址空间(VAS)中的元素和一个M元素的物理地址空间(PAS)中元素之间的映射。
映射实现:
MMU利用页表来实现这种映射。CPU中的一个控制寄存器,页表基址寄存器PTBR指向当前页表。n位的虚拟地址包含两个部分:一个p位的虚拟页面偏移(VPO)和一个(n-p)位的虚拟页号(VPN)。MMU利用VPN来选择适当的页表条目(PTE)。将页表条目中的物理页号(PPN)和虚拟地址中的VPO串联起来,就得到相应的物理地址。因为物理和虚拟页面都是P字节的,所以物理页面偏移(PPO)和VPO是相同的。
使用页表的地址翻译:
页面命中时CPU硬件执行的步骤:
- 处理器生成一个虚拟地址,传送给MMU
- MMU生成PTE地址,并向高速缓存/主存请求得到它
- 高速缓存/主存向MMU返回PTE
- MMU由PTE中的PPN和虚拟地址中的VPO构造出物理地址,传送给高速缓存/主存
- 高速缓存/主存返回所请求的数据字给处理器。
缺页时的步骤:
- 这一步等同于命中时的1-3
- PTE中的有效位为0,所以MMU触发异常,传递CPU中的控制到操作系统内核中的缺页异常处理程序
- 缺页处理程序确定出物理存储器中的牺牲页,如果这个页面已经被修改了,则把它换出到磁盘。
- 缺页处理程序调入新的页面到原牺牲页面,并更新存储器中的PTE
- 缺页处理程序返回到原来的进程,再次执行导致缺页的指令。CPU将引起缺页的虚拟地址重新发送给MMU。因为虚拟页面现在缓存在物理存储器中,所以就会命中。
最新文章
- java web学习总结(二十一) -------------------模拟Servlet3.0使用注解的方式配置Servlet
- python学习 小游戏
- IntelliTrace简介
- 补丁vs错误(codevs 2218 错误答案)
- 首发 手把手教你制作 Windows8 应用程序内部的 hubtile (动态瓷砖控件) MetroStyle(转)
- 解析 MACH_O 文件
- LaTeX新人教程,30分钟从完全陌生到基本入门
- 深入.Net字符串类型
- android stuido 在线安装svn插件,添加版本库无响应
- Matlab命令eig
- python中将两个list合并为字典
- 多元高斯分布(The Multivariate normal distribution)
- 站点的rel=";alternate";属性
- JS判断当前设备类型
- 用记事本编写helloworld文件但是javac时报错
- Django-Signals信号量
- ssm学习的第一个demo---crm(3)
- 50.IOS上传APP问题
- 格式化json日期'/Date(-62135596800000)/'
- K8s-Demo实现
热门文章
- 测试那些事儿—SQL Server服务器角色和数据库用户角色
- 深入学习Motan系列(五)—— 序列化与编码协议
- QT4.8.6-VS2010开发环境配置
- PythonStudy——函数对象 Function object
- Amundsen — Lyft’s data discovery &; metadata engine
- java_字段声明
- Keepalived+LVS实现高可用负载均衡双主模式
- Netty学习记录
- 【算法和数据结构】_16_小算法_IntToStr: 将整型数据转换为字符串
- 异步启动solidworks