页面置换算法的功能是:当缺页中断发生,需要调入新的页面而内存已满时,选择内存当中哪个物理页面被置换~
页面置换算法的目的:尽可能地减少页面的换进换出次数(既缺页中断的次数)。具体来说,把未来不再使用的或短期内较少使用的页面换出,通常只能在局部性原理指导下依据过去的统计数据来进行预测。
目录
一.最佳置换算法(OPT)
二.先进先出页面置换算法(FIFO)
三.最近最久未使用置换算法(LRU)
四.时钟置换算法(clock)
五.改进型的时钟置换
页缺失(英语:Page fault,又名硬错误、硬中断、分页错误、寻页缺失、缺页中断、页故障等)指的是当软件试图访问已映射在虚拟地址空间中,但是并未被加载在物理内存中的一个分页时,由中央处理器的内存管理单元所发出的中断。
简单来说,缺页指的就是每次访问的页面不在内存之中~
一.最佳置换算法(OPT)
选择的被淘汰页是以后永远不使用的页面,或者是在最长时间内不再被访问的页面,以保证获得最低的缺页率~这是一种理想情况下的页面置换算法,但实际上是不可能实现的。该算法的基本思想是:发生缺页时,有些页面在内存中,其中有一页将很快被访问(也包含紧接着的下一条指令的那页),而其他页面则可能要到10、100或者1000条指令后才会被访问,每个页面都可 [1]以用在该页面首次被访问前所要执行的指令数进行标记。最佳页面置换算法只是简单地规定:标记最大的页应该被置换。这个算法唯一的一个问题就是它无法实现。当缺页发生时,操作系统无法知道各个页面下一次是在什么时候被访问。虽然这个算法不可能实现,但是最佳页面置换算法可以用于对可实现算法的性能进行衡量比较。
(缺页中断发生了9次,但是页面置换只出现了6次~)
只不过,由于无法知道后面会不会再使用页面,OPT算法只是一种理想中的算法~
二.先进先出页面置换算法(FIFO)
优先淘汰最早进入内存的页面~最简单的页面置换算法是先入先出(FIFO)法。这种算法的实质是,总是选择在主存中停留时间最长(即最老)的一页置换,即先进入内存的页,先退出内存。理由是:最早调入内存的页,其不再被使用的可能性比刚调入内存的可能性大。建立一个FIFO队列,收容所有在内存中的页。被置换页面总是在队列头上进行。当一个页面被放入内存时,就把它插在队尾上。
贝拉蒂异常:
三.最近最久未使用置换算法(LRU)
选择最近最长时间未访问过的页面予以淘汰~FIFO算法和OPT算法之间的主要差别是,FIFO算法利用页面进入内存后的时间长短作为置换依据,而OPT算法的依据是将来使用页面的时间。如果以最近的过去作为不久将来的近似,那么就可以把过去最长一段时间里不曾被使用的页面置换掉。它的实质是,当需要置换一页时,选择在之前一段时间里最久没有使用过的页面予以置换。这种算法就称为最久未使用算法(Least Recently Used,LRU)。
四.时钟置换算法(clock)
又被称为最近未使用算法——真正意义上使得性能与开销较为均衡~
五.改进型的时钟置换
各种算法之间的对比: