深入理解计算机系统——地址翻译
1、地址翻译符号
此处 VPO = PPO
形式上来说,地址翻译是一个N元素的虚拟地址空间(VAS)中的元素和一个M元素的物理地址空间(PAS)中元素之间的映射,
使用页表的地址翻译
MMU(Memory Management Unit 内存管理单元)利用页表实现这种映射
2、页命中or缺页
1⃣️页命中时,CPU硬件执行的步骤
- 处理器生成一个虚拟地址,并把它传送给MMU
- MMU生成PTE(Page Table Entry 页表条目)地址,并从高速缓存/主存请求得到它
- 高速缓存/主存向MMU返回PTE
- MMU构造物理地址,并把它传送给高速缓存/主存
- 高速缓存/主存返回所请求的数据字给处理器
2⃣️缺页时,硬件和操作系统内核协作完成
- 处理器生成一个虚拟地址,并把它传送给MMU
- MMU生成PTE(Page Table Entry 页表条目)地址,并从高速缓存/主存请求得到它
- 高速缓存/主存向MMU返回PTE
- PTE中的有效位是零,所以MMU触发了一次异常,传递CPU中的控制到操作系统内核中的缺页异常处理程序
- 缺页处理程序确定出物理内存中的牺牲页,如果这个页面已经被修改了,则把它换出到磁盘
- 缺页处理程序页面调入新的页面,并更新内存中的PTE
3、端到端的地址翻译
1⃣️做出如下假设:
2⃣️给出表
- CPU执行第一条指令——读地址 0x03d4(十六进制)
- 需要将地址转换成二进制
3⃣️虚拟地址有13位,根据所给地址,从最后一位开始填入
- 检查TLB从VPN中抽取TLB索引(0x03)和TLB标记(0x3)
- 组0x3的第二条目中有效匹配,所以命中
- 然后将缓存的PPN(0x0D)返回给MMU
- 如果TLB不命中,MMU就需要从主存中取出相应的PTE
4⃣️物理地址有12位
- 通过将来自PTE的PPN(0x0D)和来自虚拟地址的VPO(0x14)连接起来,形成物理地址(0x354)
- 缓存偏移 CO(0x0)
- 缓存组索引 CI(0x5)
- 缓存标记 CT(0x0D)
- 因为组 0x5 中的标记与CT相匹配,所以缓存检测到一个命中,读出在偏移量CO处的数据字节(0x36),并将它返回给MMU,随后MMU把它传递回CPU
- 翻译过程的其他路径也是可能的
- 如果TLB不命中,那么MMU必须从页表中的PTE中取出PPN
- 如果得到的PTE是无效的,那么就产生一个缺页,内核必须调入合适的页面,重新运行这条加载指令
- 另一种可能是PTE是有效的,但是所需要的存块在缓存中不命中
深入理解计算机系统——地址翻译相关推荐
- 深入理解计算机系统(CSAPP)含lab详解 完结
文章目录 深入理解计算机操作系统-第一章 1.1 信息就是位 + 上下文 1.2 程序被其他程序翻译成不同的格式 1.3 了解编译系统如何工作是大有益处的 1.4 处理器读并解释储存在内存中的指令 1 ...
- 【硬核】MMU是如何完成地址翻译的
文章目录 1. 什么是虚拟内存? 2. 虚拟内存的作用 3. 虚拟内存与物理内存 3.1 CPU存取数据 3.2 物理地址常用术语 3.3 虚拟地址常用术语 3.4 页表常用术语 3.5 页命中/缺页 ...
- 深入了解MMU是如何完成地址翻译的?
虚拟内存是现代操作系统中最伟大的发明之一.它为每个进程提供了一个一致的.私有的地址空间,让每个进程产生了一种自己在独享主存的错觉. 为了讲清楚MMU是如何一步一步完成地址翻译,取出数据的,本篇文章在前 ...
- 深入理解地址翻译 CSAPP
地址翻译, 用自己的话说一遍, 然后自己在draw.io画图理解. 术语 页表就是一个 页表条目(Page Table Entry PTE)的数组,每一项(每个PTE)是[有效位,物理地址]. 我们 ...
- 《深入理解计算机系统-程序结构》读书笔记
1.计算机系统漫游 计算机系统是由硬件和系统软件组成的,他们共同工作来运行应用程序.在<深入理解计算机系统>一书中将会学到很多实践的技巧.例如:了解编译器是如何实现过程调用的.避免缓冲区溢 ...
- 《深入理解计算机系统》第七章读书笔记
<深入理解计算机系统>第七章读书笔记 第七章:连接 连接 1.连接:将各种代码和数据部分收集起来并组合成为一个单一文件的过程.这个文件可被加载或拷贝到存储器并执行. 2.连接可以执行于编译 ...
- Linux虚拟内存与线性地址翻译
1. 虚拟内存 对于操作系统的使用者而言,内存就像是一个一排排按照从0到n被编好数字的收纳柜,每个柜子可以存放8个bit,也就是一个字节,我们将需要存放的信息切成若干个字节,放到连续的柜子中.以后我们 ...
- 《深入理解计算机系统》第七章 链接
<深入理解计算机系统>第七章 链接 链接是将各种代码和数据部分收集起来并组合成为一个单一文件的过程,这个文件可被加载(货被拷贝)到存储器并执行. 链接的时机 编译时,也就是在源代码被翻译成 ...
- HIT深入理解计算机系统大作业
计算机系统 大作业 题 目 程序人生-Hello's P2P 专 业 计算机 学 号 120L021909 班 级 2003006 学 生 邢俊文 指 导 ...
- 《深入理解计算机系统》之浅析程序性能优化
此文已由作者余笑天授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 本文主要是基于我之前学习<深入理解计算机系统>(以下简称CSAPP)这本书第五章优化程序性能内容 ...
最新文章
- noj 邮票分你一半z的生日
- 如何用Markdown轻松排版知乎专栏文章?
- 【C++深度剖析教程8】C++的操作符重载的概念
- android 获取gpio电平值_使用GPIO实现SPI协议操作OLED
- 框架源码专题:Spring声明式事务Transactional的原理
- Python列表模拟页面调度LRU算法(京东2016笔试题)
- java日期多次使用修改,数据有问题
- 信号与线性系统分析第4版吴大正课后习题答案
- 灵悟礼品网上专卖店——分析类似项目的布局和商品的分类模式
- 自动整理html书签,技巧:使用 Excel 快速整理重复书签丨Matrix 精选
- TP5中的No input file specified
- 【LabVIEW】基于LabVIEW的俄罗斯方块小游戏
- Chi-Plots和Kendall Plots
- 程序员的人生——应届生北漂的第三天
- ASCII码表及键盘码表。
- Kindle资源-史上最全60GB的Kindle电子书资源网盘打包下载
- JAVASE详解(上篇)
- vijos 、洛谷 —— 珠心算测验(java实现)
- ORACLE 取唯一数据
- php基础介绍,PHP基本语法的介绍