第九讲 页面置换算法

第九讲 页面置换算法

局部页面置换算法主要包括以下:

  • 最优页面置换算法
  • 先进先出算法
  • 最近最久未使用算法(LRU,Least Recently Used)
  • 时钟页面置换算法(clock)
  • 最不常用算法(LFU,Least Frequently Used)
  • Belady现象
  • LRU,FIFO和clock的比较
最优页面置换算法(OPT,optimal)

基本思想:置换在未来最长时间不访问的页面
算法实现:

  • 缺页时,计算内存中每个逻辑页面的下一次访问时间
  • 选择未来最长时间不访问的页面

算法特征

  • 缺页最少,是理想情况
  • 实际系统中无法实现
  • 无法预知每个页面在下次访问前的等待时间
  • 作为置换算法的性能评价依据,在模拟器上运行某个程序,并记录每一次的页面访问情况,第二遍运行时使用最优算法

下表给出了最优页面置换算法的一个示例

时间012345678910
访问请求cadbebabcd
0aaaaaaaaaa
1bbbbbbbbbb
2cccccccccc
3dddddeeeee
缺页状态0
每页的下次访问时间a=7
b=6
c=9
d=10
先进先出算法(First-In First-out,FIFO)

思路:选择在内存驻留时间最长的页面进行置换
实现:

  • 维护一个记录所有位于内存中的逻辑页面链表
  • 链表元素按驻留内存的时间排序,链首最长,链尾最短
  • 缺页时,选择链首页面进行置换,新页面加到链尾

特征:

  • 实现简单
  • 性能较差,调出的页面可能是经常访问的
  • 进程分配物理页面数增加时,缺页并不一定减少(Belady现象)
最近最久未使用算法(Least Recently Used,LRU)

思路:

  • 选择最长时间没有被引用的页面进行置换
  • 如某些页面长时间未被访问,则它们在将来还可能会长时间不会访问

实现:

  • 缺页时,计算内存中每个逻辑页面的上一次访问时间
  • 选择上一次使用到当前时间最长的页面

特征:最优置换算法的一种近似

LRU算法的可能实现算法
1.页面链表

  • 系统维护一个按最近一次访问时间排序的页面链表
    • 链表首节点是最近刚刚使用过的页面
    • 链表尾节点是最久未使用的页面
  • 访问内存时,找到相应页面,并把它移到链表之首
  • 缺页时,置换链表尾节点的页面

2.活动页面栈:

  • 访问页面时,将此页号压入栈顶,并栈内相同的页号抽出
  • 缺页时,置换栈底的页面

下表给出了最近最久未使用算法的一个示例

时间012345678910
访问请求cadbebabcd
0aaaaaaaaaaa
1bbbbbbbbbbb
2ccccceeeeed
3dddddddddcc
缺页状态000
每页的下次访问时间a=7
b=6
c=9
d=10
a=7
b=8
e=5
d=3
a=7
b=8
e=5
c=9
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值