覆盖和交换
覆盖
如果在程序运行期间要将所有的程序数据装入内存,那么60G大的GTA5就需要60G的运行内存了。但是实际上在程序运行时,有些数据是暂时不需要的,他们可以暂时不装入内存这么快。比如下图:B模块和C模块是不会同时执行的,因此只需要在内存中空出一个10K的覆盖区,在需要B的时候将B存入,要C的时候将C存入,而不是将B和C都存入内存。
覆盖技术提升了内存的使用效率,将暂时不需要使用的信息留在了外存。但是哪些是需要使用的哪些是不需要使用的,需要在编写程序的时候需要指明,这增加了程序猿的负担和设计程序的难度,这种技术现在基本已淘汰
交换
交换的思想是,把处于等待状态,暂时不需要使用的程序移动到外存(换出);将准备好的,等待执行的进程移动到内存(换入)。通过动态调度平衡内存和外存的空间。采用了交换技术之后,挂起态可以细分为就绪挂起和阻塞挂起两种情况。
在外存中,将磁盘功能分为文件区和对换区。文件区主要用于存储文件,追求磁盘空间利用率,因此采用离散分配的方式;对换区只占小部分,用于存放被换出的进程数据,主要追求换入换出速度,因此采用连续分配的方式。
可以优先换出阻塞进程、优先级低的进程、内存驻留时间长的。进程的PCB会常驻于内存,因为需要通过PCB找到进程的数据被调出到了外存中的哪个地方,并且PCB是进程存在的证明,PCB调出外存会让计算机以为进程不存在了。