操作系统-3.2虚拟内存管理
1. 基础
虚拟存储器特性
- 多次性:作业运行时允许分多次调入内存
- 对换性:作业运行时不用常驻内存,不用的可以调至外存
- 虚拟性:逻辑上扩充内存,用户看到的内存容量>>实际容量
虚拟技术实现方式
- 请求分页
- 请求分段
- 请求段页式
2.请求分页
页表机制

新增P(是否调入内存)、A(访问次数)、M(是否被修改)、外存地址
缺页中断机构
进程执行任务
→缺页
→产生中断
→操作系统检查内存有无空位
有→放入
没有→采用置换算法踢出一个旧页面
地址变换机构
**查快表 **
- 命中 → 形成物理地址,结束
- 未命中 → ** 查页表**
- 页在内存 → 更新快表,形成物理地址,结束
- 页不在内存 →缺页中断
3.⭐页面置换算法
①最佳置换算法(OPT)
淘汰:今后最长时间内不再使用的页面

- 性能最好,但无法实现
②先进先出置换算法(FIFO)
淘汰:最早进入内存的页面
③最近最久未使用置换算法(LRU)
淘汰:最近最久未使用的页面
- 性能最接近OPT,但开销太大
④时钟置换算法(CLOCK)
- 每个页面设一个访问位,初始为0,被访问时置为1。
- 淘汰扫描到的第一个为0的页面。
- 若扫描到时为1,则置为0,继续向前扫描
例:
五个内存块,引用串:1 3 4 2 5 6 3 4 7

第一轮扫描,全部置为0
第二轮扫描,从1开始。1号页面访问位为0,淘汰,将6放入。以此类推
⑤改进型的时钟置换算法
增加一个修改位:若被淘汰页面未被修改则不用写回外存。仅写回修改过的页面。

- 第一优先级:0,0
- 第二优先级:0,1 最近未访问有修改
- 第三优先级:1,0 最近有访问未修改
- 第四优先级:1,1
最多4轮扫描
4. 页面分配
驻留集大小:给一个进程分配的页框的集合
- 太小:缺页率上升
- 太大:浪费内存
①固定分配:驻留集大小不变
②可变分配
③局部置换:缺页时只能从自己的物理块进行置换
④全局置换
①④不可组合
- 抖动现象
- 产生原因:进程频繁访问页面数>可用物理块数
5. 内存映射文件
open打开文件
mmap文件映射到进程的虚拟地址空间
不用read,write
操作系统自动调入内存、写出
多个进程可以映射到同一文件,实现共享
效率更高
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 BaBaLiBoo!


