传统内存管理的缺陷:
①程序很大时,不能全部装入内存,导致大作业无法运行;
②当大量程序要求运行时,由于内存无法容纳所有作业,因此只有少量作业能运行,导致多道程序并发度下降。
而我们只需要在一个时间段内,访问程序里面的一小部分数据即可,大量的内存驻留就导致了浪费,于是有了虚拟内存管理。
虚拟内存管理
原理:基于局部性原理,将即将使用到的部分装入内存,而暂时用不到的留在外存。当将访问的信息不在内存时,就触发了缺页异常。
缺页异常
当 CPU 访问的页面不在物理内存时,便会产生一个缺页中断,请求操作系统将所缺页调入到物理内存,步骤如下:
- 缺页中断在指令执行「期间」产生和处理中断信号,不同于一般中断:一般中断在一条指令执行「完成」后检查和处理中断信号。
- 缺页中断返回到该指令的开始重新执行「该指令」,而一般中断返回回到该指令的「下一个指令」执行。