缺页中断——FIFO、LRU、OPT这三种置换算法

原创 2016年04月21日 10:07:23

1. 缺页中断

  在请求分页系统中,可以通过查询页表中的状态位来确定所要访问的页面是否存在于内存中。每当所要访问的页面不在内存时,会产生一次缺页中断,此时操作系统会根据页表中的外存地址在外存中找到所缺的一页,将其调入内存。
  缺页本身是一种中断,与一般的中断一样,需要经过4个处理步骤:
  1. 保护CPU现场
  2. 分析中断原因
  3. 转入缺页中断处理程序进行处理
  4. 恢复CPU现场,继续执行
  但是缺页中断时由于所要访问的页面不存在与内存时,有硬件所产生的一种特殊的中断,因此,与一般的中断存在区别
   1. 在指令执行期间产生和处理缺页中断信号
   2. 一条指令在执行期间,可能产生多次缺页中断
   3. 缺页中断返回时,执行产生中断的那一条指令,而一般的中断返回时,执行下一条指令

2. 页面置换算法

  进程运行过程中,如果发生缺页中断,而此时内存中有没有空闲的物理块是,为了能够把所缺的页面装入内存,系统必须从内存中选择一页调出到磁盘的对换区。但此时应该把那个页面换出,则需要根据一定的页面置换算法(Page Replacement Algorithm)来确定。

2.1 最佳置换(Optimal, OPT)

2.1.1 基本思想

  置换以后不再被访问,或者在将来最迟才回被访问的页面,缺页中断率最低。但是该算法需要依据以后各业的使用情况,而当一个进程还未运行完成是,很难估计哪一个页面是以后不再使用或在最长时间以后才会用到的页面。所以该算法是不能实现的。但该算法仍然有意义,作为很亮其他算法优劣的一个标准。

2.1.2 算例

  采用固定分配局部置换的策略,嘉定系统为某进程在内存中分配了3个物理块,页面访问顺序为2、3、2、1、5、2、4、5、3、2、5、2。假定系统未采用预调页策略,即未事先调入任何页面。进程运行时,一次将2、3、1三个页面调入内存,发生3次缺页中断。当第一次访问页面5时,产生第4次缺页中断,根据OPT算法,淘汰页面1,因为它在以后不会在使用了;第5次缺页中断时,淘汰页面2,因为它在5、3、2三个页面中,是在将来最迟才会被页面访问的页面。以此类推:
  注意:第4次中断时将最后不会访问的1剔除,将最后才访问的3放入最下面的内存块中,以后的调度过程中,最后不会访问或最后才被访问的页面总是放在最下面的内存块中。内存块从上到下依次存放最先访问的页面。
  中断次数为6,缺页中断率为6/12*100% = 50%。

P: 2 3 2 1 5 2 4 5 3 2 5 2
M=3 2 2 2 2 2 5 5 3 5 5 2 2
3 3 3 5 3 3 5 4 2 5 5
1 3 2 4 4 3 4 4 4
F=5 Y Y Y Y Y Y

2.2 先进先出置换算法(First In First Out, FIFO)

2.2.1 基本思想

  置换最先调入内存的页面,即置换在内存中驻留时间最久的页面。按照进入内存的先后次序排列成队列,从队尾进入,从队首删除。但是该算法会淘汰经常访问的页面,不适应进程实际运行的规律,目前已经很少使用

2.2.2 算例

  仍然以OPT算例为例子。
  中断次数为6,缺页中断率为9/12*100% = 75%。

P: 2 3 2 1 5 2 4 5 3 2 5 2
M=3 2 3 3 1 5 2 4 4 3 3 5 2
2 2 3 1 5 2 2 4 4 3 5
2 3 1 5 5 2 2 4 3
F=9 Y Y Y Y Y Y Y Y

2.2.3 Belady异常

  一般来说,分配给进程的物理块越多,运行时的缺页次数应该越少,使用FIFO时,可能存在相反情况,分配4个物理块的缺页竟然比3个物理块的缺页次数还多!
  例如:进程访问顺序为0、2、1、3、0、2、4、0、2、1、3、4。
  M=3时,缺页中断9次。缺页中断率9/12*100% = 75%。

P: 0 2 1 3 0 2 4 0 2 1 3 4
M=3 0 2 1 3 0 2 4 4 4 1 3 3
0 2 1 3 0 2 2 2 4 1 1
0 2 1 3 0 0 0 2 4 4
F=9 Y Y Y Y Y Y Y Y Y

  M=4时,缺页中断10次。缺页中断率10/12*100% = 83.3%。

P: 0 2 1 3 0 2 4 0 2 1 3 4
M=4 0 2 1 3 3 3 4 0 2 1 3 4
0 2 1 1 1 3 4 0 2 1 3
0 2 2 2 1 3 4 0 2 1
0 0 0 2 1 3 4 0 2
F=10 Y Y Y Y Y Y Y Y Y Y

2.3 最近最久未使用置换算法(Least Recently Used, LRU)

