深入理解计算机系统-第九章:虚拟内存(上)
早期的计算机系统直接通过物理地址在内存中寻找到对应数据。
现代处理器使用虚拟寻址的形式,CPU通过虚拟地址来访问主存,这个虚拟地址会被先转换成适当的物理地址。地址的翻译是CPU硬件和操作系统合作完成的。
VM系统将虚拟内存分割成虚拟页,对应的物理内存分割为物理页。
虚拟页面的集合分为下列三个不相交子集
- 未分配页
- 已经缓存在物理内存的页的页
- 已经分配但是还没有缓存在物理内存的页
通过虚拟内存寻址
我们需要一个方法来判定一个虚拟页是否被缓存在某个地方。如果没有命中,我们需要在物理内存中置换一个页,将需要的页换进。
我们需要使用一个叫做页表的数据结构,页表吧虚拟页映射到物理页,操作系统则维护页表内容,以及置换页。页表的结构如下:
有效位为1则表示,对应的页已经在物理内存中缓存,为0则表示,暂时没有对应的物理缓存。
同时我们还需要一种方法通过虚拟内存找到对应页表,也就是地址翻译。在虚拟地址中会记录着虚拟页号和偏移量