请求分页存储管理 + 改进型时钟置换算法(Enhanced Clock)
本项目实现了一个虚拟存储器管理模拟系统,核心功能包括:
- 请求分页存储管理:逻辑地址 → 物理地址的地址变换过程可视化
- 改进型时钟置换算法:基于 (R, M) 访问位的四轮扫描淘汰策略
- 缺页处理与页表管理:页表项的加载、访问位/修改位维护
- 终端交互式输入:支持手工输入和随机生成两种地址序列
| 项目 | 说明 |
|---|---|
| 语言 | Java 17 |
| 编码 | UTF-8 |
| 依赖 | 无第三方依赖(纯 JDK) |
| 参数 | 值 |
|---|---|
| 页面大小 | 1 KB |
| 物理内存 | 10 KB(10 个页框) |
| 逻辑地址空间 | 0 ~ 65535(64 页) |
| 置换算法 | 改进型时钟(Enhanced Clock) |
# 编译
javac -encoding UTF-8 src/*.java
# 运行
java -cp src VirtualMemorySimulator运行后选择地址生成方式:
- 1 — 手工输入逻辑地址序列(空格分隔)
- 2 — 随机生成逻辑地址序列
src/
├── VirtualMemorySimulator.java # 主程序入口
├── Config.java # 系统配置(页面大小、内存大小)
├── PageTable.java # 页表管理
├── PageTableEntry.java # 页表项(页号、帧号、存在位、R/M位)
├── PhysicalMemory.java # 物理内存页框管理
├── ClockReplacer.java # 改进型时钟置换算法(四轮扫描)
├── AddressGenerator.java # 地址序列生成器(手工/随机)
└── OutputFormatter.java # 格式化输出(含驻留集展示)
基于 (R, M) 访问位的四轮扫描淘汰策略:
| 扫描轮次 | 查找目标 | 操作 |
|---|---|---|
| SCAN 1 | (R=0, M=0) | 最优淘汰:干净且未被引用 |
| SCAN 2 | (R=0, M=1) | 次优淘汰:脏页需写回;途经清 R 位 |
| SCAN 3 | (R=0, M=0) | 经过 SCAN 2 清 R 后重新扫描 |
| SCAN 4 | (R=0, M=1) | 兜底淘汰 |
[#01] 逻辑地址= 0 → 页号= 0, 偏移= 0
├── 事件: 缺页
├── 处理: 空闲页框装入 → Frame 0
└── 驻留集: [0]
[#02] 逻辑地址= 1024 → 页号= 1, 偏移= 0
├── 事件: 缺页
├── 处理: 空闲页框装入 → Frame 1
└── 驻留集: [0, 1]
- 杨松 — 长春理工大学 计算机科学技术学院 软件工程 实现语言 Java 17 / 无第三方依赖