操作系统作业调度实验报告_第1页
操作系统作业调度实验报告_第2页
操作系统作业调度实验报告_第3页
操作系统作业调度实验报告_第4页
操作系统作业调度实验报告_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、.实验二作业调度一. 实验题目1、编写并调试一个单道处理系统的作业等待模拟程序。作业调度算法:分别采用先来先服务(FCFS),最短作业优先(SJF)的调度算法。( 1)先来先服务算法: 按照作业提交给系统的先后顺序来挑选作业,先提交的先被挑选。( 2)最短作业优先算法: 是以进入系统的作业所提出的 “执行时间 ”为标准,总是优先选取执行时间最短的作业。二 . 实验目的:本实验要求用高级语言 (C 语言实验环境) 编写和调试一个或多个作业调度的模拟程序,了解作业调度在操作系统中的作用,以加深对作业调度算法的理解三 .实验过程单道处理系统作业调度1)单道处理程序作业调度实验的源程序: zuoye.

2、c执行程序 : zuoye.exe2) 实验分析:1、由于在单道批处理系统中,作业一投入运行,它就占有计算机的一切资源直到作业完成为止, 因此调度作业时不必考虑它所需要的资源是否得到满足,它所占用的CPU 时限等因素。2、每个作业由一个作业控制块JCB 表示, JCB 可以包含如下信息:作业名、提交时间、 所需的运行时间、所需的资源、作业状态、 链指针等等。 作业的状态可以是等待W(Wait) 、运行R(Run)和完成 F(Finish)三种状态之一。 每个作业的最初状态总是等待W。3、对每种调度算法都要求打印每个作业开始运行时刻、 完成时刻、周转时间、带权周转时间, 以及这组作业的平均周转时

3、间及带权平均周转时间。3) 流程图 :.代替二 . 最短作业优先算法代替三. 高响应比算法图一 . 先来先服务流程图4) 源程序 :#include #include #include #define getpch(type) (type*)malloc(sizeof(type)#define NULL 0int n;float T1=0,T2=0;int times=0;struct jcb/作业控制块char name10;/作业名int reachtime;/作业到达时间int starttime; /作业开始时间int needtime;/作业需要运行的时间float super;/作

4、业的响应比int finishtime;/作业完成时间float cycletime;/作业周转时间float cltime;/作业带权周转时间char state;/作业状态struct jcb *next;/结构体指针*ready=NULL,*p,*q;typedef struct jcb JCB;void inize()/初始化界面.printf(nntt*ttn);printf(tttt实验二 作业调度 n);printf(tt*ttn);printf(nnnttttt计算机学院软件四班n);printf(ttttt蓝小花 n);printf(ttttt3204007102n);pri

5、ntf(ttttt完成日期: 2006 年 11 月 17 号 );printf(nnntt请输入任意键进入演示过程n);getch();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;elseq-

6、next=p;q=p;void disp(JCB* q,int m)/显示作业运行后的周转时间及带权周转时间等if(m=3)/显示高响应比算法调度作业后的运行情况printf(n作业 %s正在运行,估计其运行情况:n,q-name);printf(开始运行时刻:%dn,q-starttime);printf(完成时刻: %dn,q-finishtime);.printf(周转时间: %fn,q-cycletime);printf(带权周转时间:%fn,q-cltime);printf(相应比 :%fn,q-super);getch();else/显示先来先服务, 最短作业优先算法调度后作业的运

7、行情况printf(n作业 %s正在运行,估计其运行情况:n,q-name);printf(开始运行时刻:%dn,q-starttime);printf(完成时刻: %dn,q-finishtime);printf(周转时间: %fn,q-cycletime);printf(带权周转时间:%fn,q-cltime);getch();void running(JCB *p,int m)/运行作业if(p=ready)/先将要运行的作业从队列中分离出来ready=p-next;p-next=NULL;elseq=ready;while(q-next!=p) q=q-next;q-next=p-ne

8、xt;p-starttime=times;/计算作业运行后的完成时间, 周转时间等等p-state=R;p-finishtime=p-starttime+p-needtime;p-cycletime=(float)(p-finishtime-p-reachtime);p-cltime=(float)(p-cycletime/p-needtime);T1+=p-cycletime;T2+=p-cltime;disp(p,m);/调用 disp()函数 , 显示作业运行情况times+=p-needtime;p-state=F;printf(n%shasbeenfinished!npressany

9、keytocontinue.n,p-name);free(p);/释放运行后的作业getch();.void super()/计算队列中作业的高响应比JCB *padv;padv=ready;doif(padv-state=W&padv-reachtimesuper=(float)(times-padv-reachtime+padv-needtime)/padv-needtimepadv=padv-next;while(padv!=NULL);void final()/最后打印作业的平均周转时间, 平均带权周转时间float s,t;t=T1/n;s=T2/n;getch();printf(n

10、n作业已经全部完成!);printf(n%d个作业的平均周转时间是:%f,n,t);printf(n%d个作业的平均带权周转时间是%f: nnn,n,s);void hrn(int m)/高响应比算法JCB *min;int i,iden;system(cls);inital();for(i=0;istate=W&p-reachtimesupermin-super) min=p;p=p-next;while(p!=NULL);if(iden).i-;times+;/printf(ntime=%d:tno JCB submib.wait.,time);if(times1000)printf(nr

11、untime is too long.error.);getch();elserunning(min,m);/调用 running()函数/forfinal();/调用 running()函数void sjf(int m)/最短作业优先算法JCB *min;int i,iden;system(cls);inital();for(i=0;istate=W&p-reachtimeneedtimeneedtime) min=p;p=p-next;while(p!=NULL) ;if(iden) i-; /printf(ntime=%d:tno JCB submib.wait.,time);times

12、+;if(times100)printf(nruntime is too long.error);getch();elserunning(min,m);/调用 running()函数 /forfinal();/调用 running()函数void fcfs(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时间过长 );

13、getch();elserunning(p,m);/调用 running()函数final();/调用 running()函数void mune()int m;system(cls);printf(nntt*ttn);printf(tttt作业调度演示n);printf(tt*ttn);printf(nnnttt1.先来先服务算法.);printf(nttt2.最短作业优先算法.);printf(nttt3.响应比高者优先算法);printf(nttt0.退出程序 .);printf(nntttt选择所要操作:);scanf(%d,&m);switch(m)case 1:fcfs(m);getch();system(cls);mune();.break;case 2:sjf(m);getch();system(cls);mune();break;case 3:hrn(m);getch();system(cls);mune();break;case 0:system(cls);break;default:pr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论