1.最优页面置换算法
不可能实现。把未来一段时间内最晚才会访问到的页面置换出去。
2.最近未使用(NRU)
OS为每一页面设置了两个状态位,这些位设置在页表,每次访问内存时由硬件更新这些位。
页面分为4类:
第三类页面在他的R位被时钟中断清零后变成第一类,不清除M类是因为决定一个页面是否需要写回磁盘时将使用这些信息。
NRU算法随机从类编号最小的非空类挑选一个页面淘汰。
3.先进先出(FIFO)
OS维护一个当前在内存中页面的链表。很少使用纯粹的FIFO算法。
4.第二次机会页面置换算法
对FIFO算法进行简单修改:
其主要思想是寻找一个最近的时钟间隔以来没有被访问过的页面。
5.时钟
第二次机会算法是一个合理的算法,但他经常要在链表中移动页面,降低效率。对他的改进是把所有页面保存在一个环形链表,一个指针指向最老的页面。
6.最近最少使用(LRU)
很优秀,很难实现。
7.老化算法
8.工作集
找出一个不在工作集的页面并淘汰他。
9.工作集时钟页面置换
所需数据结构是一个以页框为元素的循环表。
小结