9、虚拟存储管理
程序局部性原理:时间局限性和空间局限性。
虚拟页式存储管理:在页式管理的基础上,增加了请求调页和页面置换的功能。
基本思路:当一个用户程序需要调入内存去运行时,不是将这个程序的所有页面都装入内存,而是只装载部分的页面,就可以启动这个程序运行。在运行过程中,如果发现要执行的指令或者访问的数据不在内存当中,就向系统发出缺页中断请求,然后系统在处理这个中断请求时,就会将保存在外存中的相应页面调入内存,从而使该程序能继续运行。
在虚拟页式存储管理中,页表包含:逻辑页面号、物理页面号、驻留位、保护位、修改位和访问位。
常用的页面置换算法:
A. 最优页面置换算法:理想化算法。
B. 最近最久未使用算法:链表法和栈方法。寻找长时间没有被访问的页面。
C. 最不常用算法:每个页面设置一个访问计数器。
D. 先进先出算法:性能比较差。
E. 时钟页面置换算法:把页面组成环形链表,类似时钟面。
一般来说,当一个任务刚刚启动的时候,它会不断去访问一些新的页面,然后逐步建立一个比较稳定的工作集。工作集是指当前任务正在使用的逻辑页面的集合。如果分配给一个任务的物理页面数太少,不能包含整个的工作集,任务将会造成很多缺页中断,需要频繁地进行页面置换,这种现象称为“抖动”。