5.2.5 移动技术、交换技术和覆盖技术
移动技术、交换技术和覆盖技术都是用于解决主存容量不足的存储管理技术。
1.移动技术
移动技术也称拼接、浮动或主存紧凑。通过移动主存中的作业(或进程)位置,集中分散的空闲区,以装入新的作业,提高内存空间的利用率。移动技术要求进程代码必须是动态重定位,并在移动时不允许被移动的进程运行。因为要改变进程的存放区域,涉及地址的信息如基寄存器、地址指针等都要进行修改。
当系统进行进程移动时,一般要停止其他所有工作,如移动的进程是否正与外围设备交换信息。若是,则暂不能移动该进程,等交换结束后才可移动;否则,可以移动该进程。移动会花费大量的CPU时间,加大系统资源消耗,现代操作系统一般不采用该技术。
2.交换技术
交换(swapping)技术广泛应用于小型分时系统的存储管理中,解决主存容量暂时不足的问题,并且常与单道连续分配和固定或可变分区多道管理等技术配合使用。
将内存中暂时不能运行的进程或暂时不用的程序和数据移到外存,以腾出足够空间把外存中已具备运行条件的进程或所需的程序与数据换进内存,这种技术称为交换或对换。交换技术是进程在内存与外存之间的动态调度。
交换技术的优点是可以保证合理的响应时间,并且利用外存来解决主存不足的问题。但这些优点是以花费处理机的时间为代价的(因为交换过程增加CPU时间开销),另外换出进程选择不当,可能会降低系统效率。交换技术的发展导致了虚拟存储技术的出现。
3.覆盖技术
覆盖(overlaying)是指一个作业的若干程序段,或多个作业的某些部分轮流使用同一段存储空间,是一种以时间换空间的内存扩充技术。其基本思想是将程序划分为若干个功能上相对独立的程序段,按照其自身的逻辑结构使那些不会同时执行的程序段共享同一块内存区,将程序的必要部分常驻内存,其他可选部分先保存在磁盘上,需要时再调入内存。不存在调用关系的程序段不必同时调入内存,因此可以相互覆盖。
覆盖技术通常和单道连续分配、固定分区和可变分区等存储管理技术配合使用。对于程序长度超出物理内存大小总和,或者超出固定分区大小而导致程序无法运行的情况,覆盖技术是一种解决办法。