缺页中断及页面置换算法

原创 2017年10月06日 13:57:19

缺页中断

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

页面置换算法

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

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


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

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


  置换最近一段时间以来最长时间未访问过的页面。根据程序局部性原理,刚被访问的页面,可能马上又要被访问;而较长时间内没有被访问的页面,可能最近不会被访问。
  LRU算法普偏地适用于各种类型的程序,但是系统要时时刻刻对各页的访问历史情况加以记录和更新,开销太大,因此LRU算法必须要有硬件的支持。
  
Belady异常
  一般来说,分配给进程的物理块越多,运行时的缺页次数应该越少,使用FIFO时,可能存在相反情况,分配4个物理块的缺页竟然比3个物理块的缺页次数还多!
  
  

3.最佳置换(Optimal, OPT)


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

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

虚拟页式存储管理——页面置换算法及其影响的缺页中断率

页面置换算法 先进先出置换算法(FIFO) 该算法淘汰最早进入主存的页面。最早进入的页面,不再使用的可能性比最近调入的页面要大。 特点:实现简单。只要把各调入主存的页按其进入主存的先后顺...

页面置换 缺页率 C++

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

考虑下述页面走向:           1,2,3,4,2,1,5,6,2,1,2,3,7,6,3,2,1,2,3,6      当内存块数量分别为...

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

转载自:http://yinzhezq.blog.163.com/blog/static/1648628902010112961039187/ 考虑下述页面走向:       ...

关于缓存调度算法FIFO、LRU、OPT这三种置换算法的缺页次数

这三个置换算法,或者说缓存调度算法,其实来源于操作系统。操作系统的页置换算法。 FIFO:即 First In, First Out 先进先出算法。 LRU: Least recently use...

Linux内存的缺页与置换

一)缺页 当CPU请求一个不在RAM中的内存页时,会发生缺页,比如我们从内存读取/写入数据,而数据未在内存,此时都会发生缺页. 我们通过下面的程序对内存缺页情况进行测试,程序通过分...

nachos 缺页置换

Lab3 只是草草的做了一下,今天上课发现确实有很多问题。还是得用虚存来实现,不过实在是懒得弄了。。 1 修改exception.cc中的方法,当发生TLB MISS时,如果该页不在内存中,...
  • ymyss4
  • ymyss4
  • 2012-05-18 19:35
  • 1546
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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