Contents

操作系统(第五章)

Contents

虚拟存储器

常见的存储器

  1. 一次性全部装入
  2. 常驻内存

内存的利用率低

改进

  1. 时间局部性(循环执行)
  2. 空间局部性(顺序执行)

虚拟存储器

  1. 请求式分页
  2. 请求式分段

什么是虚拟存储器

  1. 定义:内存+外存,统一起来进行管理

  2. 增加了两个功能

    1. 请求调用(中断):访问的程序不在内存
    2. 置换:在内存物理块存放满,需要将不执行的程序先调到外存然后再将需要执行的调入内存
  3. 容量(大小)

    1. 最大容量:由系统机器指令的地址结构决定
    2. 实际容量:内存容量+外存容量
  4. 实现方法

    1. 分页
    2. 分段
  5. 特征

    1. 离散性:部分装入

      若连续则不可能提供虚存),无法支持大作业小内存运行

    2. 多次性:局部装入,多次装入。

    3. 对换性

    4. 虚拟性.

请求式分页

  1. 硬件的变化

    1. 页表,增加4个字段:状态位(存在)/访问字段/修改位/外存地址
    2. 缺页中断:请求调入,访问的页面不在内存
    3. 地址变换:增加缺页中断
  2. 内存的物理块分配

    1. 最小物理块

    2. 页面分配

      1. 固定分配
      2. 可变式分配
    3. 页面置换

      1. 全局置换
      2. 局部置换
    4. 分配算法

      1. 平均分配算法

      2. 按进程大小比例分配算法:

        https://cdn.jsdelivr.net/gh/adan-ning/images/202404251627295.png

      3. 考虑优先权分配算法

  3. 请求调入和置换

    1. 调入时机
      1. 预调
      2. 请求调
    2. 调页的地方
    3. 调入过程:调用缺页中断

页面置换算法:用到缺页中断(3种)

置换的是哪些页面?

缺页中断

  1. 最佳页面置换算法(DPT)(理论上最好)

    置换策略

    1. 永远不再被访问的页面
    2. 将来访问的页面中最长时间才被访问的页面

    缺页率:$\frac{缺页次数}{总数}$

    https://cdn.jsdelivr.net/gh/adan-ning/images/202404251635850.png

    $\frac{6}{12}\times 100% =50%$

  2. FIFO(先进先出)

    置换策略:将先装入内容物理块的页面置换出去

    https://cdn.jsdelivr.net/gh/adan-ning/images/202404251638817.png

    缺页率:$\frac{9}{12} \times 100% = 75%$

    注:

    “抖动“现象:刚刚被置换出去的页面,下一时刻又要被访问(将它调入内存)

    产生2次抖动

  3. LRU(最近最久未使用置换算法)

    置换策略:将已经被访问的页面中,最长最久时间没有被访问的页面

    https://cdn.jsdelivr.net/gh/adan-ning/images/202404251642740.png

    缺页率:$\frac{7}{12}\times 100% \approx 58%$