存储管理

该篇博客绝大多数内容基于计算机与操作系统-03-存储管理 | EagleBear2002 的博客,欢迎支持原作者

  1. 存储管理是操作系统的重要组成部分,负责管理计算机系统的重要资源——内存储器
  2. 内存空间一般分为两部分:
    1. 系统区:存放操作系统内核程序和数据结构等。
    2. 用户区:存放应用程序和数据。
  3. 存储管理包括以下功能:
    1. 存储分配:位进程分配内存空间以便运行,完成内存区的分配和去配工作。
    2. 地址映射:内存被抽象为一维或二维地址空间;逻辑空间到物理空间映射。
    3. 存储保护:系统隔离分配给进程的内存区,防止地址越界或操作越权。
    4. 存储共享:系统允许多个进程共享内存区。
    5. 存储扩充:形成虚拟存储器。

存储管理的基础

逻辑地址

  1. 逻辑地址:又称相对地址,即用户编程所使用的地址空间
  2. 逻辑地址从零开始编号,有两种形式:
    1. 一维逻辑地址(地址)
    2. 二维逻辑地址(段号:段内地址)

段式程序设计

  1. 把一个程序设计成多个段:代码段、数据段、堆栈段等等
  2. 用户可以自己应用段覆盖技术扩充内存空间使用量,这一技术是程序设计技术,不是 OS 存储管理的功能:只是用一些段构成一个比较小的程序,然后动态来调整。
  3. 结合虚存完成内存部分的扩充

物理地址

从物理地址看到的物理内存单元

  1. 物理地址:又称绝对地址,即程序执行所使用的地址空间
  2. 处理器执行指令时按照物理地址进行

主存储器的复用

  1. 多道程序设计需要复用主存
  2. 按照分区复用:
    1. 主存划分为多个固定/可变尺寸的分区
    2. 一个程序/程序段占用一个分区
  3. 按照页架复用:
    1. 主存划分成多个固定大小的页架
    2. 一个程序/程序段占用多个页架

存储管理的基本模式

  1. 单连续存储管理:一维逻辑地址空间的程序占用一个主存固定分区或可变分区
  2. 段式存储管理:段式二维逻辑地址空间的程序占用多个主存可变分区
  3. 页式存储管理:一维逻辑地址空间的程序占用多个主存页架区
  4. 段页式存储管理:段式二维逻辑地址空间的程序占用多个主存页架区
  5. 注意是否可以虚拟化

存储管理模式示意图

img

  1. 应用级程序员直接面对的是逻辑地址,而最后运行需要使用的是物理地址(从处理器角度看到的物理内存单元)
  2. 一般目前常用的是动态重定位,将逻辑地址转换为对应的物理地址。
  3. 分页:形成页框加载程序,页框和页框之间可以是不连续的。
  4. 分段:每一个段有相应分区,使用段表完成逻辑段向物理段的映射
  5. 段页式:在分段基础上,还实现了页框部分。

存储管理的功能

地址转换

地址转换:又称重定位,即把逻辑地址转换成绝对地址。

  1. 静态重定位:在程序装入内存时进行地址转换,将逻辑地址转换为物理地址,再装入内存;由装入程序执行,早期小型 OS 使用,基于地址固定值进行偏移。
  2. 动态重定位(主流):在 CPU 执行程序时进行地址转换,将逻辑地址转换为物理地址;从效率出发,依赖硬件地址转换机构,运行时正确的将其逻辑地址转换为物理地址。

解释执行指令的时候才进行地址的转换,必须要借助硬件电路完成,而不能用软件完成(效率考量)

主存储器空间的分配与去配

  1. 分配:进程装入主存时,存储管理软件进行具体的主存分配操作,并设置一个表格记录主存空间的分配情况
  2. 去配:当某个进程撤离或主动归还主存资源时,存储管理软件要收回它所占用的全部或者部分存储空间,调整主存分配表信息

主存储器空间的共享

  1. 多个进程共享主存储器资源:多道程序设计技术使若干个程序同时进入主存储器,各自占用一定数量的存储空间,共同使用一个主存储器
  2. 多个进程共享主存储器的某些区域:若干个协作进程有共同的主存程序块或者主存数据块

存储保护

为避主存汇总的多个进程相互干扰,必须对主存中的程序和数据进行保护:

  1. 私有主存区中的信息:可读可写
  2. 公共区中的基本信息:根据授权
  3. 非本进程信息:不可读写

这一功能需要软硬件协同完成:CPU 检查是否允许访问,不允许则产生地址保护异常,由 OS 进行相应处理:

  1. 地址越界保护依赖于硬件设施、常用的有界地址和存储键。
  2. 进程在访问分配给自己的内存区时,要对访问权限进行检查。

主存储器空间的扩充

存储扩充:把磁盘作为主存扩充,只把部分进程或进程的部分内容装入内存:扩大多道程序设计的道数

  1. 对换技术:把部分不运行的进程调出
  2. 虚拟技术:只调入进程的部分内容,对单一进程不使用对换技术完成,特点是自动化、透明。

这一工作需要硬件协助完成

  1. 对换进程决定对换,硬件结构完成调入
  2. CPU 处理到不在主存的地址,发出虚拟地址异常,OS 将其调入,重执指令

进程的内存为 4MB,一个页框 4KB,有 1024 个页框,页框表一共 16 个页框,页的压缩比是$\frac{1024}{16} = 64$。

虚拟存储器的概念

之前所介绍的存储管理,我们称为实存管理,必须为进程分配足够内存空间,装入其全部信息,否则无法运行。

虚拟存储器思想的提出

主存容量限制带来诸多不便:

  1. 用户编写程序必须考虑主存容量限制
  2. 多道程序设计的道数受到限制

用户编程行为分析:

  1. 全面考虑各种情况,执行时有互斥性
  2. 顺序性和循环性等空间局部性行为
  3. 某一阶段执行的时间局部性行为