OS内存管理之页面置换

前面讲到,我们需要将一些页面加载到内存,此时刚好内存上没有可用的物理内存编号,这个时候就需要将一些页面置换到磁盘让出位置。

置换的基本策略:

置换最近不可能访问的页

根据局部性原理,基于过去的行为来预测将来的行为。

策略设计太简单,实行起来可能会很低效,如果过于精密和复杂,软硬件开销也会更大,一般需要折中。

页框锁定:

一些页框是绝对不允许被置换出去的,否则会出错或者影响效率,如:

  • 操作系统核心代码
  • 关键数据结构
  • 正在进行IO操作缓冲区等

我们需要将这些页面锁定,不让操作系统对这些页面进行置换或者延迟进行置换,避免发生不确定的事情。

最佳页面置换算法:难以实现

置换以后不再需要或者最远的将来才会用到的页面。

先进先出

最先进内存的页面,最先被置换出去

第二次机会

先进先出的改进版
先按照先进先出选一个页面,检查访问位,如果为0,就置换出去,否则不置换,并将标志位置0,这就是第二次机会。

时钟算法

根据指针指向确定哪个被置换,比遍历链表能快一些。

最近未使用

选择最近一段时间没有为使用过的一页并置换,通过检测一些标志位实现。

最近最少使用

选择最后一次访问时间距离当前时间最长的一页进行置换。需要记录时间戳,消耗空间,但是最接近最佳页面置换算法。

最不经常使用

选择访问次数最少的页面转换,实现时可以使用计数器

老化算法

改进LRU

工作集

TBD

工作集时钟

TBD

页面抖动现象:

由于内存中进程越来越多,分配给每个进程页面数不断的减少,缺页率自然而然上升。导致产生大量的缺页异常,一些页面被频繁的换出换入,使得进程的运行速度明显拖慢。

根本原因:硬件资源太少

资源一般我们比较难改变,这就需要设计一种比较优的置换算法,也需要我们的程序员写出局部性优的代码来。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值