请求页式管理中的置换算法(FIFO、LRU、OPT),求缺页率例题
置换算法在内存中没有空闲页面时被调用,它的目的是选出一个被淘汰的页面。
如果内存中有足够的空闲页面存放所调入的页,则不必使用置换算法。把内存和外存统一管理的真正目的是把那些被访问概率非常高的页存放在内存中。因此,置换算法应该置换那些被访问概率最低的页,将它们移出内存。比较常用的置换算法有以下几种:
一、先进先出(First In First Out,FIFO)算法
FIFO算法总是选择在内存驻留时间最长的一页将其淘汰。Belady现象是指:采用 FIFO算法时,如果对—个进程未分配它所要求的全部页面,有时就会出现分配的页面数增多但缺页率反而提高的异常现象,原因在于它根本没有考虑程序执行的动态特征。
二、最近最久未使用(Least Recently Used,LRU)算法
该算法的基本思想是:当需要淘汰某一页时,选择离当前时间最近的一段时间内最久没有使用过的页先淘汰。该算法的主要出发点是,如果某页被访问了,则它可能马上还要被访问。或者反过来说,如果某页很长时间未被访问,则它在最近一段时间也不会被访问。
三、理想型淘汰算法(Optimal Replacement Algorithm,OPT)
该算法淘汰在访问串中将来再也不出现的或是在离当前最远的位置上出现的页。这样,淘汰掉该页将不会造成因需要访问该页又立即把它调入的现象。但是,这种算法无法实现,因为它要求必须预先知道每一个进程的访问串。
缺页率指的是访问页面失败次数除以进程页面访问总次数。访问页面失败次数即下题中除全空列以外的个数。
四、例题
(一)在页式虚拟存储管理的计算机系统中,作业在主存中分配到3块主存空间,作业执行时访问页的顺序为2,3,2,1,5,2,4,5,3,2,5,3,请问用OPT, FIFO 和LRU 替换算法时,它们的缺页中断率分别是多少。(要求图示出内存页面变化情况)
(二)在一个请求分页虚拟存储管理系统中,一个程序运行的页面走向是:1,2,3,1,4,5,1,2,1,4,5,3,4,5,对于分配给程序4个页框的情况,分别用FIFO和LRU算法,求出缺页中断次数,并给出缺页率。
(三)对于如下的页面访问序列:1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5。当内存块数量为3时,试问:使用FIFO、LRU置换算法产生的缺页中断是多少?写出依次产生缺页中断后应淘汰的页,并计算出个算法的缺页率?
1)使用FIFO算法时,缺页率:9/12×100%=75%
2)使用LRU算法时,缺页率:10/12×100%=83%
(四)在页式虚拟存储管理的计算机系统中,运行一个共有8页的作业,且作业在主存中分配到4块主存空间,作业执行时访问页的顺序为6,0,1,2,0,4,3,1,2,6,7,4,2,5,6,请问用FIFO和LRU替换算法时,它们的缺页中断率分别是多少。(要求图示出内存页面变化情况)