Skip to content

About

虚拟存储器管理模拟器(Java):请求分页 + 改进型 Clock 置换算法,实现地址转换、缺页中断与四轮扫描淘汰,支持手工输入与随机生成两种地址序列。

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 

Repository files navigation

Virtual Memory Management Simulator

请求分页存储管理 + 改进型时钟置换算法(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 / 无第三方依赖

About

虚拟存储器管理模拟器(Java):请求分页 + 改进型 Clock 置换算法,实现地址转换、缺页中断与四轮扫描淘汰,支持手工输入与随机生成两种地址序列。

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages