1、操作系统作业调度课 程 实 验 报 告专 业 年 级 课 程 名 称 操作系统 指 导 教 师 学 生 姓 名 学 号 实 验 日 期 实 验 地 点 实 验 成 绩 教务处制20 年 月 日实验项目名称作业调度实验目的及要求(二)实验目标1、加深作业概念的理解; 2、掌握选择作业调度算法的准则; 3、掌握作业调度算法。(三)实验要求1、编写程序完成实验内容; 2、对测试数据进行分析;3、撰写实验报告。实验内容1、 设计可用于该实验的作业控制块;2、 动态或静态创建多个作业; 3、 模拟先来先服务调度算法和短作业优先调度算法。4、 调度所创建的作业并显示调度结果(要求至少显示出各作业的到达时间
2、,服务时间,开始时间,完成时间,周转时间和带权周转时间); 5、 比较两种调度算法的优劣实验步骤1、 该实验的作业控制块为:struct jcb /作业控制块 char name10; /作业名 int reachtime; /作业到达时间 int starttime; /作业开始时间 int needtime; /作业需要运行的时间 int finishtime; /作业完成时间 float cycletime; /作业周转时间 float cltime; /作业带权周转时间 char state; /作业状态 struct jcb *next; /结构体指针 2、 动态或静态创建多个作业:
3、本实验创建了3个作业。作业创建的代码如下:void inital() /建立作业控制块队列 int i; printf(n输入作业数:); scanf(%d,&n); for(i=0;iname); getch(); p-reachtime=i; printf(作业默认到达时间:%d,i); printf(n输入作业需运行时间:); scanf(%d,&p-needtime); p-state=W; p-next=NULL; if(ready=NULL) ready=q=p; else q-next=p; q=p; 3、 模拟先来先服务调度算法和短作业优先调度算法:先来先服务算法:void f
4、cfs(int m) int i,iden; system(cls); inital(); for(i=0;istate=W&p-reachtimenext; while(p!=NULL&iden) ; if(iden) i-; printf(n没有满足要求的进程,需等待); times+; if(times100)printf(n时间过长);getch(); else running(p,m); /调用running()函数 final(); /调用running()函数 短作业优先调度算法:void sjf(int m) JCB *min; int i,iden; system(cls);
5、 inital(); for(i=0;istate=W&p-reachtimeneedtimeneedtime) min=p; p=p-next; while(p!=NULL) ; if(iden) i-; times+; if(times100)printf(nruntime is too long.error);getch(); else running(min,m); /调用running()函数 final(); /调用running()函数 4、 调度所创建的作业并显示调度结果如下:算法1先来先服务算法:算法2最短优先算法:5. 比较两种调度算法的优劣:两种算法所使用的数据如下: 作
6、业名作业所需的运行时间yyyy4zzzz6 从上面算法的运行结果看出: 先来先服务算法中: 三个作业的的平均周转时间为:6.500000 三个作业的的平均带权周转时间为:1.250000 最短优先算法中: 三个作业的的平均周转时间为:49.500000 三个作业的的平均带权周转时间为:10.000000从三组数据的分析可知:先来先服务算法比最短优先算法的在作业运行效率方面较好。实验环境计算机 Window7 Microsoft Visual C+6.0、“记事本”程序实验结果与分析该实验程序的结果的截图如下:1、开始界面:2、算法选择:3、算法1先来先服务:4、算法1下作业的运行情况:5、算法2最短作业优先:6、算法2下作业的运行情况:本实验用三组数据得出了先来先服务算法比最短优先算法更有效,使用不同的数据得出的结论可能会有偏差。教师评语注:可根据实际情况加页
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1