操作系统-16-内存扩充

操作系统-16-内存扩充

前言

mark

1. 覆盖技术

mark

  1. 概念

mark

mark

2. 交换技术

  1. 概念
  • 内存紧张时,把进程暂时换出到外存
  • 见:进程的中级调度(内存调度),挂起态,七状态模型 磁盘分为对换区(swap)和文件区,前者连续分配追求I/O速度,后者离散分配追求存储空间利用率
  • 优先换出阻塞进程、低优先级进程(可能导致饥饿)、还要考虑进程在内存的驻留时间,
  • PCB不会换出

mark

mark

3. 虚拟内存

  • 传统存储方式的缺点

    连续分配/非连续分配

    • 一次性
      作业必须一次性全部装入内存后才能开始运行。大作业无法运行,多道程序并发度下降。

    • 驻留性
      作业在运行期间一直驻留在内存,内存中驻留大量的暂时用不到的数据,浪费了宝贵的内存资源。

  • 局部性原理
    • 时间局部性
      现在访问的指令、数据在不久后很可能再次访问
    • 空间局部性
      现在访问的内存单元周围的内存空间很可能在不久之后访问
    • 高速缓存
      频繁访问的数据放到更高速的储存器中
  • 虚拟内存的定义和特征

    程序不需要全部装入内存即可运行,运行时根据需要动态调入数据,内存不够时,换出一些数据到外存

    • 多次性
      作业无需在运行时一次装入内存,而是允许分多次调用

    • 对换性
      作业无需在运行时常驻内存,允许作业换入、换出

    • 虚拟性
      从逻辑上扩充了内存容量,用户看到的容量,远大于实际容量

3.1 请求分页

mark

  • 请求分页
    访问的信息不存在时,操作系统负责将需要的信息从外存调入内存
  • 页表机制

mark

页面置换概念

  • 内存空间不足时,将内存中暂时不用的信息换到外存 页面的换入换出需要磁盘I/O,时间开销是很大的,缺页率越小越好
  • 缺页中断
    • 访问的页面不存在时,产生缺页中断(属于内中断的故障 fault),
    • 操作系统缺页中断处理程序中断,进程放到阻塞队列,待调页完成后将进程唤醒,放到就绪队列
    • 如果内存有空闲块,则为进程分配一个空闲块,将缺页装入其中,并修改页表相应页表项
    • 如果内存没有空闲块,由页面置换算法选择一个页面淘汰(若该页面在内存期间被修改过,则需要先将其写回外存),腾出一个空间再装入缺页 一条指令执行期间,可能产生多次缺页中断

地址变换机构

mark

mark

页面置换算法(具体内容请看下一篇博客)

  • 最佳置换算法(OPT)

mark

  • 先进先出置换算法(FIFO)

mark

  • 最近最久未使用算法(LRU)

mark

  • 时钟置换算法(CLOCK)

mark

  • 改进型时钟置换算法

mark

  • 小结:

mark

页面分配策略

mark

  1. 驻留集

mark

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

mark

  1. 何时调入页面

mark

  1. 何处调入页面
  • 系统拥有足够的兑换区空间

mark

  • 系统缺少足够的兑换区空间

mark

  • UNIX方式

mark

  1. 抖动现象

mark

  1. 工作集

mark

页面分配策略小结

mark

3.2 请求分段

  • 书上无具体详解

3.3 请求段页式

  • 书上无具体说明

参考书籍:《王道考研计算机操作系统》

参考博客https://mubu.com/doc/Cd-Y4YOfkh#o-1d01735b78f18c07f

打赏
  • 版权声明: 本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明出处!
  • © 2019-2022 Zhuuu
  • PV: UV:

请我喝杯咖啡吧~

支付宝
微信