操作系统中的页面置换算法
1.最佳置换算法(OPT)
这是理想算法,不可能实现的。
该算法是指,其所选择的淘汰页面,将是以后不再使用,或者未来最长时间内不再被访问的页面。这样来保证最低的缺页率。
例子: 假定系统为某进程分配了三个物理块,并考虑有以下的页面号引用串:
7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1
(1)进程运行时,先将7,0,1 三个页面装入内存。
(2)当进程要访问页面2 时,将会产生缺页中断。此时OS根据最佳置换算法,将选择页面7 予以淘汰。这是因为页面0 将作为第5 个被访问的页面,页面1 是第14 个被访问的页面,而页面7 则要在第18 次页面访问时才需调入。
(3)下次访问页面0时,因它已在内存而不必产生缺页中断。
(4)当进程访问页面3时,又将引起页面1 被淘汰;因为,它在现有的1,2,0 三个页面中,将是以后最晚才被访问的。
依次类推,按照未来访问的结果来淘汰选择当前页面……
下图所示出了采用最佳置换算法时的置换图。由图可看出,采用最佳置换算法发生了6 次页面置换。
2.先进先出置换算法(FIFO)
置换最先调入内存的页面,即置换在内存中驻留时间最久的页面。
按照进入内存的先后次序排列成队列,从队尾进入,从队首删除。
但是该算法会淘汰经常访问的页面,不适应进程实际运行的规律,目前已经很少使用。
例子: 假定系统为某进程分配了三个物理块,并考虑有以下的页面号引用串:
7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1
(1)将 7 0 1 放到内存
(2)7淘汰,变成 0 1 2
(3)0在内存中,再次访问,变成最新的,所有为 1 2 0
(4)3进来,变成 2 0 3
(5)依次类推……
3.最近最久未使用算法(LRU)
是对最优置换算法的近似,以过去推未来。
根据程序的局部性原理,如果最近一段时间内某些页面被频繁访问,那么在将来还可能被频繁访问。反之,未被访问的将来也不会被访问
例子: 假定系统为某进程分配了三个物理块,并考虑有以下的页面号引用串:
7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1
7 0 1 0 1 2 1 2 0 2 0 3 2 3 0 3 0 4 0 4 2 4 2 3 2 3 0 2 0 3 0 3 2 3 2 1 3 1 2 1 2 0 2 0 1
0 1 7 1 7 0 7 0 1