2.3.1 基本思想

  置换最近一段时间以来最长时间未访问过的页面。根据程序局部性原理,刚被访问的页面,可能马上又要被访问;而较长时间内没有被访问的页面,可能最近不会被访问。
  LRU算法普偏地适用于各种类型的程序,但是系统要时时刻刻对各页的访问历史情况加以记录和更新,开销太大,因此LRU算法必须要有硬件的支持。

2.3.2 算例

  仍然以OPT算例为例子。
  中断次数为6,缺页中断率为7/12*100% = 58.3%。

P: 2 3 2 1 5 2 4 5 3 2 5 2
M=3 2 3 2 1 5 2 4 5 3 2 5 2
2 3 2 1 5 2 4 5 3 2 5
3 2 1 5 2 4 5 3 3
F=7 Y Y Y Y Y Y Y

  堆栈实现LRU:
  系统使用特殊的堆栈来存放内存中每一个页面的页号。每当访问一页时就调整一次,即把被访问页面的页号从栈中移出再压入栈顶。因此,栈顶始终是最新被访问页面的页号,栈底始终是最近最久未被访问的页号。当发生缺页中断时,总是淘汰栈底页号所对应的页面。
  

参考

  1. 温静,计算机操作系统原理,武汉大学出版社.

目录

版权声明:本文为博主原创文章,转载请注明作者和出处。

操作系统页面置换算法之最优置换(OPT)算法

定义        最优置换算法(OPT)是指,其所选择的被淘汰页面,将是以后永不使用的,或许是在最长(未来)时间内不再被访问的页面。采用最佳置换算法,通常可保证获得最低的缺页率。但由于人们目前还无...
  • wanna_wsl
  • wanna_wsl
  • 2016年08月03日 17:03
  • 5625

操作系统虚拟内存中的四种典型页替换算法(OPT,LRU,FIFO,Clock)

页面置换:在地址映射过程中,若在页面中发现所要访问的页面不再内存中,则产生缺页中断(page fault)。当发生缺页中断时操作系统必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间。 ...
  • woshiwanghao_hi
  • woshiwanghao_hi
  • 2013年10月24日 20:10
  • 10983

FIFO、LRU、OPT这三种置换算法的缺页次数

考虑下述页面走向:           1,2,3,4,2,1,5,6,2,1,2,3,7,6,3,2,1,2,3,6      当内存块数量分别为3时,试问FIFO、LRU、OPT这三种置换算法...
  • Steven6977
  • Steven6977
  • 2013年09月18日 14:09
  • 37831

FIFO、LRU、OPT页面调度算法及例子

网上很多介绍3种页面置换算法的例子和过程是不正确的, 本文根据《操作系统概念》第七版对三种算法做介绍,并给出正确的例子以验证算法。 一、FIFO先进先出页面置换算法,创建一个FIFO队列来管...
  • lingzhm
  • lingzhm
  • 2015年08月11日 11:28
  • 4317

操作系统opt算法实现

#include #define M 20 void Opt(int paper[]); void print(int a[],int n) { int i; for (i=0;i
  • xckkcxxck
  • xckkcxxck
  • 2017年11月25日 10:54
  • 354

操作系统实验之页面置换算法(OPT、FIFO、LRU)C++简单实现

南邮操作系统实验之页面置换算法(OPT、FIFO、LRU)C++简单实现
  • qq_26071477
  • qq_26071477
  • 2016年12月11日 22:02
  • 4209

FIFO、LRU、OPT这三种置换算法的缺页次数

转载:http://yinzhezq.blog.163.com/blog/static/1648628902010112961039187/ 考虑下述页面走向:        ...
  • StoneOK07
  • StoneOK07
  • 2013年10月25日 10:13
  • 1603

几种缺页中断算法(FIFO,LRU与LFU)的实现过程

几种缺页中断算法(FIFO,LRU与LFU)的实现过程 2015-09-05 20:34:02 分类: LINUX   最近在做笔试题,其中虚拟存储管理中几种缺页中断算...
  • jfkidear
  • jfkidear
  • 2016年10月13日 22:36
  • 2620

几种缺页中断算法(FIFO,LRU与LFU)的实现过程

原博客地址http://blog.chinaunix.net/uid-13246637-id-5185352.html   最近在做笔试题,其中虚拟存储管...
  • victoryjack
  • victoryjack
  • 2017年03月25日 12:09
  • 818

LRU和FIFO算法计算“缺页中断O(∩_∩)O啊

LRU和FIFO算法计算“缺页中断O(∩_∩)O啊2010-04-07 00:33今天做完了软件设计师的操作系统部分,,,用了几个钟( ⊙ o ⊙ )啊!,有个问题还没有解决...   虚拟存储管理系...
  • linping070
  • linping070
  • 2010年04月07日 10:36
  • 7700
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:缺页中断——FIFO、LRU、OPT这三种置换算法
举报原因:
原因补充:

(最多只允许输入30个字)