操作系统学习(六)-- 虚拟内存(页面置换算法)

操作系统之虚拟内存

L24 内存换入-请求调页与内存换入

  • Swap in / Swap out
  • 让用户使用,使用分段,为了提高效率,引入分页;然后链接分段分页使用虚拟内存
    BEd6eVA.png

  • 用换入,换出实现大内存
  • 把要使用的部分换入到物理内存,建立映射
    ZsQlqqK.png
  • 请求,换入(调入页面),建立映射(页面映射)
  • 请求调页
  • MMC查找缺页,就需要调页,即缺页中断。
  • 访问的内存地址没有在内存中(没有映射),就需要在磁盘中找到地址调入内存,从而实现虚拟内存
    Cr9VCrP.png

  • 一个实际系统的请求调页
    kRcz8ng.png

  • CR0,2,3等CPU的寄存器
  • 申请空闲页面,读磁盘,建立映射(放入页表)
    uLJ8wiB.png
  • 修改页表

L25 内存换出

  • Swap out
  • 选择一页淘汰,换出到磁盘,选择哪一页,就是页面置换算法
    87c3NYz.png
  • FIFO页面置换
    8gvzdwU.png

  • MIN页面置换
  • 最远将使用的页淘汰
    IEHC9nU.png

  • LRU页面置换least recent use
  • 最近最少使用的页面淘汰
    pSXGlmP.png

  • 客观世界:局部性,稀疏性,低秩性
  • LRU置换算法实现
  • 很巧妙的利用时间戳,缺页利用时间戳最小的值换出
  • 实际操作系统实现很困难,每执行一条指令,进行地址重定位,需要查看当前页面的时间戳,效率很低,然后还要考虑时间戳溢出
    pd54hYu.png

  • LRU准确实现,用页码栈
  • 栈顶始终是最近访问的页面
    QfT3GGB.png

  • 实际代价太多,LRU近似实现
  • 将时间计数变为是和否
  • 循环一圈,不是之前的最近最少访问,近似成:最近没有访问,转一圈如果没有改变值,即是该值最近没有被访问过
  • 二次机会算法,Clock算法
    dvIEGfk.png

  • 缺页少,从1置为0就少
  • R置为1即页面调入,R置为0即页面将调出
  • 定时清除R位,最近一段时间又没有使用,所以就清除
    BCyH0eX.png

  • 还需要解决一个问题
    MKZEKOa.png

  • 理解:页面换入换出==>实现虚拟内存==>为了实现段页机制==>为了实现程序执行起来==>最终位进程
  • 一个进程分为很多段,形成很多页面,但是页框可能不足够,此时产生缺页中断,进行页面调入调出
  • 当访问内存时,页面不存在,产生缺少中断,然后从磁盘中调入到页面到物理内存,此时可能叶框满,需要根据clock算法将页面写入到磁盘,然后再将调入的页面写入到内存中
  • swap分区管理
    kDIt0us.png

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值