操作系统3.1.3 内存空间扩充技术(覆盖与交换)
本节主要讲覆盖技术和交换技术,虚拟存储技术在后续小节会详细展开。
实现内存空间扩充的技术
一、覆盖技术
用于解决“程序大小超过物理内存总和”的问题。
思想:
将程序分为多个段,常用的段常驻在内存,不常用的段在需要时才从外存调入内存。
内存中分为一个“固定区”和若干个“覆盖区”,需要常驻内存的段放在“固定区”,调入后就不再调出(除非运行结束)。
不常用的段,放在覆盖区中,需要用的时候调入内存,用不到时调出内存。
一个固定区:存放最活跃的程序段,固定区的程序在运行过程中不会调入调出内存
若干个覆盖区:不可能同时被访问的程序段可共享一个覆盖区,覆盖区中的程序段在运行过程中会根据需要调入调出内存
缺点:必须有程序员声明覆盖结构,操作系统完成自动覆盖,因此对用户不透明,增加了用户的编程负担
所以覆盖技术只用于早期的操作系统中。
二、交换技术
思想:内存空间紧张时,系统将内存中某些进程暂时换出外存,把外存中某些已具备运行条件的进程换入内存(进程在内存与磁盘动态调度)
挂起:暂时换出外存等待的进程状态为挂起状态
挂起态又进一步细分为就绪挂起、阻塞挂起
三个问题:
1、应该在外存(磁盘)的什么位置保存被换出的进程?
磁盘区通常分为文件区和对换区两部分。
文件区主要用于存放文件,主要追求存储空间的利用率,因此对文件区空间管理采用离散分配方式;
对换区空间占磁盘空间很小的部分,被换出的进程数据就存放在对换区,由于对换的速度直接影响到操作系统的整体速度,因此对换区空间管理主要追求换入换出速度,因此通常采用连续分配方式。
总之,对换区的I/O速度比文件区的更快。
2、什么时候应该交换?
交换通常在许多进程运行过程中并且内存吃紧时进行,而系统负荷降低就暂停。
例如在许多进程运行时经常发生缺页,就说明内存紧张,此时可以换出一些进程;
如果缺页率明显下降,就可以暂停换出。
3、应该换出哪些进程?
可以优先换出阻塞进程;
可换出优先级低的进程;
为防止优先级低的进程在调入内存后很快被换出,有时系统还会考虑进程在内存的驻留时间。
(注意:PCB会常驻内存,不会被换出外存)
三、两种技术的区别
覆盖是在同一个程序或进程中的,交换是在不同进程(作业)之间的。
四、知识回顾与重要考点
本节主要考察选择题。