• 内存空间的扩充
    • 覆盖技术
    • 交换技术
    • 虚拟存储技术

内存空间的扩充 - 图1

覆盖技术

覆盖技术用来解决程序大小超过物理内存总和问题。

思想:将程序分为多个段(多个模块),常用的段常驻内存,不常用的段在需要时调入内存

内存中分为一个固定区若干个覆盖区。把要常驻内存段放在固定区,调入后就不再调出(除非运行结束);不常用的段放在覆盖区,需要用到时调入内存,用不到时调出内存。

image.png

其中 A 一直运行,A 会调用 B 或 C(不会同时调用),B 会调用 D,C 会调用 E 或 F(不会同时调用)。可知 B、C 不可能同时进入内存,D、E、F 不可能同时进入内存,所以开辟两个覆盖区即可(节约内存)。

必须由程序员声明覆盖结构,操作系统完成自动覆盖。

缺点:对用户不透明,增加了用户编程负担

交换技术

思想:内存空间紧张时,系统将内存中某些进程暂时换出外存(挂起),把外存中某些已具备运行条件的进程换入内存(进程在内存与磁盘间动态调度)。

三个问题:

  1. 被换出的进程应该保存在外存(磁盘)的什么位置?
    • 磁盘存储空间分为对换区 & 文件区
    • 文件区:采用离散分配方式,存放文件(主要追求磁盘空间的利用率)
    • 对换区:采用连续分配方式,存放换出进程的数据(主要追求换出换入速度)
    • 对换区的 I/O 速度比文件区更快
  2. 什么时候应该换出?
    • 许多内存运行且内存吃紧时进行,而系统负荷降低就停止
  3. 应该换出哪些进程?
    • 优先换出阻塞进程
    • 优先换出优先级低的进程
    • 有的系统还会考虑驻留时间

注意:PCB 会常驻内存,不会被换出内存,换出的仅仅是进程的数据部分