什么是虚拟内存?

什么是虚拟内存?

虚拟内存使应用程序能够拥有一个独立而连续的虚拟地址空间,其通过页表与硬件的配合,能够在对应用程序透明的前提下,自动地进行虚拟地址到物理地址的翻译。

使用虚拟内存技术之后,数据就不用一次性全部装入内存之中,需要用到的就放在内存,用不到的就放在磁盘,通过换入换出实现切换。使得可以使用的内存远远大于实际的物理内存。

虚拟内存下的页表
在这里插入图片描述

缺页中断

什么是缺页中断?
在请求分页系统中,当前进程要访问的页面不在内存时,便产生一个缺页中断,缺页的进程阻塞,放入阻塞队列,需要的页面从磁盘调入内存之后再将其唤醒,放回就绪队列

缺页中断处理总流程(重点)
在这里插入图片描述

页面置换算法(核心)

在这里插入图片描述

最佳置换算法OPT

最佳页面置换算法基本思路是:置换在「未来」最长时间不访问的页面

所以,该算法实现需要计算内存中每个逻辑页面的「下一次」访问时间,然后比较,选择未来最长时间不访问的页面。

我们举个例子,假设一开始有 3 个空闲的物理页,然后有请求的页面序列,那它的置换过程如下图:
在这里插入图片描述
在这个请求的页面序列中,缺页共发生了 7 次(空闲页换入 3 次 + 最优页面置换 4 次),所以缺页率=7/13

这很理想,但是实际系统中无法实现,因为程序访问页面时是动态的,我们是无法预知每个页面在「下一次」访问前的等待时间

最佳页面置换算法虽然无法实现,但是可以作为衡量算法效率的标准,你的算法效率越接近该算法的效率,那么说明你的算法就越高效的

先进先出置换算法—FIFO

每次选择淘汰的页面是最早进入内存的页面
在这里插入图片描述

Second Chance:
在这里插入图片描述

在这里插入图片描述

FIFO可能存在Belady现象,即为进程分配的内存块增加,缺页中断的次数不减反增。

比如上面例子中,现在分配四个内存块,缺页次数反倒为10次
在这里插入图片描述

最近最久未使用的置换算法LRU

基本思路是:
发生缺页时,选择最长时间没有被访问的页面进行置换,也就是说,该算法假设已经很久没有使用的页面很有可能在未来较长的一段时间内仍然不会被使用。

这种算法与最优置换算法OPT类似,最优置换算法是通过「未来」的使用情况来推测要淘汰的页面,而 LRU 则是通过「历史」的使用情况来推测要淘汰的页面。

在这里插入图片描述

时钟置换算法—CLOCK

在这里插入图片描述
举例:
在这里插入图片描述
依次访问1,3,4,2,5并存入内存块,所以访问到6号页面时情况如下:

在这里插入图片描述
然后进过1轮之后访问位均成了0,并淘汰了1号页,存入6号页面,如下:
在这里插入图片描述
3,4都在内存中,所以没有缺页中断,到7号页时淘汰2号页,此时情况如下:
在这里插入图片描述

改进型时钟算法

在这里插入图片描述

颠簸现象与工作集

在这里插入图片描述
在这里插入图片描述

页面分配策略

在这里插入图片描述

驻留集、页面分配、置换策略

在这里插入图片描述

固定分配局部置换、可变分配局部置换、可变分配全局置换

在这里插入图片描述
可变全局和可变局部的对比:
在这里插入图片描述

何时调入页面?

在这里插入图片描述

从何处调页?

情况一:系统拥有足够的对换区空间
在这里插入图片描述
情况二:系统缺少足够的对换区空间
在这里插入图片描述
情况三:UNIX方式
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值