# 4.6 虚拟内存基本概念 ## 一、虚拟内存的基本概念 ### 1.1 什么是虚拟内存 **虚拟内存**:基于局部性原理,将程序的一部分装入内存,其余部分留在外存,需要时再调入内存。 **特点**: - 逻辑上扩充内存容量 - 物理上内存和外存结合 - 对用户透明 ### 1.2 局部性原理 **时间局部性**: - 最近被访问的存储单元,短期内可能被再次访问 - 原因:循环、子程序、堆栈等 **空间局部性**: - 最近被访问的存储单元,其邻近单元可能被访问 - 原因:顺序执行、数组访问等 --- ## 二、虚拟内存的特征 ### 2.1 多次性 **定义**:一个作业可以分多次调入内存。 **意义**: - 不需要一次性装入整个程序 - 节省内存空间 ### 2.2 对换性 **定义**:作业在运行过程中可以换入换出。 **意义**: - 暂时不用的部分换出到外存 - 需要时再换入内存 ### 2.3 虚拟性 **定义**:逻辑上扩充内存容量。 **意义**: - 用户感觉内存容量很大 - 实际物理内存可以很小 --- ## 三、虚拟内存的实现方式 ### 3.1 请求分页存储管理 **基本思想**: - 在分页基础上增加请求调页功能 - 页面不在内存时产生缺页中断 - 将所需页面调入内存 ### 3.2 请求分段存储管理 **基本思想**: - 在分段基础上增加请求调段功能 - 段不在内存时产生缺段中断 - 将所需段调入内存 ### 3.3 请求段页式存储管理 **基本思想**: - 结合请求分页和请求分段 - 先分段,再分页 - 以页为单位调入调出 --- ## 四、虚拟内存的硬件支持 ### 4.1 页表机制 **页表项增加字段**: - 状态位:该页是否在内存 - 访问位:该页是否被访问过 - 修改位:该页是否被修改过 - 外存地址:该页在外存的地址 ### 4.2 缺页中断机构 **缺页中断**: - 访问的页面不在内存时产生 - 属于内部中断(异常) - 需要操作系统处理 **处理过程**: 1. 保护CPU现场 2. 从外存找到所需页面 3. 如果内存满,选择页面换出 4. 将所需页面调入内存 5. 修改页表 6. 恢复CPU现场,重新执行 ### 4.3 地址变换机构 **地址变换**: - 检查页是否在内存 - 如果在,直接转换地址 - 如果不在,产生缺页中断 --- ## 五、考研重点 1. **虚拟内存的基本概念**:什么是虚拟内存 2. **局部性原理**:时间局部性、空间局部性 3. **虚拟内存的特征**:多次性、对换性、虚拟性 4. **实现方式**:请求分页、请求分段、请求段页式 5. **硬件支持**:页表机制、缺页中断、地址变换 --- *下一节:4.7 请求分页管理方式*