一、最佳置换算法(OPT)
1. 原理
每次选择未来长时间不被访问的或者以后永不使用的页面进行淘汰。从主存中移出永远不再需要的页面,如无这样的页面存在,则选择最长时间不需要访问的页面,所选择的被淘汰页面将是以后永不使用的,或者是在最长时间内不再被访问的页面,这样可以保证获得最低的缺页率。
2. 举例
假定系统为某进程分配了三块物理块,并有以下页面:7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1,程序运行时,先将7,0,1三个页面装入内存,然后进行如下步骤:
(1)当进程要访问页面2的时候,将会产生缺页中断,此时根据最佳置换算法,因为页面7要在第18次才能访问,页面0在第5次访问,页面1在第14次访问,页面7最久不被使用,所以将页面7淘汰
(2)当进程0要访问时,因为它已存在在内存所以不必产生缺页中断
(3)当页面3要访问时,又引起缺页中断淘汰1
(4)依次类推直到最后一个页面访问完
下图为采用最佳置换算法的置换图,采用最佳置换算法发生了9次缺页中断,页面置换的次数为6
访问页面 | 7 | 0 | 1 | 2 | 0 | 3 | 0 | 4 | 2 | 3 | 0 | 3 | 2 | 1 | 2 | 0 | 1 | 7 | 0 | 1 |
物理块1 | 7 | 7 | 7 | 2 |
| 2 |
| 2 |
|
| 2 |
|
| 2 |
|
|
| 7 |
|
|
物理块2 |
| 0 | 0 | 0 |
| 0 |
| 4 |
|
| 0 |
|
| 0 |
|
|
| 0 |
|
|
物理块3 |
|
| 1 | 1 |
| 3 |
| 3 |
|
| 3 |
|
| 1 |
|
|
| 1 |
|
|
3. 优缺点
(1)优点:最佳置换算法可以保证获得最低的缺页率
(2)缺点:最佳置换算法是一种理想化算法,具有较好的性能,但是实际上无法实现(无法预知一个进程中的若干页面哪一个最长时间不被访问)
二、先进先出页面置换算法(FIFO)
1. 原理
优先淘汰最早进入内存的页面,亦即在内存中驻留时间最久的页面。该算法实现简单,只需把调入内存的页面根据先后次序链接成队列,设置一个指针总指向最早的页面。但该算法与进程实际运行时的规律不适应,因为在进程中,有的页面经常被访问。
2. 举例
假定系统为某进程分配了三块物理块,并有以下页面:7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1,程序运行时,先将7,0,1三个页面装入内存,然后进行如下步骤:
(1)当进程要访问页面2的时候,将会产生缺页中断。此时根据先进先出置换算法,因为页面7是最先进入内存的,所以将页面7换出
(2)当进程0要访问时,因为它已存在在内存所以不必产生缺页中断
(3)在进程要访问页面3的时候,因为页面0是最早进入内存的,所以将页面0换出
(4)依次类推直到最后一个页面访问完
下图为采用先进先出置换算法的置换图,采用先进先出页面置换算法发生了15次缺页中断,页面置换的次数为12,比最佳置换算法的页面置换正好多了一倍
访问页面 | 7 | 0 | 1 | 2 | 0 | 3 | 0 | 4 | 2 | 3 | 0 | 3 | 2 | 1 | 2 | 0 | 1 | 7 | 0 | 1 |
物理块1 | 7 | 7 | 7 | 2 |
| 2 | 2 | 4 | 4 | 4 | 0 |
|
| 0 | 0 |
|
| 7 | 7 | 7 |
物理块2 |
| 0 | 0 | 0 |
| 3 | 3 | 3 | 2 | 2 | 2 |
|
| 1 | 1 |
|
| 1 | 0 | 0 |
物理块3 |
|
| 1 | 1 |
| 1 | 0 | 0 | 0 | 3 | 3 |
|
| 3 | 2 |
|
| 2 | 2 | 1 |
3. 优缺点
(1)优点:先进先出算法实现简单,是最直观的一个算法
(2)缺点:先进先出的性能最差,因为与通常页面的使用规则不符合,所以实际应用少
三、最近最久未使用置换算法(LRU)
1. 原理
选择最近最长时间未访问过的页面予以淘汰,它认为过去一段时间内未访问过的页面,在最近的将来可能也不会被访问。该算法为每个页面设置一个访问字段,来记录页面自上次被访问以来所经历的时间,淘汰页面时选择现有页面中值最大的予以淘汰。
2. 举例
假定系统为某进程分配了三块物理块,并有以下页面:7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1,程序运行时,先将7,0,1三个页面装入内存,然后进行如下步骤:
(1)当进程要访问页面2的时候,将会产生缺页中断。此时根据最近最久未使用置换算法,因为页面7是最近最久未被使用的的,所以将页面7淘汰
(2)当进程0要访问时,因为它已存在在内存所以不必产生缺页中断
(3)在进程要访问页面3的时候,因为页面1是最近最久未被使用的,所以将页面1淘汰
(4)依次类推直到最后一个页面访问完
下图为采用最近最久未使用的置换算法的置换图,采用最近最久未使用置换算法发生了12次缺页中断,页面置换的次数为9
访问页面 | 7 | 0 | 1 | 2 | 0 | 3 | 0 | 4 | 2 | 3 | 0 | 3 | 2 | 1 | 2 | 0 | 1 | 7 | 0 | 1 |
物理块1 | 7 | 7 | 7 | 2 |
| 2 |
| 4 | 4 | 4 | 0 |
|
| 1 |
| 1 |
| 1 |
| |
物理块2 |
| 0 | 0 | 0 |
| 0 |
| 0 | 0 | 3 | 3 |
|
| 3 |
| 0 |
| 0 |
| |
物理块3 |
|
| 1 | 1 |
| 3 |
| 3 | 2 | 2 | 2 |
|
| 2 |
| 2 |
| 7 |
|
3. 优缺点
(1)优点:由于考虑程序访问的时间局部性,一般能有较好的性能,实际应用多
(2)缺点:实现需要较多的硬件支持,会增加硬件成本