页面置换算法
地址映射过程中,若在页面中发现所要访问的页面不在内存中,则产生缺页中断。当发生缺页中断时,如果操作系统内存中没有空闲页面,则操作系统必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间。而用来选择淘汰哪一页的规则叫做页面置换算法。
下面以页面访问顺序:4,3,2,1,4,3,5,4,3,2,1,5,实际页面数为3为例,研究三种算法的不同
最佳置换算法(OPT)
理想置换算法,从主存中移出永远不再需要的页面;如无这样的页面存在,则选择最长时间不需要访问的页面。于所选择的被淘汰页面将是以后永不使用的,或者是在最长时间内不再被访问的页面,这样可以保证获得最低的缺页率。
如下图,当顺序访问4,3,2时缺页,将4,3,2调入内存,接下来访问1时,产生缺页,将后面最长时间未用到的2置换出去,以此类推,每次缺页时都置换未来最长时间未用到的页面。但是,我们不可能预测未来需要用到哪些页,因此这是理想算法。
先进先出置换算法(FIFO)
最简单的页面置换算法。这种算法的基本思想是:当需要淘汰一个页面时,总是选择驻留主存时间最长的页面进行淘汰,即先进入主存的页面先淘汰。其理由是:最早调入主存的页面不再被使用的可能性最大。
如下图,当顺序访问4,3,2时缺页,将4,3,2调入内存,接下来访问1时,按照先进先出的原则,将刚刚最先进入的4置换,接下来访问4时,又缺页了,再将剩余页面中最先进入的页面3置换,以此类推
最近最久未使用(LRU)算法
这种算法的基本思想是:利用局部性原理,根据一个作业在执行过程中过去的页面访问历史来推测未来的行为。它认为过去一段时间里不曾被访问过的页面,在最近的将来可能也不会再被访问。所以,这种算法的实质是:当需要淘汰一个页面时,总是选择在最近一段时间内最久不用的页面予以淘汰。
如下图,当顺序访问4,3,2时缺页,将4,3,2调入内存,接下来访问1时,将过去最少用到的页面置换出去,这里4,3,2过去用到的频率都是一样的,因此任意置换一个即可。往下看可以看到,当我们访问5,产生缺页的时候,过去用到4两次,用到3两次,用到1一次,因此选择将过去用到次数最少的1置换出去。