哈工大-操作系统L25

内存换出

一.FIF0(先进先出算法)

总共分配了3个页框,A,B,C,A,B放入页框时页框足够,没有产生缺页,到D时此时页框是满的造成了缺页,按照先进先出的算法,将A换出将D放入,后面要放入A又将B换出,放入D时D在页框中,放入B时将C换出,放入C时又将D换出,放入B时B在页框中,FIFO导致7次缺页,这个算法太浪费时间

二.MIN(最远淘汰算法)

MIN算法A,B,C,A,B放入的时候没有造成缺页,当要放入D时造成了缺页,需要向后面看,哪个使用的最晚很明显是C,所以就把C换出将D换入,再向下A,D,B都在页框中没有造成缺页, C时造成缺页后面只有一个B,所以换出A或B都可以,将A换出放入C,B在页框中,MIN导致5次缺页

这个算法理论方面非常好,倒是需要知道将来发生的事情

三.LRU

用过去的历史预测将来

A放入的时候是第一个时间戳,A=1,B放入的时候是第二个,B=2,一次类推,D的时候,将时间戳最小的C换出将D放入的时候是第六个时间戳D=6, 接下来,就根据时间戳的大小来进行判断了,缺页时优先将时间戳小的换出

这个算法理论上来说非常好,但是实现起来非常麻烦,而且浪费时间,每执行一条指令,就要取值,访问一次地址,进行地址翻译,每执行一次都要维护这些时间戳,要查对应的数字进行修改,时间戳很可能溢出,麻烦时间浪费,还需每次访问内存,实现代价太大

放入A,B,C时没有造成缺页,再次放入A时A在页框中将A放到栈顶,B也是相同的操作,到放入D时D不在页框中将栈底的C换出再将D放到栈顶,后面也是这样操作,栈码实现也太大

四.Clock

组成循环队列,每次访问一页时就将对应的R置成1,当缺页需要淘汰页时,第一轮将值位1的置成0,

到第二轮的时候如果置还是0,就是没有使用这个页,就将这个页换出,每访问一次页只需要置成0或1中需要修改一个数,反正MMU也要访问页,可以让MMU来完成对R的修改,可以放到页表项中由MMU直接做

缺页很少的时候很少从1置成0,指针转的很慢,访问页将R置成1缺页很少导致全是1,缺页之后全都置成0,就退化成先入先出,需要增加一个,定时清除R位,定时清理R位,将R置成0,用来清除R位,移动速度要快,用来选择淘汰页,移动速度慢

进程多的时候CPU利用率就高,CPU一直在工作,到进程太多的时候,CPU效率就会急剧下降,进程太多的时候页框太少,老时缺页,就需要一直调用磁盘,cpu就等待,利用率下降,颠簸磁盘一直访问进程个数不能太多,分配的物理页就少了,理论上页框的个数应该能覆盖一个局部

  • 10
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值