虚拟存储器
定义:
对主存的抽象机制,是硬件异常、硬件地址翻译、主存、磁盘文件和内核软件的完美交互。
功能:
1. 将主存看成是一个存储在磁盘上的地址空间的高速缓存,在内存中只保存活动区域,并根据需要在磁盘和内存之间来回传送数据。
2. 为进程提供了一致的地址空间,从而简化了存储器管理。
3. 保护了每个进程的地址空间不被其他进程所破坏。
9.1 物理和虚拟地址
CPU通过生成一个虚拟地址(Virtual address,VA)来访问主存。将虚拟地址转换为物理地址叫做地址翻译(address translation)。地址翻译也需要CPU硬件和操作系统之间的紧密结合。
CPU芯片上有叫做存储器管理单元(Memory Management Unit,MMU)的专用硬件。利用存储在主存中的查询表来动态翻译虚拟地址。 查询表由操作系统管理。
9.2 地址空间
9.3 虚拟存储器作为缓存的工具
概念上而言,虚拟存储器(VM)被组织为一个存放在磁盘上的N个连续字节大小的单元组成的数组。每个字节都有一个唯一的虚拟地址,这个唯一的虚拟地址作为到数组的索引。磁盘上数组的内容被缓存到主存中。VM系统通过将虚拟存储器分割为称为虚拟页的大小固定的块来处理磁盘和主存信息交互问题。
任何时候,虚拟页的集合都被分为3个不相交的子集。
1、[未分配的] VM系统还未分配(或者创建)的页。未分配的块没有任何数据与之相关联。不占用磁盘空间
2、[缓存的] 当前缓存在物理存储器的已分配页。
3、[未缓存的] 没有缓存在物理页面存储器中的已分配页。
9.3.2 页表
9.4 虚拟存储器作为存储器管理的工具
操作系统为每个进程提供一个独立的页表,VM简化了链接和加载,代码和数据共享,以及应用程序的存储器分配。
1.简化链接
独立的空间地址意味着每个进程的存储器映像使用相同的格式。文本节总是从0x08048000