覆盖和交换是在多道程序环境下用来扩充内存的两种方法。
1.覆盖
早期的计算机系统中,主存容量小,虽然主存中仅存放一道用户程序,但是存储空间放不下用户进程的现象也经常发生,这一矛盾可以用覆盖基础来解决。
覆盖的基本思想是:由于程序运行时并非任何时候都要访问程序及数据的各个部分(尤其是大程序),因此可以把用户空间分成一个固定区和若干覆盖区。将经常活跃的部分放在固定区。其余部分按调用关系 分段。首先将那些即将要访问的段放入覆盖区,其他段放在外存中,在需要调用前,系统将其调入覆盖区,替换覆盖区中原有的段。
覆盖技术的特定时打破了必须将一个进程的全部信息装入主存后才能运行的限制,但当同时运行的代码量大于主存时仍然不能运行。
2.交换
交换(对换)的基本思想是,把处于等待状态(或在CPU调度原则下被剥夺运行权利)的程序从内存移到辅存,把内存空间腾出来,这个过程叫做换出。把准备好竞争CPU运行的程序从辅存移到内存,这个过程又称为换入。
例如,有一个CPU采用时间片轮转调度算法的多道程序环境。时间片到,内存 管理器将刚刚执行的进程换出,将另一进程换入到 刚刚释放的内存空间中。同时,CPU调度器