实验二-作业调度实验.doc
《实验二-作业调度实验.doc》由会员分享,可在线阅读,更多相关《实验二-作业调度实验.doc(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精品文档,仅供学习与交流,如有侵权请联系网站删除西北农林科技大学信息工程学院实习报告课程 操作系统 学院 信息工程 专业年级 软件151 学号 2015012893 姓名 张鑫 周次 第八周 交报告时间 2017.5.5 成绩 实验二 作业调度实验一. 目的要求: 用高级语言编写和调试一个或多个作业调度的模拟程序,以加深对作业调度算法的理解。 二、实验内容:1、编写并调试一个单道处理系统的作业等待模拟程序。 作业等待算法:分别采用先来先服务(FCFS),最短作业优先(SJF)、响应比高者优先(HRN)的调度算法。 流程图如下:1、响应比高者优先算法流程图:2、先来先服务调度算法流程图:3、短作
2、业优先算法调度流程图:实验代码如下:#include#include#includestruct jcb char name10;/作业名 float arrtime;/提交时间 float waitTime;/等待时间 float startTime;/开始时间 float runTime;/运行时间 float finishTime;/完成时间 float TAtime; /周转时间 float TAWtimei;/带权周转时间 float AvgTAtime,AvgTAWtimei;/平均周转时间;平均带权周转时间 float bi;/响应比jcb JCB100;int ReadFile
3、() int m=0; int i=0; FILE *fp; /定义文件指针 fp=fopen(3.txt,r); /打开文件 if(fp=NULL) printf(File open error !n); exit(0); else printf(作业名 提交时间 运行时间n); while(!feof(fp) fscanf(fp,%s%f%f,&JCBi.name,&JCBi.arrtime,&JCBi.runTime); /fscanf()函数将数据读入 printf(n%s%15f%12f,JCBi.name,JCBi.arrtime,JCBi.runTime); /输出到屏幕 i+;
4、 fclose(fp); /关闭文件 m=i-1; return m;/菜单void menu() printf(nn |* 作业调度 *|n); printf( |=|n); printf( | 0.退出 |n); printf( | 1.先来先服务 (FCFS) 调度算法 |n); printf( | 2.短作业优先 (SJF) 调度算法 |n); printf( | 3.响应比高者优先 (HRRN) 调度算法 |n); printf( |=|n);void displayone(float p,char *h,int i,int j) strcpy(h,JCBi.name); strcp
5、y(JCBi.name,JCBj.name); strcpy(JCBj.name,h); p=JCBi.arrtime; JCBi.arrtime=JCBj.arrtime; JCBj.arrtime=p; p=JCBi.runTime; JCBi.runTime=JCBj.runTime; JCBj.runTime=p; p=JCBi.startTime; JCBi.startTime=JCBj.startTime; JCBj.startTime=p; p=JCBi.finishTime; JCBi.finishTime=JCBj.finishTime; JCBj.finishTime=p;
6、void displaytow(int i,int y) printf(n); printf(作业%s先开始运行nn,JCB0.name); float AvgCycleTime,AvgValueCycleTime,k=0,m=0;/AvgCycleTime为平均周转时间,AvgValueCycleTime为平均带权周转时间 for(i=0;iy;i+) JCB0.startTime=JCB0.arrtime; JCBi.finishTime=JCBi.startTime+JCBi.runTime;/结束时间 JCBi+1.startTime=JCBi.finishTime; JCBi.wai
7、tTime=JCBi.startTime-JCBi.arrtime;/等待时间 JCBi.TAtime=JCBi.finishTime-JCBi.arrtime;/周转时间 JCBi.TAWtimei=JCBi.TAtime/JCBi.runTime;/带权周转时间 k+=JCBi.TAtime; m+=JCBi.TAWtimei; AvgCycleTime=k/y;/平均旋转时间 AvgValueCycleTime=m/y;/平均带权旋转时间 printf(作业名 提交时间 开始时间 运行时间 结束时间 等待时间 周转时间 带权周转时间n); for(i=0;iy;i+) printf(%s
8、t%.2ft%.2ft%4.2ft%6.2ft%7.2ft%7.2ft%8.2fnn,JCBi.name,JCBi.arrtime,JCBi.startTime,JCBi.runTime,JCBi.finishTime,JCBi.waitTime,JCBi.TAtime,JCBi.TAWtimei); printf(平均周转时间为:); printf(%.2fnn,AvgCycleTime); printf(平均带权周转时间为:); printf(%.2fnn,AvgValueCycleTime);void FCFS(int y)/先来先服务算法 float p; int i,j; char
9、h100; for(i=0;iy;i+) for(j=i+1;jJCBj.arrtime) displayone(p,h,i,j); displaytow(i,y);void SJF(int y)/短作业优先算法 float p; int i,j; char h100; for(i=0;iy;i+)/先提交的作业先运行,后面来的作业再比较运行时间长短 for(j=i+1;jJCBj.arrtime)/先把作业按提交时间来排序 displayone(p,h,i,j); for(i=1;iy;i+) for(j=i+1;jJCBj.runTime)/比较后面来的作业的运行时间 displayone
10、(p,h,i,j); displaytow(i,y);void HRRN(int y)/响应比高者优先算法 int i,j; float p; char h100; for(i=0;iy;i+)/先提交的作业先运行,后面来的作业再比较响应比的大小 for(j=i+1;jJCBj.arrtime)/先把作业按提交时间来排序 displayone(p,h,i,j); for(i=0;iy;i+) JCB0.startTime=JCB0.arrtime; JCBi.finishTime=JCBi.startTime+JCBi.runTime;/结束时间 JCBi+1.startTime=JCBi.f
11、inishTime; JCBi.waitTime=JCBi.startTime-JCBi.arrtime;/等待时间 JCBi.TAtime=JCBi.finishTime-JCBi.arrtime;/周转时间 JCBi.bi=JCBi.TAtime/JCBi.runTime;/响应比 for(i=1;iy;i+) for(j=i+1;jy;j+) if(JCBi.biJCBj.bi)/比较后面来的作业的响应比 displayone(p,h,i,j); p=JCBi.bi; JCBi.bi=JCBj.bi; JCBj.bi=p; displaytow(i,y); for(i=1;iy;i+)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 作业 调度
限制150内