操作系统

85 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第9天,点击查看活动详情

页面置换算法

·功能,当缺页中断发生,需要调入新的页而而内存已满时,选择内存当中哪个物理页面彼置换。

·目标:尽可能地减少页面的换进换出次数(即缺页中断的次数)。具体来说,把未来不再使用的或短期内较少使用的页而换出,通常只能在局部性原理指导下依据过去的统计数据来进行预测

最佳置换算法(OPT)

.基本思路:当一个缺页中断发生时,对于保存在内存当中的每一个逻辑页面,计算在它的下一次访问之前,还需等待多长时间,从中选择等待时间最长的那个,作为被置换的页面。

.这只是一种理想情况,在实际系统中是无法实现的,因为操作系统无从知道每一个页面要等待多长时间以后才会再次被访问。

最近最久未使用算法 (Least Recently Used:LRU);

.基本思路:当一个缺页中断发生时,选择最久未使用的那个页面,并淘汰之。

·它是对最佳页面置换算法的一个近似,其依据是程序的局部性原理,即在最近一小段时间(最近几条指令)内,如果某些页面被频繁地访问,那么在将来的一小段时间内,它们还可能会再一次被频繁地访问。反过来说,如果在过去某些页面长时间未被访问,那么在将来它们还可能会长时间地得不到访问。

LRU算法需要记录各个页面使用时间的先后关系,硬件开销比较大。(为了确定页面的使用情况<即多长时间使用>)

·每个页面设立移位寄存器:被访问时左边最高位置1,定期右移并且最高位补0,于是寄存器数值最小的是最近最久未使用页面。 (为了能快速找到最近最久未使用的页)

·一个特殊的栈:把被访问的页面移到栈顶,所以栈底的是最近最久未使用页面。

设置一个活动页面栈,当访问某页时,将此页号压入栈顶,然后,考察栈内是否有与此页面相同的页号,若有则抽出。当需要淘汰一个页面时,总是选择栈底的页面,它就是最近最久未使用的。