页面置换算法总结
先进先出法(FIFO)
算法描述:由于认为最早调入内存的页不再被使用的可能性要大于刚调入内存的页,因此,先进先出法总是淘汰在内存中停留时间最长的一页,即先进入内存的页,先被换出。先进先出法把一个进程所有在内存中的页按进入内存的次序排队,淘汰页面总是在队首进行。如果一个页面刚被放入内存,就把它插在队尾。
【例1】教材第4章课后习题。
考虑下述页面走向:1,2,3,4,2,1,5,6,2,1,2,3,7,6,3,2,1,2,3,6。当内存块数量分别为3,5时,试问先进先出置换算法(FIFO)的缺页次数是多少?(注意,所有内存块最初都是空的,凡第一次用到的页面都产生一次缺页。)
解:当内存块数量分别为3时,FIFO算法的执行过程如下图所示。
页面 |
1 |
2 |
3 |
4 |
2 |
1 |
5 |
6 |
2 |
1 |
2 |
3 |
7 |
6 |
3 |
2 |
1 |
2 |
3 |
6 |
块1 |
1 |
1 |
1 |
4 |
|
4 |
4 |
6 |
6 |
6 |
|
3 |
3 |
3 |
|
2 |
2 |
|
2 |
6 |
块2 |
|
2 |
2 |
2 |
|
1 |
1 |
1 |
2 |
2 |
|
2 |
7 |
7 |
|
7 |
1 |
|
1 |
1 |
块3 |
|
|
3 |
3 |
|
3 |
5 |
5 |
5 |
1 |
|
1 |
1 |
6 |
|
6 |
6 |
|
3 |
3 |
缺页 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
打叉的表示发生了缺页,共缺页16次。
提示:当FIFO算法执行到蓝色的4号页面时,这时内存中有三个页面,分别是1,2,3。按照FIFO算法,在内存中停留时间最长的页面被淘汰。三个页面在内存中的停留时间用绿色区域标记出来了,可见,1号页面是停留时间最长的,因此要淘汰1号页面。
最近最少使用置换法(LRU)
算法描述:最近最少使用置换法(LRU)是选择在最近一段时间里最久没有使用过的页面予以淘汰。借鉴FIFO算法和OPT算法,以“最近的过去”作为“不久将来”的近似。
【例3】教材第4章课后习题。
考虑下述页面走向:1,2,3,4,2,1,5,6,2,1,2,3,7,6,3,2,1,2,3,6。当内存块数量分别为3,5时,试问最近最少使用置换法(LRU)的缺页次数是多少?(注意,所有内存块最初都是空的,凡第一次用到的页面都产生一次缺页。)
解:当内存块数量分别为3时,LRU算法的执行过程如下图所示。
页面 |
1 |
2 |
3 |
4 |
2 |
1 |
5 |
6 |
2 |
1 |
2 |
3 |
7 |
6 |
3 |
2 |
1 |
2 |
3 |
6 |
块1 |
1 |
1 |
1 |
4 |
|
4 |
5 |
5 |
5 |
1 |
|
1 |
7 |
7 |
|
2 |
2 |
|
|
2 |
块2 |
|
2 |
2 |
2 |
|
2 |
2 |
6 |
6 |
6 |
|
3 |
3 |
3 |
|
3 |
3 |
|
|
3 |
块3 |
|
|
3 |
3 |
|
1 |
1 |
1 |
2 |
2 |
|
2 |
2 |
6 |
|
6 |
1 |
|
|
1 |
缺页 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
打叉的表示发生了缺页,共缺页15次。
【参考】
http://www.cnblogs.com/dolphin0520/p/3749259.html