2)页命中
3)缺页
DRAM缓存不命中称为缺页(page fault)。
VM page fault (before). The reference to a word in VP 3 is a miss and triggers a
page fault.
VM page fault (after). The page fault handler selects VP 4 as the victim and
replaces it with a copy of VP 3 from disk. After the page fault handler restarts the
faulting instruction, it will read the word from memory normally, without generating
an exception.
在虚拟存储器的习惯用法中,块被称为页。在磁盘和存储器之间传送页面的活动收做交换(swapping)或者页面调度(paging)。一直等待,直到最后时刻,也就是当有不命中发生时,才换入页面的这种策略被称为换需页面调度(demand paging)。
4)分配页面
Allocating a new virtual page. The kernel allocates VP 5 on disk and points PTE
5 to this new location.
6)利用unix的getrusage函数监测缺页的数量。
6、虚拟存储器作为存储器管理的工具
OS为每个进程提供一个独立的页表,因而也就是一个独立的虚拟地址空间。
How VM provides processes with separate address spaces. The operating maintains a
separate page table for each process in the system.
1)简化链接
每个linux进程都使用如图示格式。
用户栈总是从虚拟地址0xbfffffff向下伸展。程序总是从虚拟地址0x08048000处开始,共享对象总是加载在从虚拟地址0x4000000处开始的区域。
2)简化共享
一般,每个进程都有自己私有的代码,数据,堆,栈区域,是不和其他进程共享页面的。
然而,在一些情况下,还是需要进程来共享代码,数据,如内核代码,C的库函数。OS通过将不同进程中适当的虚拟页面映射到相同的物理页面,从而安排多个进程共享这部分代码的一个拷贝。
3)简化存储器分配
当一个运行在用户进程中的程序要额外堆空间时,OS分配一个适当数字,如k个连续的虚拟地址空间,并且将它们映射到物理存储器中任意位置的k个任意的物理页面(不必要连续,可以是分散地分配)。
4)简化加载
映射一个连续虚拟页面的集合到任意一个文件中的任意一个位置的概念叫做存储器映射(memory mapping)。
7、虚拟存储器作为存储器保护的工具