2018-2019-1 20165306 《信息安全系统设计基础》第十一周学习总结
9.1物理和虚拟寻址
- CPU访问内存的最自然的方式就是使用物理地址,这种方式成为物理寻址。
- 使用虚拟寻址时,CPU通过生成一个虚拟地址(VA)来访问主存,这个虚拟地址在被送到存储器之前先转换成适当的物理地址。将一个虚拟地址转换为物理地址的任务叫做地址翻译。
9.2地址空间
-
地址空间是一个非负整数地址的有序集合:{0,1,2,……}
-
虚拟地址空间:在一个带虚拟内存的系统中,CPU从一个有 N=2^n 个地址的地址空间中生成虚拟地址,这个地址空间成为称为虚拟地址空间:{0,1,2,……,N-1} 。
-
物理地址空间:对应于系统中的物理存储器的M个字节:{0,1,2,……,M-1} 。
9.3虚拟存储器作为缓存的工具
-
VM系统将虚拟内存分割为虚拟页,每个虚拟页大小为P=2^p字节。
-
物理存储被分割为物理页,大小也为P字节。物理页也被称为页帧。
-
在任意时刻,虚拟页面的集合都被分为三个不相交的子集:
- 未分配的:VM系统还没分配(创建)的页,不占用任何磁盘空间。
- 缓存的:当前已缓存在物理存储器中的已分配页。
- 未缓存的:未缓存在物理存储器中的已分配页。 -
页表
- 如果设置了有效位:地址字段表示DRAM中相应的物理页的起始位置,这个物理页中缓存了该虚拟页。 - 如果没有设置有效位:一个空地址表示该虚拟页未被分配,否则这个地址指向该虚拟页在磁盘上的起始位置。
- 缺页:在虚拟内存的习惯说法中,DRAM缓存不命中成为缺页。
9.4虚拟存储器作为存储器管理的工具
- 按需页面调度和独立的虚拟地址空间的结合,对系统中内存使用和管理造成了深远理解。VM简化了链接和加载、代码和数据共享,以及应用程序的内存分配。
- 简化链接:独立的地址空间允许每个进程的存储器映像使用相同的基本格式,而不管代码和数据实际存放在物理存储器的何处。
- 简化加载:虚拟存储器使得容易想存储器中加载可执行文件和共享文件对象。
- 简化共享:独立地址空间为操作系统提供了一个管理用户进程和操作系统自身之间共享的一致机制。
有一些情况中,还需要进程来共享代码和数据:
- 简化存储器分配:虚拟存储器为向用户进程提供一个简单的分配额外存储器的机制。
9.5虚拟内存作为内存保护的工具
9.6地址翻译
页面命中时,CPU硬件执行的步骤:
- 第一步:处理器生成一个虚拟地址,传给MMU
- 第二步:MMU生成PTE地址,并从高速缓存/主存请求得到它
- 第三步:高速缓存/主存向MMU返回PTE
- 第四步:MMU构造物理地址,并把它传给高速缓存/主存
- 第五步:高速缓存/主存返回所请求的数据给处理器。
处理缺页时,CPU硬件执行步骤:
- 第一步:处理器生成一个虚拟地址,传给MMU
- 第二步:MMU生成PTE地址,并从高速缓存/主存请求得到它
- 第三步:高速缓存/主存向MMU返回PTE
- 第四步:PTE中有效位为0,MMU触发缺页异常,传递CPU中的控制到操作系统内核中的缺页异常处理程序
- 第五步:缺页处理程序确定出物理内存中的牺牲页,如果这个页面已经被修改了,则把它换出到磁盘。
- 第六步:缺页处理程序页面调入新的页面,并更新内存中的PTE。
- 第七步:缺页处理程序返回到原来的进程,再次执行导致缺页的指令。