概述
Linux——缺页中断与内存置换算法,你想知道的都在这里!
- 缺页中断
- 页面置换算法
- 缺页次数
- 一、先进先出(FIFO)
- 二.最近最久未使用(LRU)
- 三、最佳置换算法(OPT)
缺页中断
缺页中断就是要访问的页不在主存,需要操作系统将其调入主存后再进行访问。在这个时候,被内存映射的文件实际上成了一个分页交换文件。
一句话概括:当前虚拟地址要找的数据不在物理内存中
页面置换算法
进程运行过程中,如果发生缺页中断,而此时内存中有没有空闲的物理块是,为了能够把所缺的页面装入内存,系统必须从内存中选择一页调出到磁盘的对换区。但此时应该把那个页面换出,则需要根据一定的页面置换算法(Page Replacement Algorithm)来确定。
缺页次数
物理块+页面置换次数
题目如下:
一、先进先出(FIFO)
把内存中驻留时间最久的页面置换算法予以淘汰
例子:
在分页中,采用FIFO页面置换算法,序列 1、3、2、1、2、1、5、1、2、3,当物理块为3时,计算缺页次数和缺页率?
算法执行如下操作步骤:
- 程序运行,将1、3、2三个页面装入内存
- 接着1、2、1已经有存在内存,不必产生缺页中断
- 访问页面5时,内存中不存在该页面,发生缺页中断,根据FIFO算法,先进先出,将1置换出去
- 访问页面1时,内存中不存在该页面,发生缺页中断,根据FIFO算法,先进先出,将页面3置换出去
- 访问页面3时,内存中不存在该页面,发生缺页中断,根据FIFO算法,先进先出,将2置换出去
总共进行了三次页面置换,所以缺页数=3+3=6,缺页率为6/10=0.6;
优点:先进先出算法实现简单,是最直观的一个算法
缺点:性能最差,可能出现Belady 异常:当所分配的物理块数增大而页故障数不减反增的异常现象
二.最近最久未使用(LRU)
选择最近且最久未被使用的页面进行淘汰
例子:
在分页中,采用LRU页面置换算法,序列 1、3、2、1、2、1、5、1、2、3,当物理块为3时,计算缺页次数和缺页率?
算法执行如下操作步骤:
- 程序运行,将1、3、2三个页面装入内存
- 接着1、2、1已经有存在内存,不必产生缺页中断
- 访问页面5时,内存中不存在该页面,发生缺页中断,根据LRU算法,页面1、3、2中3最近且最久未被使用,将3置换出去
- 访问页面3时,内存中不存在该页面,发生缺页中断,根据LRU算法,页面5、1、2中5最久未被使用,将页面5置换出去
总共进行了两次页面置换,所以缺页数=3+2=5,缺页率为5/10=0.5;
优点:LRU性能较好,但需要寄存器和栈的硬件支持。LRU是堆栈类的算法。理论上可以证明,堆栈类算法不可能出现Belady异常。FIFO算法基于队列实现,不是堆栈类算法。
三、最佳置换算法(OPT)
当要调入一页而必须淘汰旧页时,应该淘汰以后不再访问的页,或距现在最长时间后要访问的页面,即被淘汰页面是以后永不使用或最长时间内不再访问的页面。
例子:
在分页中,采用OPT页面置换算法,序列 1、3、2、1、2、1、5、1、2、3,当物理块为3时,计算缺页次数和缺页率?
算法执行如下操作步骤:
- 程序运行,将1、3、2三个页面装入内存
- 接着1、2、1已经有存在内存,不必产生缺页中断
- 访问页面5时,内存中不存在该页面,发生缺页中断,根据OPT算法,页面1、3、2中3最长时间内不被访问,将3置换出去
- 访问页面3时,内存中不存在该页面,发生缺页中断,根据OPT算法,将5置换出去
总共进行了两次页面置换,所以缺页数=3+2=5,缺页率为5/10=0.5;
如有错误,欢迎指正!
最后
以上就是典雅悟空为你收集整理的Linux——缺页中断与内存置换算法,你想知道的都在这里!缺页中断页面置换算法缺页次数的全部内容,希望文章能够帮你解决Linux——缺页中断与内存置换算法,你想知道的都在这里!缺页中断页面置换算法缺页次数所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复