2017-2018-1 20155315 《信息安全系统设计基础》第11周学习总结
2017-2018-1 20155315 《信息安全系统设计基础》第11周学习总结
教材学习内容总结
本周我学习的是第9章
物理和虚拟寻址
- 虚拟存储器
- 虚拟存储器是中心的:它是硬件异常、硬件地址翻译、主存、磁盘文件和内核软件的交互中心;
- 虚拟存储器是强大的:它可以创建和销毁存储器片、可以映射存储器片映射到磁盘某个部分等等;
- 虚拟存储器若操作不当则十分危险。
- 物理地址
- 计算机系统的主存被组织成一个由M个连续的字节大小的单元组成的数组,每字节都有一个唯一的物理地址PA。
- 根据物理地址寻址的是物理寻址。
- 虚拟存储器被组织为一个由存放在磁盘上的N个连续的字节大小的单元组成的数组。
- 使用虚拟寻址时,CPU通过生成一个虚拟地址VA来访问主存,这个虚拟地址在被送到存储器之前先转换成适当的物理地址(这个过程叫做地址翻译,相关硬件为存储器管理单元MMU)
地址空间
- 地址空间是一个非负整数地址的有序集合:
- 线性地址空间:地址空间中的整数是连续的。
- 虚拟地址空间:CPU从一个有 N=2^n 个地址的地址空间中生成虚拟地址,这个地址空间成为称为虚拟地址空间。
- 地址空间的大小由表示最大地址所需要的位数来描述。N=2^n:n位地址空间
- 主存中的每个字节都有一个选自虚拟地址空间的虚拟地址和一个选自物理地址空间的物理地址。
虚拟存储器
虚拟存储器作为缓存的工具
- 虚拟存储器——虚拟页VP,每个虚拟页大小为P=2^p字节
- 物理存储器——物理页PP,也叫页帧,大小也为P字节。
- 任意时刻,虚拟页面的集合都被分为三个不相交的子集:
- 未分配的:VM系统还没分配/创建的页,不占用任何磁盘空间。
- 缓存的:当前缓存在物理存储器中的已分配页
- 未缓存的:没有缓存在物理存储器中的已分配页
页表
- 页表是一个数据结构,存放在物理存储器中,将虚拟页映射到物理页
- 页表就是一个页表条目PTE的数组,组成为有效位+n位地址字段
- 如果设置了有效位:地址字段表示DRAM中相应的物理页的起始位置,这个物理页中缓存了该虚拟页
- 如果没有设置有效位:
- 空地址:表示该虚拟页未被分配
- 不是空地址:这个地址指向该虚拟页在磁盘上的起始位置。
缺页
- 缺页:就是指DRAM缓存不命中。
- 缺页异常:会调用内核中的缺页异常处理程序,选择一个牺牲页。
- 页:虚拟存储器的习惯说法,就是块
- 交换=页面调度:磁盘和存储器之间传送页的活动
- 按需页面调度:直到发生不命中时才换入页面的策略,所有现代系统都使用这个。
虚拟存储器作为存储器管理的工具
- 操作系统为每个进程提供了一个独立的页表,也就是一个独立的虚拟地址空间。
- 多个虚拟页面可以映射到同一个共享物理页面上。
- 存储器映射:将一组连续的虚拟页映射到任意一个文件中的任意位置的表示法。
- 按需页面调度和独立的虚拟地址空间的结合简化了链接和加载、代码和数据共享,以及应用程序的存储器分配。
- 简化链接:独立的地址空间允许每个进程的存储器映像使用相同的基本格式,而不管代码和数据实际存放在物理存储器的何处。
- 简化加载:虚拟存储器使得容易想存储器中加载可执行文件和共享文件对象。
- 简化共享:独立地址空间为操作系统提供了一个管理用户进程和操作系统自身之间共享的一致机制。
- 简化存储器分配:虚拟存储器为向用户进程提供一个简单的分配额外存储器的机制。
虚拟存储器作为存储器保护的工具
- 通过在PTE上添加一些额外的许可来控制对一个虚拟页面的内容访问。
- PTE的三个许可位:
许可位 | 作用 |
---|---|
SUP | 表示进程是否必须运行在内核模式下才能访问该页 |
READ | 读权限 |
WRITE | 写权限 |
地址翻译
- 地址翻译:一个N元素的虚拟地址空间(VAS)中的元素和一个M元素的物理地址空间(PAS)之间的映射。
MAP | 意义 |
---|---|
MAP | VAS → PAS ∪ ∅ |
A' | 如果虚拟地址A处的数据在PAS的物理地址A'处 |
∅ | 如果虚拟地址A处的数据不在物理存储器中 |
当页面命中时
- 处理器生成虚拟地址,传给MMU
- MMU生成PTE地址,并从高速缓存/主存请求得到他
- 高速缓存/主存向MMU返回PTE
- MMU构造物理地址,并把它传给高速缓存/主存
- 高速缓存/主存返回所请求的数据给处理器。
处理缺页时,CPU硬件执行步骤:
- 处理器生成虚拟地址,传给MMU
- MMU生成PTE地址,并从高速缓存/主存请求得到他
- 高速缓存/主存向MMU返回PTE
- PTE中有效位为0,触发缺页异常
- 确定牺牲页
- 调入新页面,更新PTE
- 返回原来的进程,再次执行导致缺页的指令,会命中
利用TLB加速地址翻译
TLB:翻译后备缓冲器,是一个小的、虚拟存储的缓存,其中每一行都保存着一个由单个PTE组成的块
- 步骤
- CPU产生一个虚拟地址
- MMU从TLB中取出相应的PTE
- MMU将这个虚拟地址翻译成一个物理地址,并且将它发送到高速缓存/主存
- 高速缓存/主存将所请求的数据字返回给CPU
- 多级页表:采用层次结构,用来压缩页表
- 如果一级页表中的一个PTE是空的,那么相应的二级页表就根本不会存在;
- 只有一级页表才需要总是在主存中,虚拟存储器系统可以在需要时创建、页面调入或调出二级页表,只有最经常使用的二级页表才缓存在主存中。
教材学习中的问题和解决过程
问题1:
虚拟内存和物理内存有什么对应关系吗?虚拟地址和物理地址指的都是数据的首地址吗?
解决1:
虚拟内存是物理物理内存的补充,在内存被塞满的时候,会将那些暂时不用的数据放到硬盘中,而这些数据所占的空间就是虚拟内存。
代码托管
(statistics.sh脚本的运行结果截图)
结对及互评
暂无
其他(感悟、思考等,可选)
这一章的内容很多,吸收得不够,还要继续学习。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 5/5 | 1/1 | 25/25 | |
第二周 | 236/241 | 3/4 | 30/55 | |
第三周 | 169/410 | 2/6 | 30/85 | |
第四周 | 169/410 | 2/8 | 50/135 | |
第五周 | 1177/1587 | 2/10 | 30/165 | |
第六周 | 1826/3413 | 2/12 | 30/195 | |
第七周 | 977/4390 | 3/15 | 30/225 | |
第八周 | 0/4390 | 2/17 | 30/255 | |
第九周 | 0/4390 | 2/19 | 30/285 | |
第十周 | 0/4390 | 0/19 | 30/315 | |
第十一周 | 45/4435 | 2/21 | 25/335 |
- 计划学习时间:30小时
- 实际学习时间:25小时
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)