RuiCode

  • 首页
  • 归档

  • 搜索
操作系统 并发 排序 网络 源码分析 二分法 面试 不重复算法 指针移动 java 算法 mysql Linux

【面试经】操作系统内存管理2 -- 虚拟内存、请求分页

发表于 2020-02-29 | 分类于 面试经 | 0 | 阅读次数 452
  1. 传统内存管理缺点:
  • 一次性:一个进程运行需要将全部内存装入,当进程超过最大内存时无法运行,当多个进程同时运行时,并发度下降
  • 驻留性:装入之后就不会移除,除非进程结束
  1. 时间局部性和空间局部性原理:
  • 结论:程序暂时用不到的部分没必要移到内存,内存空间不够时可以把暂时用不到的移出内存
  1. 虚拟内存三个特征
  • 多次性:允许程序多次调入内存
  • 兑换性:允许交换暂时不使用和需要使用的部分
  • 虚拟性:从外存对内存的扩充
  1. 虚拟内存的实现相比于传统内存管理最大的区别
  • 在程序执行过程中,当访问的信息不在内存中时,由操作系统负责将所需信息从外存调入内存,然后继续执行程序
  • 当内存不够时,需要将内存暂时不使用的部分交换到外存
  1. 请求分页页表
  • 请求页表除了要记录内存块号外,还需要添加其他标志位
    -- 内存块号:null,或者实际内存块号
    -- 状态位:是否已调入内存
    -- 访问字段:记录最近被访问的次数,上次访问时间,可供置换算法参考
    -- 修改位:页面调入到内存中后是否被修改过
    -- 外存地址
  1. 缺页中断过程
  • 当访问页面不在内存,产生缺页中断,操作系统处理中断(缺页的进程阻塞,放入阻塞队列,调页,唤醒进程,放回就绪队列)
  • 当内存有空闲内存块,为进程分配内存块,修改请求页表
  • 当内存没有空闲内存块,由页面置换算法选择一个页面淘汰,若页面在内存期间被修改过,则要写回外存。未修改的无须写入外存
  1. 页面置换算法
  • 最佳置换算法:每次淘汰页面是后面不再使用的页面,或者长时间不再使用。实现困难
  • FIFO置换算法:每次淘汰最早进入的页面,可能产生belady异常
  • LRU置换算法:最近未使用过的,实现需要专用硬件支持,算法开销大,性能好
  • 时钟置换算法(最近未用算法NRU):需要用到访问位和指针,最多扫描2轮
  • 改进的时钟置换算法:还考虑修改位,优先淘汰最近未被修改的且未用到的页面,最多四轮
  • 本文作者: RuiCode
  • 本文链接: https://www.ruicode.cn/archives/面试经操作系统内存管理2--虚拟内存请求分页
  • 版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 许可协议。转载请注明出处!
# 操作系统 # 并发 # 排序 # 网络 # 源码分析 # 二分法 # 面试 # 不重复算法 # 指针移动 # java # 算法 # mysql # Linux
【面试经】操作系统内存管理1 -- 基本分页、分段、段页式
【面试经】多线程控制输出1
  • 文章目录
  • 站点概览
RuiCode

RuiCode

19 日志
5 分类
13 标签
Creative Commons
© 2021 RuiCode
由 Halo 强力驱动
|
主题 - NexT.Pisces v5.1.4

冀公网安备 13050002001906号