六、设计要求:
1. 每一个进程有一个PCB,其内容可以根据具体情况设定。
2. 进程数、进入内存时间、要求服务时间、优先级等均可以在界面上设定 3. 可读取样例数据(要求存放在外部文件中)进行进程数、进入内存时间、时
间片长度、进程优先级的初始化
4. 可以在运行中显示各进程的状态:就绪、执行 (由于不要求设置互斥资源
与进程间的同步关系,故只有两种状态)
5. 采用可视化界面,可在进程调度过程中随时暂停调度,查看当前进程的状态
以及相应的阻塞队列
6. 有性能比较功能,可比较同一组数据在不同调度算法下的平均周转时间 7. 具有一定的数据容错性
七、程序总设计流程图
读取进程 判断进程是否进入内存 是 否 对响应比排序高的进程先运行 等 待 结 束
6
八、程序运行结果及分析
输入两个进程a、b,在高响应比调度算法下的进程运行情况及各进程的性能分析如下:
输入四个进程A、B、C、D在高响应比算法下的调度顺序,通过响应比(优先权)的比较,判断进程调度的次序,提高的进程的调度性能。且高响应比调度算法适合于批处理操作。
7
九、结论
通过本次实验对用高响应比算法的优先调度算法有了更深入的理解和掌握,进一步巩固和复习操作系统的基础知识,更进一步的了解了结构化模块化程序设计的方法,提高了调试程序的技巧。同时使我们对进程调度模拟设计的各种算法有了更进一步的理解,在编写程序时所遇到的问题让我有了对操作系统更深层次的理解和掌握,知道操作系统这门课程实在是很重要的一门课程。
8
十、源代码
#include
char name[10]; float arrtime; float sertime; float startime; float finishtime; float zztime; float dqzztime; float power; };
P a[100];
void input(P *,int); void move(P *,int); void work(P *,int); void Gxyb(P *,int); void rate(P *,float);
void main() {
int N;
printf(\ ***********欢迎进入高响应比调度算法模拟界面********** \\n\
printf(\请输入进程的个数:\ scanf(\ input (a,N); Gxyb(a,N); }
void input(P *p,int N) {
int i;
for(i=0;i<=N-1;i++) { printf(\请输入第%d个进程的名字,到达时间,要求服务的时间 :\\n\ scanf(\ }
9
}
void work(P *p,int N) {
for(int i=0;i
void rate(P *p,int N) { ++e;
for(int m=N-1;m>=e;m--) if(p[m].arrtime<=p[e-1].finishtime)
p[m].power=(p[e-1].finishtime-p[m].arrtime+p[m].sertime)/p[m].sertime;
for(int i=e;i void move(P *p,int N) 10