操作系统--总结几种常见的页面置换算法

来源:互联网 发布:通信网络优化培训 编辑:程序博客网 时间:2024/06/05 18:11

什么是页面置换算法?

在地址映射过程中,若在页面中发现所要访问的页面不在内存中,则产生缺页中断。
当发生缺页中断时,如果操作系统内存中没有空闲页面,则操作系统必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间。而用来选择淘汰哪一页的规则叫做页面置换算法。

常见的页面置换算法?

理想页面置换算法(OPT)

理想页面置换算法(OPT)
这是一种理想情况下的页面置换算法,但实际上是不可能实现的。该算法的基本思想是:发生缺页时,有些页面在内存中,其中有一页将很快被访问(也包含紧接着的下一条指令的那页),而其他页面则可能要到10、100或者1000条指令后才会被访问,每个页面都可以用在该页面首次被访问前所要执行的指令数进行标记。最佳页面置换算法只是简单地规定:标记最大的页应该被置换。这个算法唯一的一个问题就是它无法实现。当缺页发生时,操作系统无法知道各个页面下一次是在什么时候被访问。虽然这个算法不可能实现,但是最佳页面置换算法可以用于对可实现算法的性能进行衡量比较。

先进先出置换算法(FIFO)

先进先出置换算法(FIFO)
最简单的页面置换算法是先入先出(FIFO)法。这种算法的实质是,总是选择在主存中停留时间最长(即最老)的一页置换,即先进入内存的页,先退出内存。理由是:最早调入内存的页,其不再被使用的可能性比刚调入内存的可能性大。建立一个FIFO队列,收容所有在内存中的页。被置换页面总是在队列头上进行。当一个页面被放入内存时,就把它插在队尾上。
这种算法只是在按线性顺序访问地址空间[1] 时才是理想的,否则效率不高。因为那些常被访问的页,往往在主存中也停留得最久,结果它们因变“老”而不得不被置换出去。
FIFO的另一个缺点是,它有一种异常现象,即在增加存储块的情况下,反而使缺页中断率增加了。当然,导致这种异常现象的页面走向实际上是很少见的。

最近最少使用算法(LRU)

FIFO算法和OPT算法之间的主要差别是,FIFO算法利用页面进入内存后的时间长短作为置换依据,而OPT算法的依据是将来使用页面的时间。如果以最近的过去作为不久将来的近似,那么就可以把过去最长一段时间里不曾被使用的页面置换掉。它的实质是,当需要置换一页时,选择在之前一段时间里最久没有使用过的页面予以置换。这种算法就称为最久未使用算法。

一般常见的就是这三种页面置换算法,当然还有一些其他的。
比如:Clock置换算法,NRU(最近未使用)算法,最少使用(LFU)置换算法等。

一般的题都是求缺页次数。

FIFO:先进来的要先出去,每次换先进来的,若不缺页则原页不变。

LRU:最近最少使用的,把刚使用的放到第一个。当不缺页时把原有的这个页放到最上面。是一个实现起来比较简单的页面置换算法,其基本原则是“选择最早进入主存的页面淘汰”,理由是最早进入的页面,其不再使用的可能性比最近调入的页面要大。

OPT:根据未来实际使用情况将未来的近期里不用的页替换出去。这种算法是用来评价期它替换算法好坏的标准。不可能实现。所选择的被淘汰页面将是以后永不使用的,或者是在最长时间内不再被访问的页面,这样可以保证获得最低的缺页率。

1.某程序在内存中分配3页,初始为空,页面走向为4,3,2,1,4,3,5,4,3,2,1,5。给出LRU,OPT,FIFO的缺页次数。
这里写图片描述
共发生9次缺页中断。

这里写图片描述
共发生10次缺页中断。

这里写图片描述
共发生7次缺页中断。

2.在一个请求页式存储管理中,一个程序的页面走向为3,4,2,1,4,5,4,3,5,1,2,并采用LRU算法。社分配给该程序的存储块数 S 分别为 3 和 4,在该访问中发生的缺页次数 F 是()。
以下用x表示缺页的情况

当S=3时

LRU 3 4 2 1 4 5 3 4 5 1 2
页1 3 4 2 1 4 5 3 4 5 1 2
页2 3 4 2 1 4 5 3 3 5 1
页3 3 4 2 1 4 5 4 3 5
x x x x y x x y y x x
所以F=8

当S=4时
LRU 3 4 2 1 4 5 3 4 5 1 2
页1 3 4 2 1 4 5 3 4 5 1 2
页2 3 4 2 1 4 5 3 4 5 1
页3 3 4 2 1 4 5 3 4 5
页4 3 3 2 1 1 1 3 4
x x x x y x x y y y x
所以F=7