用高级语言仿真实现一个通用处理机调度演示程序。基本要求如下:
(1)进程调度算法包括:先来先服务算法、短作业优先算法、静态优先权调度算法以及高响应必优先调度算法,并采用菜单进行算法的选择;
(2)每一个进程由一个PCB标识,其内容可以根据具体情况设定;
(3)进程数、进入内存时间、要求服务时间、作业大小、优先级等可以在界面设定,也可以从外部文件中读取样例数据;
(4)在运行中显示各进程的状态:就绪和执行;
(5)采用可视化界面,可在进程调度过程中随时暂停调度,查看当前进程的状态;
(6)有算法的性能比较功能,可以比较同一组数据在不同调度算法下的平均周转时间;
(7)有一定的数据容错能力。
NOTES:
虽然最近比较忙,但是还是头铁的选择了自己写代码,而不是copy网上的,所有代码都是我自己写的,由于水平限制所以难免有问题,希望大家多指正,参考时请自行测验,代码后面写的那些测试案例得出的结果是正确的。
题目要求中的4、5两项要求由于时间原因,而且我没能清楚理解第四个要求的意义(个人觉得因为只让显示就绪或者执行,那么显示出来的自然就是执行的,其他的自然就是就绪了),所以没有写这个 步骤;第五个要求因为要每一步都输入一个字符让其继续运行,导致页面过于混乱,操作过于复杂,所以我选择了去掉。
另外:还是由于时间原因我没有考虑当一个进程运行完以后,就绪队列中没有任何一个进程的情况
希望各位同学以后在做课程设计时还是应当尽量追求完美,忙于考研,我已经不能再去熬一夜了。。。
总结:
这可能是我目前为止独立写的最长的代码,熬了两次夜,起来俩痘......,不过收获颇多
1:写程序之前先构造了大体框架,感受到了盖房子的过程
2:代码中命名、注释、缩进等基本统一标准,整体美观
3:实现某个功能的各个函数之间相对独立(比如:Calculate和Output)方便单独调用和修改
发现的问题:
1:虽然有了大体框架,但是对各个部分了解不深就草草开写,导致最开始写出的几个算法都出现逻辑错误,不得不修改大部分代码,浪费了很多时间。
2:刚开始时函数的功能不够独立,比如Output中包含了计算和输出两部分,要计算就不得不输出,当然,下面的代码中我已经修改了。
3:...问题还有许多,希望大佬们多指正,代码错误或者代码习惯不好都可以,欢迎大家留言
总之,很开心能独立快速的写出这个课程设计,革命尚未成功,同志还需努力。
代码(使用DEV编写):
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<string>
#include<windows.h>
#define maxn 30
#define INF 10000
using namespace std;
//函数声明
int Turn();
int Menu();
int Select();
int Input();
int FCFS(int n,bo