进程调度模拟器:一个现代化的JavaFX教学与演示工具
·
项目简介
进程调度模拟器是一个用于演示和比较不同进程调度算法性能的Java应用程序。该程序使用JavaFX构建现代化图形用户界面,采用浅蓝浅紫渐变风格设计,能够直观可视化展示各种调度算法的执行过程和结果。
功能特性
调度算法实现
- FCFS(先来先服务):按照进程到达的先后顺序进行调度
- SJF(最短作业优先):优先执行预计运行时间最短的进程
- SRTF(最短剩余时间优先):抢占式的最短作业优先算法
- HRRN(最高响应比优先):基于响应比的非抢占式调度算法
- Priority(优先级调度):基于优先级的调度算法
- Round Robin(时间片轮转):使用固定时间片的循环调度算法
- MLFQ(多级反馈队列):多级反馈队列调度算法
主要功能
- 进程创建和管理(支持自定义进程ID、到达时间、服务时间、优先级)
- 甘特图可视化展示调度过程
- 三栏式布局界面设计(进程管理、甘特图/调度明细/统计数据、性能分析)
- 实时性能指标卡片展示(平均周转时间、平均等待时间、CPU利用率)
- 算法比较分析功能
- 现代化图形用户界面操作
- 窗口安全关闭:支持运行状态检测和线程安全终止,避免资源泄漏
界面设计
- 浅蓝(#7B93F2) + 浅紫(#B49CFF)渐变主题风格
- 三栏式标准布局,分区清晰
- 卡片式设计,圆角边框,柔和阴影
- 统一的按钮、输入框、表格样式
- 醒目的红色关闭按钮,居中的项目标题
- 简洁直观的标签页切换
算法优化特性
- 边界场景处理:所有算法均支持多进程同时到达、相同服务时间/优先级等边界场景,采用到达时间作为兜底排序规则
- 抢占逻辑优化:SRTF算法抢占条件逻辑清晰,精确判断新进程到达时的抢占触发条件
- 饥饿防护机制:MLFQ算法添加进程老化机制,防止低优先级进程长期等待
- 计算精度保障:使用BigDecimal进行性能指标计算,避免浮点数精度丢失
- 性能优化:Round Robin和MLFQ算法使用HashMap优化进程索引查找,将O(n)查找优化为O(1)
- 线程安全:窗口关闭时采用join等待和异常处理机制,确保资源正确释放
技术栈
- 编程语言:Java 21
- GUI框架:JavaFX 21
- 构建工具:Maven
使用方法
方式一:运行控制台测试
mvn exec:java "-Dexec.mainClass=org.example.simulator.util.TestScheduler"
方式二:运行图形界面
mvn javafx:run
运行效果截图:
操作说明
- 启动程序后,界面已默认加载4个示例进程
- 可通过左侧表单添加新进程
- 选择顶部工具栏的算法按钮执行调度
- 在甘特图、调度明细、统计数据三个标签页查看结果
- 右侧面板实时显示性能指标卡片
- 点击"算法对比"可对比所有算法的性能
- 点击"清空数据"可重置所有内容
- 点击右上角红色×按钮安全关闭程序
项目结构
src/main/java/org/example/simulator/
├── algorithm/ # 调度算法实现
│ ├── FCFSAlgorithm.java
│ ├── SJFAlgorithm.java
│ ├── SRTFAlgorithm.java
│ ├── HRRNAlgorithm.java
│ ├── PriorityAlgorithm.java
│ ├── RoundRobinAlgorithm.java
│ ├── MLFQAlgorithm.java
│ └── SchedulingAlgorithm.java
├── model/ # 数据模型
│ ├── Process.java
│ ├── GanttChart.java
│ ├── GanttBlock.java
│ └── SchedulingResult.java
├── ui/ # JavaFX界面
│ ├── HelloApplication.java
│ ├── HelloController.java
│ ├── hello-view.fxml
│ └── styles.css # 界面样式
└── util/ # 工具类
├── ProcessInputUtil.java
└── TestScheduler.java
适用场景
- 操作系统课程教学演示
- 算法性能比较研究
- 进程调度概念学习
- 计算机科学教育工具
- 课程答辩展示
许可证
本项目采用 MIT 许可证。
项目链接
- Gitee仓库:https://gitee.com/ordinary-world3/process_scheduling_simulator_main
- 欢迎Star、Fork和贡献代码!
总结
这个进程调度模拟器不仅是一个功能完整的教学工具,更是一个展示现代JavaFX应用开发最佳实践的示例项目。通过清晰的架构设计、美观的界面和丰富的算法实现,它为操作系统课程的教学和学习提供了强有力的支持。无论是用于课堂教学、自学研究还是课程项目展示,都是一个值得参考的优秀项目。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)