操作系统之存储管理

2019-09-12

页面置换算法

  • 为保证进程的运行,系统从主存中调出一页程序或数据到磁盘的交换区,称为页面置换。
  • 理论上,应该将以后不再访问,或较长时间内不访问的页面调出,但较难实现。
  • 页面置换算法选择不当,或造成频繁的页面调入和淘汰,并导致系统效率急剧下降,此现象称为系统抖动

缺页率 = 缺 页 次 数 内 存 访 问 次 数 \text{缺页率}=\frac{缺页次数}{内存访问次数} 缺页率=访

1. 最佳页面淘汰算法 (Optimal Replace Algorithm—OPT)

这是一种理论化的算法,选择永不使用的页,或随后很长时间内不使用的页。

但实现困难,因为需要了解“将来”要访问哪些内存页。

最佳置换算法.PNG

2. 先入先出法(FIFO)

选择在主存中停留时间最长的一页置换,即:先进入内存的页,先退出内存。

实现方式:
将装入内存的页面按照先后次序排成队列,每次总调出队首的页,新页装入队尾,
例如:用指针指向“最老的页面”。

缺点:
不一定合理,较早进入内存的可能是共享的代码或数据,调出后不久又会使用。

先进先出算法.PNG

3. 最不经常使用算法 (Least frequently ued,LFU)

该算法在需要淘汰某一页时,首先淘汰到当前时间为止被访问次数最少的那一页。

实现方式:可通过在页表中给每一页增设一个访问计数器即可实现。每当该页被访问时,访问计数器加 1 ,而发生一次缺页中断时,则淘汰计数值最小的那一页,并将所有的计数器清零,但会增加系统开销,且周期不宜确定。
LFU算法.jpg

4. 最近最久未使用算法(least recently used,LRU)

基本思想:如果一个页面被访问了,那么它很可能马上又被访问,因此,可选择在最近一段时间里最久没有使用过的页面予以置换。

  • 可在页表中增加“计时”标记,每被访问一次,都从0开始重新计时,选择计时值最大的调出;
  • 也可以用堆栈实现。

LRU算法.PNG

5. 最近没有使用算法(NUR)

该算法淘汰在访问串中将来再也不出现的或是在离当前最远的位置上出现的页。这样,淘汰掉该页将不会造成因需要访问该页又立即把它调入的现象。遗憾的是,这种算法无法实现,因为它要求必须预先知道每一个进程的访问串。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值