操作系统复习(三)

内存管理

Posted by Gavin on August 29, 2019

我来问道无余说

云在青天水在瓶

概念

基本知识

  1. 内存管理的功能
    • 内存空间的分配与回收
    • 地址转换(逻辑<——>物理)
    • 内存空间扩充
    • 存储保护
  2. 程序执行过程
    • 编译(将用户源代码编译成若干目标模块)
    • 链接(将编译好的目标模块以及所需库函数链接到一起,形成装入模块)
      • 静态链接(运行前链接好,不再拆开)
      • 装入时动态链接(便装入内存时,边链接)
      • 运行时动态链接(使用到时,才链接)
    • 装入(装入内存运行)
      • 绝对装入(适用于单道程序设计,编译时使用绝对地址)
      • 可重定位装入(地址变换在装入时一次完成,作业装入内存时,必须分配给其要求的全部空间,一旦进入内存,运行期间则不能移动)
      • 动态运行时装入(程序在内存中可以发生移动,真正要执行时,才进行地址转换,可将程序分配到不连续存储区中)
  3. 内存保护
    • 上下限寄存器(判断是否越界)
    • 重定位寄存器(基址寄存器)和界地址寄存器(限长寄存器)
      重定位寄存器 + 逻辑地址 = 物理地址 < 界地址寄存器
  4. 扩充内存
    • 覆盖
      内存划分为一个固定区和若干覆盖区,程序的活跃部分放在固定区,其他段放在覆盖区,剩余段放在外存,要用到时,放入覆盖区
    • 交换
      将阻塞态程序移到辅存,把就绪态程序换入内存

内存分配

  1. 连续分配管理方式
    • 单一连续分配(内部碎片)
    • 固定分区分配(内部碎片)
      • 分区大小相等
      • 分区大小不等
    • 动态分区分配
      • 首次适应(地址递增)
      • 最佳适应(容量递增)
      • 最坏适应(容量递减)
      • 邻近适应(循环首次适应)
  2. 非连续分配管理方式
    • 基本分页存储管理方式
    • 基本分段存储管理方式
    • 段页式管理方式
  3. 特征
    • 一次性(作业必须一次性全部装入内存才能运行)
    • 驻留性(作业装入内存后一直驻留在内存中)

虚拟内存

  1. 特征
    • 多次性
    • 虚拟性
    • 对换性
  2. 实现方式
    • 请求分页存储管理
    • 请求分段存储管理
    • 请求段页式存储管理
  3. 硬件支持
    • 一定容量的内存和外存
    • 页表(段表)机构
    • 中断机构
    • 地址变换机构
  4. 请求分页存储管理
  5. 页面置换算法
    • 最佳置换算法(OPT)
      淘汰最长时间内不使用的
    • 先进先出(FIFO)
      会产生Belady异常,即增大物理块,反而缺页频率上升
    • 最近最久未使用(LRU)
    • 时钟置换(CLOCK)
      最近未用(NRU)
  6. 页面分配策略
    • 固定分配局部置换
    • 可变分配全局置换
    • 可变分配局部置换
  7. 调入页面时机
    • 预调页策略
    • 请求调页策略

注意

  1. 页式管理中地址空间是一维
  2. 顶级页表最多只能有一页
  3. 一个进程中,段表只能有一个,页表可能有多个