基于Java Swing 可视化模拟进程调度(代码开源)


前言

大三上计算机系统II的实验项目三:模拟进程调度算法。


一、项目需求分析

实验默认采用单核CPU,选择最简洁的进程调度模型,即:进程由创建进入就绪队列,就绪队列经过调度到CPU 执行,进程执行时间片完重新进入就绪队列等待调度;处于执行状态的进程过程中由于申请资源进入阻塞队列,申请到对应的资源后,重新进入就绪队列等待调度(如下图)。
进程调度模型图

本次实验打算采用三种调度算法:先来先服务(FIFO)、时间片轮转和优先级调度算法。
在选择优先级调度算法后,发布进程时,可设置进程的权重,当发布进程的权重值高于当前进程的权重值时,将当前进程撤销CPU 资源,进入就绪队列,将CPU 资源分配给权重值较高的进程。其余两种策略的进程权重值默认为1。


二、项目介绍

本次实验利用Java Swing 可视化模拟进程调度,将进程发布模型抽象为老师学生模型,一个老师(进程发布者)可以发布多个作业(进程),作业可设置权重值,作业在完成过程中需要学生去查阅其他相关资料(进程在执行过程中需要去申请其他资源),学生(CPU)按照指定的策略完成所有作业。



三、项目演示

项目演示
上图采用权重优先调度算法。在进程发布的时候,可以设定其优先权重值(默认值越大权重值越大)和该进程在执行过程中所需资源。当进程进入就绪队列后,如果当前CPU处于空闲状态,则直接执行;如果当前CPU以被其他进程占用,判断进程的优先权重值,如果大于正在执行的进程,则剥夺CPU资源,将其放回就绪队列,再由就绪状态转为执行状态。如果进程在执行过程中需要申请其他资源,则该进程由执行状态阻塞进入阻塞队列,获得相应的资源后,重新进入就绪队列等待调度执行。


四、项目地址

项目托管在Gitee上,为开源项目,可供学习参考与非商用使用,侵权必究。
模拟进程调度实验


五、总结

在本次实验过程中,思路比较清晰,但在界面可视化实现时,出现太多问题。
在界面实现之前没有认真分析每一个Panel细节应该怎么设计,应该怎么体现实验要求的部分,总是想到哪就做到哪,浪费了很多时间,且容易出现不合理的设置,甚至Bug。同时没有系统的学习Java Swing,总是在界面的实现细节上处理不到位,各种监听的转换啊等等,理解得都不透彻。

  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值