- 内存空间的扩充
- 覆盖技术
- 交换技术
- 虚拟存储技术
覆盖技术
覆盖技术用来解决程序大小超过物理内存总和问题。
思想:将程序分为多个段(多个模块),常用的段常驻内存,不常用的段在需要时调入内存
内存中分为一个固定区和若干个覆盖区。把要常驻内存段放在固定区,调入后就不再调出(除非运行结束);不常用的段放在覆盖区,需要用到时调入内存,用不到时调出内存。
其中 A 一直运行,A 会调用 B 或 C(不会同时调用),B 会调用 D,C 会调用 E 或 F(不会同时调用)。可知 B、C 不可能同时进入内存,D、E、F 不可能同时进入内存,所以开辟两个覆盖区即可(节约内存)。
必须由程序员声明覆盖结构,操作系统完成自动覆盖。
缺点:对用户不透明,增加了用户编程负担
交换技术
思想:内存空间紧张时,系统将内存中某些进程暂时换出外存(挂起),把外存中某些已具备运行条件的进程换入内存(进程在内存与磁盘间动态调度)。
三个问题:
- 被换出的进程应该保存在外存(磁盘)的什么位置?
- 磁盘存储空间分为对换区 & 文件区
- 文件区:采用离散分配方式,存放文件(主要追求磁盘空间的利用率)
- 对换区:采用连续分配方式,存放换出进程的数据(主要追求换出换入速度)
- 对换区的 I/O 速度比文件区更快
- 什么时候应该换出?
- 许多内存运行且内存吃紧时进行,而系统负荷降低就停止
- 应该换出哪些进程?
- 优先换出阻塞进程
- 优先换出优先级低的进程
- 有的系统还会考虑驻留时间
注意:PCB 会常驻内存,不会被换出内存,换出的仅仅是进程的数据部分