三种页面置换算法

1、为什么要有页面置换算法

程序运行过程中,有时要访问的页面不在内存中,而需要将其调入内存。但是内存已经无空闲空间存储页面,为保证程序正常运行,系统必须从内存中调出一页程序或数据送到磁盘对换区,此时需要一定的算法来决定到低需要调出那个页面。通常将这种算法称为“页面置换算法”。

2.页面置换算法的分类
2.1 最佳置换算法(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三个页面装入内存。
当进程要访问页面2的时候,将会产生缺页中断。
此时根据最佳置换算法,因为页面7要在第18次才能访问,页面0在第5次访问,页面1在第14次访问,页面7最久不被使用,所以将页面7淘汰;
当进程0要访问时,因为它已存在在内存所以不必产生缺页中断;
当页面3要访问时,又引起缺页中断淘汰1;
依次类推直到最后一个页面访问完。下图为采用最佳置换算法的置换图。
由图可得,采用最佳置换算法发生了6次缺页中断。
在这里插入图片描述
(3)特点

  • 缺点:最佳置换算法是一种理想化算法,具有较好的性能,但是实际上无法实现(无法预知一个进程中的若干页面哪一个最长时间不被访问);
  • 优点:最佳置换算法可以保证获得最低的缺页率
2.2 先进先出页面置换算法(FIFO)

(1)实现原理:淘汰最先进入内存的页面,即选择在页面待的时间最长的页面淘汰。

(2)举例

依旧是上一个算法的例子

程序运行时,先将7,0,1三个页面装入内存。
当进程要访问页面2的时候,将会产生缺页中断。
此时根据先进先出置换算法,因为页面7是最先进入内存的,所以将页面7换出;
当进程0要访问时,因为它已存在在内存所以不必产生缺页中断;
在进程要访问页面3的时候,因为页面0是最早进入内存的,所以将页面0换出;
依次类推直到最后一个页面访问完。下图为采用先进先出置换算法的置换图。
由图可得,采用最佳置换算法发生了12次缺页中断。先进先出的页面置换比最佳置换算法的页面置换正好多了一倍;

在这里插入图片描述
(3)特点

  • 优点:先进先出算法实现简单,是最直观的一个算法
  • 缺点:先进先出的性能最差,因为与通常页面的使用规则不符合,所以实际应用少
2.3 最近最久未使用置换算法(LRU)

(1)实现原理:选择最近且最久未被使用的页面进行淘汰

(2)举例:

依旧是上一个算法的例子

程序运行时,先将7,0,1三个页面装入内存。
当进程要访问页面2的时候,将会产生缺页中断。
此时根据最近最久未使用置换算法,因为页面7是最近最久未被使用的的,所以将页面7淘汰;
当进程0要访问时,因为它已存在在内存所以不必产生缺页中断;
在进程要访问页面3的时候,因为页面1是最近最久未被使用的,所以将页面1淘汰;
依次类推直到最后一个页面访问完。
下图为采用最近最久未使用的置换算法的置换图。由图可得,采用最近最久未使用置换算法发生了9次缺页中断。

在这里插入图片描述
(3)特点

  • 优点:由于考虑程序访问的时间局部性,一般能有较好的性能;实际应用多
  • 缺点:实现需要较多的硬件支持,会增加硬件成本
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值