第九章、虚拟存储器——9.1,9.3,9.4,9.5
主要只是点为虚拟存储器的作用.
9.1 物理和虚拟寻址
计算机系统的主存被组织成一个由M个连续的字节大小的单元组成的数组。每个自己都有一个唯一的物理地址。CPU访问存储器最自然的方式就是使用物理地址,这种方式成为物理寻址。
使用虚拟寻址时,CPU通过生成一个虚拟地址来访问主存,这个虚拟地址在被送到存储器之前先转换成对应的物理地址。将一个虚拟地址转换成物理地址的任务叫做地址翻译。CPU芯片上叫做存储器管理单元(MMU)利用存放在主存中的查询表来翻译虚拟地址。
9.3 虚拟存储器作为缓存的工具
虚拟存储器被组织为一个由存放在磁盘上的N个连续的字节大小的单元组成的数组,所以说虚拟存储器作为缓存的工具是说磁盘与主存之间的(区别于高速存储器cache)。
虚拟存储器系统将虚拟存储器分割为虚拟页,物理存储器也被分割为物理页。
虚拟页通过页表来与物理页相对应。
9.3.2 页表:
同任何缓存一样,虚拟存储器系统必须有某种方法来判定一个虚拟页是否存放在主存的某个地方。如果是,系统还必须确定这个虚拟页存放在哪个物理页中。如果不命中,系统必须判断这个虚拟页存放在磁盘的哪个位置,在物理存储器中选择一个牺牲页,并将虚拟页从磁盘拷贝到主存中,替换这个牺牲页。
如图说明页表的基本组织结构,页表就是一个页表条目(PTE)的数组。虚拟地址空间中的每个页表中一个固定偏移处都有一个PTE。假设每个PTE是由一个有效位表明该虚拟页当前是否被缓存在主存中。
当CPU读取虚拟存储器中的内容时会出现两种情况:页命中,缺页。
补充:大部分的页表位于高速缓存中,以加快从虚拟地址到物理地址的转换。
9.3.3 页命中
地址翻译硬件根据有效位知道虚拟页是否缓存在主存中,如果在,则页命中,直接构造出内容的物理地址。
9.3.4 缺页
如果判断未被缓存在主存中,则出发缺页异常。调用内核中的缺页异常处理程序,该程序选择一个牺牲页,将需要内容拷贝到牺牲页中,然后重新启动导致缺页的指令。
9.4 虚拟存储器作为存储器管理的工具
主要考虑为:1、操作系统通过将不同进程中适当的虚拟页面映射到相同的物理页面,从而安排多个进程共享这部分内核代码(多个虚拟页面可以映射到同一个共享物理页面中)。
2、虚拟内存还保证了内存地址的一致性,从而也满足了方便管理的原则。
9.5 虚拟存储器作为存储器的保护工具
通过在PTE上设置控制许可位(如只读位)来控制进程对此内存的读写权利。
【参考】
[1] 《深入理解计算机系统》
欢迎转载,转载请注明出处:wenmingxing 你好呀CSAPP