虚拟内存 - milkandbread/summary-interview GitHub Wiki
虚拟内存的定义:
虚拟内存是指具有请求调入功能和置换功能,能从逻辑上对内容容量加以扩充的一种存储器系统。
* 实质: 物理上不存在,利用海量外存进行内存“空间”的扩展。
* 逻辑容量: 取决于内存容量和外存容量之和。
虚拟内存的目标:
* 使得大的程序能在较小的内存中运行
* 使得多个程序能在较小的内存中运行
* 使得多个程序并发运行时地址不冲突
* 使得内存利用率变高
要实现虚拟内存需要解决的问题:
1. 部分程序代码在内存,可以运行吗? ----取页
2. 发现程序代码不在内存时,如何将其装入后继续运行? ----中断技术,将外存上的程序代码调入内存
3. 内存无空间怎么办? ----页面置换
工作原理
1 在程序装入时,不必将其全部读入到内存,而只需将当前需要执行的部分页或段读入到内存,就可以让程序开始执行。 ---部分装入
2 在程序执行过程中,如果需执行的指令或者访问的数据尚未在内存(发送缺页或缺段中断),则由处理器通知操作系统将相应的页或段调入到内存,然后继续执行程序。 --- 动态调入
3 另一方面,操作系统将内存中暂时不使用的页或段调出保存在外存上,从而腾出空间存放将要调入的页和段。 ---页面置换