csapp第九章 虚拟存储器

现代系统提供了一种对主存的抽象概念——虚拟存储器。为了更加有效的管理存储器并且少出错。 虚拟存储器是硬件异常、硬件地址翻译、主持、磁盘文件、内核软件的完美交互。 它
admin

  现代系统提供了一种对主存的抽象概念——虚拟存储器。为了更加有效的管理存储器并且少出错。

  虚拟存储器是硬件异常、硬件地址翻译、主持、磁盘文件、内核软件的完美交互。

  它为每个进程提供了一个大的,一致的,私有的地址空间。

  虚拟存储器提供了三个重要的能力:

  将主存看成是一个存储在磁盘上的地址空间的高速缓存。

  为每个进程提供一致的地址空间。

  保护了每个进程的地址空间不被其他进程破坏。

  理解虚拟存储器的理由:其是中心的、强大的、危险的。

  9.1 物理和虚拟寻址

  计算机系统的主存被组织为一个M个连续字节大小的单元组成的数组,每个字节都有唯一的物理地址。——物理地址是对主存的。

  cpu使用物理地址访问存储器——物理寻址。

  cpu通过生成一个虚拟地址来访问主存——虚拟寻址。——虚拟地址在被送到存储器之前先转换成适当的物理地址。(地址翻译)。

  cpu芯片上的MMU利用存放在主存中的查询表来动态翻译虚拟地址。查询表由操作系统管理。

  9.2 地址空间

  地址空间区分了字节和地址。允许一个字节有多个地址,多个地址中的每一个都来自一个地址空间。

  主存中的每一个字节都有一个选自虚拟地址空间的虚拟地址和一个选自物理地址空间的物理地址。

  9.3 虚拟存储器作为缓存的工具

  物理存储器被分割成物理页,大小P字节。

  虚拟存储器分割成虚拟页,大小P字节。

  虚拟页包含三部分:

  未分配——就是没有和主存中的任何物理页对应,同时,也没有和磁盘上的任何空间对应。

  缓存的——和主存的某一物理页对应了。

  未缓存的——和磁盘上的某一空间对应了。

  系统需要判断几件事:

  一个虚拟页是否放在主存中?

  是,那么这个虚拟页对应的是那个物理页?

  不是,那么这个虚拟页存放在磁盘的那个位置?在物理存储器中选择一个牺牲页,替换之。

  页表将虚拟页映射到物理页。每次MMU翻译虚拟地址到物理地址的时候都会读取页表。

  操作系统负责维护页表的内容,以及在磁盘和DRAM之间来回传送页。

  页表中是一批页表条目PTE,顺序放置,0,1,2····,虚拟页有编号,0,1,2·····,这两个编号是对应的,vp1对应的就是pte1。vp5对应的就是pte5。这两者是操作系统可以安排的,所以可以有这种对应关系。

  一个pte,两个部分,一个是一个标志位,标明是否缓存了。是缓存了,那么第二部分就是主存中的物理页的地址。