项目简介

进程调度模拟器是一个用于演示和比较不同进程调度算法性能的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

运行效果截图:
在这里插入图片描述

操作说明

  1. 启动程序后,界面已默认加载4个示例进程
  2. 可通过左侧表单添加新进程
  3. 选择顶部工具栏的算法按钮执行调度
  4. 在甘特图、调度明细、统计数据三个标签页查看结果
  5. 右侧面板实时显示性能指标卡片
  6. 点击"算法对比"可对比所有算法的性能
  7. 点击"清空数据"可重置所有内容
  8. 点击右上角红色×按钮安全关闭程序

项目结构

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应用开发最佳实践的示例项目。通过清晰的架构设计、美观的界面和丰富的算法实现,它为操作系统课程的教学和学习提供了强有力的支持。无论是用于课堂教学、自学研究还是课程项目展示,都是一个值得参考的优秀项目。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