课程
1811 字
约 6 分钟
大三上
实验六 虚拟存储器 题目整理
操作系统labs/lab06·更新于 2026-09-15
实验六 虚拟存储器 题目整理
本文件根据原始实验题目材料整理,已统一为适合 GitHub 提交的 Markdown 版本。
题目材料 1:实验六 虚拟存储器 指导书
实验六 虚拟存储器
一、 实验目的
本实验旨在帮助学生理解在分页存储管理系统中虚拟存储器的实现机制。通过模拟硬件地址变换、缺页中断处理以及页面置换算法,深入掌握虚拟内存的工作原理。
二、 实验内容
本实验包含三个主要任务。任务 1 为必做项,任务 2 和任务 3 可任选其一(建议全部实现以进行对比)。
任务 1:模拟硬件地址变换与缺页中断
模拟硬件 MMU (Memory Management Unit) 的地址变换逻辑。 在此过程中,如果访问的页面在内存中(Flag=1),则计算并输出绝对地址;如果页面不在内存中(Flag=0),则模拟产生缺页中断。
1. 系统参数
- 页面大小 (Block Size): 1KB (1024 字节)
2. 初始页表 (Page Table)
| 页号 (Page No) | 标志 (Flag) | 块号 (Block No) | 磁盘地址 (Disk Address) |
|---|---|---|---|
| 0 | 1 | 5 | 011 |
| 1 | 1 | 8 | 012 |
| 2 | 1 | 9 | 013 |
| 3 | 1 | 1 | 021 |
| 4 | 0 | - | 022 |
| 5 | 0 | - | 023 |
| 6 | 0 | - | 121 |
注:Flag=1 表示页面在内存中,Flag=0 表示页面不在内存中。
3. 指令序列
共 12 条指令,每条指令格式为 (操作, 页号, 页内地址):
(+, 0, 070)(+, 1, 050)(*, 2, 015)(存, 3, 021)(取, 0, 056)(-, 6, 040)(移位, 4, 053)(+, 5, 023)(存, 1, 037)(取, 2, 078)(+, 4, 001)(存, 6, 084)
4. 处理逻辑
- 对于每条指令,检查其访问的页号:
- 若
Flag == 1:计算物理地址Physical Address = Block No * 1024 + Offset。 - 若
Flag == 0:输出* Page No表示发生缺页中断。
- 若
任务 2:FIFO (先进先出) 页面置换算法
在任务 1 的基础上,当发生缺页中断且内存已满时,模拟操作系统进行页面置换。
算法描述
- FIFO 算法:总是选择最早进入内存的页面进行淘汰。
- 模拟时需维护页面进入内存的顺序。
- 考虑页面的“修改位”:如果被淘汰的页面在内存期间被修改过(“存”操作),则需要写回磁盘(模拟)。
任务 3:LRU (最近最久未使用) 页面置换算法
在任务 1 的基础上,当发生缺页中断且内存已满时,模拟操作系统进行页面置换。
算法描述
- LRU 算法:选择最近最长时间未被访问的页面进行淘汰。
- 模拟时需记录每个页面的最后访问时间。
- 同样需要考虑“修改位”的处理。
三、 实验报告要求
- 数据结构说明:不仅要说明主要变量和数组的含义,还应说明各个结构体或类的定义(如页表项结构、指令结构等)。
- 运行结果展示:
- 打印初始页表状态。
- 打印指令执行过程中的地址变换结果或缺页处理信息。
- 打印缺页次数和缺页率。
- 对比分析:
- 结合输出结果,分析 FIFO 和 LRU 算法在缺页率和性能上的差异。
- (可选) 画出程序流程图。
四、 附录:流程图参考
(文档中包含了硬件地址变换、FIFO 算法和 LRU 算法的流程图,编码时可参考上述逻辑描述)













