下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验二作业调度一.实验题目1、编写并调试一个单道处理系统的作业等待模拟程序。作业调度算法:分别采用先来先服务(FCFS,最短作业优先(SJF)的调度算法。(1) 先来先服务算法:按照作业提交给系统的先后顺序来挑选作业,先提交的先被挑选。(2) 最短作业优先算法: 是以进入系统的作业所提出的执行时间”为标准,总是优先选 取执行时间最短的作业。二.实验目的:本实验要求用高级语言 (C语言实验环境)编写和调试一个或多个作业调度的模拟程 序,了解作业调度在操作系统中的作用,以加深对作业调度算法的理解实验过程< 一 >单道处理系统作业调度1)单道处理程序作业调度实验的源程序:zuoye.c执
2、行程序:zuoye.exe2)实验分析:a蜡化号育的MB険JCB搜件业皿fflBiaian先后11解詩队 ffOS tiles ;=0作业ff苗运齐的时勦等A计遵并打耳症行您业,的完阪时SJ flXtl 周转时间eye Ittim E带权周转时间cltime 芫成吋间匸笄赠运行时间+需要运疔时间 周转时间-完成时何到达时间带权周转时间-周转时间f需要运厅时间1、由于在单道批处理系统中,作业一 投入运行,它就占有计算机的一切资源 直到作业完成为止,因此调度作业时不 必考虑它所需要的资源是否得到满足, 它所占用的CPU时限等因素。2、 每个作业由一个作业控制块JCB表 示,JCB可以包含如下信息:
3、作业名、 提交时间、所需的运行时间、所需的资 源、作业状态、链指针等等。作业的状 态可以是等待 W(Wait)、运行R(Run) 和完成F(Finish)三种状态之一。每个 作业的最初状态总是等待 W3、对每种调度算法都要求打印每个作 业开始运行时刻、完成时刻、周转时间、 带权周转时间,以及这组作业的平均周 转时间及带权平均周转时间。苗磁列空?空S改旳询* Um电2的值 tiines: = times+作业丄的需要 迄 mrffl3)流程图:计算井打印返迴1T业旳平坤冊r飓舷平均周时间代替S思执厅时lE S道的ft业力此时S二.最短作业优先算法JI先中MfTT卄业的鬲帧出心总是 逵护明i比fi
4、丙踽忙ft茸馆力獻債W 垂疗瞬幷修改桓抽前州,记下在三.高响应比算法图一.先来先服务流程图4)源程序:#i nclude <stdio.h>#i nclude <stdlib.h>#in clude <coni o.h>#defi ne get pch(t ype) (typ e*)malloc(sizeof(t ype)#define NULL 0int n;float T1=0,T2=0;int times=0;struct jcbchar name10; / int reachtime; int starttime;, int n eedtime; f
5、loat super; int fini shtime; float cycletime; float cltime; char state; struct jcb *n ext; *ready=NULL,* p,*q; typ edef struct jcb JCB;/void in ize()/作业控制块作业名作业到达时间作业开始时间作业需要运行的时间作业的响应比作业完成时间作业周转时间作业带权周转时间 作业状态 结构体指针初始化界面printf("nntt*ttn"); printf("tttt实验二作业调度 n");prin tf("t
6、t*ttn");prin tf("nnnttttt计算机学院软件四班n");printf("ttttt蓝小花 n");完成日期:2006年11月17号”); 请输入任意键进入演示过程 n");prin tf("ttttt3204007102n");prin tf("tttttprin tf("nnntt getch();/建立作业控制块队列,先将其排成先来先服务的模式队列void in ital()int i;printf("n 输入作业数:”); sca nf("%d&qu
7、ot;,&n);for(i=0;i< n;i+)p=get pchJCB);printf("n输入作业名:");sca nf("%s", p->n ame);getch();p-> reachtime=i;prin tf("作业默认到达时间:%d",i);printf(”n输入作业要运行的时间:”);sca nf("%d",&p->n eedtime);p->state='W'p-> next=NULL;if(ready=NULL) ready=q
8、=p;elseq->n ext=p;q=p;void dis pJCB* q,i nt m) if(m=3)prin tf("n printf(” printf(”/显示作业运行后的周转时间及带权周转时间等显示高响应比算法调度作业后的运行情况作业s正在运行,估计其运行情况:n",q-> name);开始运行时刻:%dn",q->starttime);完成时刻:%dn",q->fi nishtime);printf(”printf(”printf(” getch();else /周转时间:%fn",q->cyclet
9、ime); 带权周转时间:%fn ",q->cltime); 相应比:%fn",q->super);显示先来先服务,最短作业优先算法调度后作业的运行情况prin tf("n printf(” printf(” printf(” printf(” getch();作业5正在运行,估计其运行情况:n",q->name);开始运行时刻:%dn",q->starttime);完成时刻:%dn",q->fi nishtime);周转时间:%fn",q->cycletime);带权周转时间:%fn ”
10、,q->cltime);void runnin g(JCB *p ,i nt m)/运行作业if(p=ready)/ready=p->n ext;p-> next=NULL;elseq=ready;while(q->n ext!=p) q=q->n ext;q->n ext =p->n ext;p->starttime=times; /p->state='R'p->fi nishtime=p->starttime+p-> needtime; p-> cycletime=(float) (p->f
11、ini shtime-p-> reachtime); p->cltime=(float) (p-> cycletime/p->n eedtime); T1+=p->cycletime;T2+=p->cltime;dis p(p ,m);/times+=p->n eedtime;p->state='F'prin tf("n%scon ti nu e.n", p->n ame);free( p);/getch();先将要运行的作业从队列中分离出来计算作业运行后的完成时间,周转时间等等调用disp()函数,显示
12、作业运行情况hasbee nfini shed!np ressany key to释放运行后的作业计算队列中作业的高响应比/void super()JCB *p adv;p adv=ready;doif(p adv->state='W'&&p adv->reachtime<=times)p adv->s up er=(float)(times-p adv->reachtime+padv- >n eedtime)/padv- >n eedtime p adv=p adv- >n ext;while( padv!=NU
13、LL);/最后打印作业的平均周转时间,平均带权周转时间作业已经全部完成r); 个作业的平均周转时间是:f", n,t);个作业的平均带权周转时间是%f: nnn”,n,s);void fin al()float s,t; t=T1/ n; s=T2/n; getch(); prin tf("nn prin tf("n%d prin tf("n%d/ 高响应比算法void hrn (i nt m)JCB *mi n;int i,ide n;system("cls");ini tal();for(i=0;i< n;i+)p=min=
14、ready;ide n=1;sup er();doif(p staten-W&&p->reachtime<=times) if(ide n)min=p ;ide n=0;else if(p->super>min->super) min=p;p=p->n ext;while( p!=NULL);if(ide n)i-;times+;/prin tf("ntime=%d:t no JCB submib.wait.",time); if(times>1000)prin tf("nrun time is too I
15、on g.error.");getch();else running(min, m); /forfin al();/调用running()函数调用running()函数void sjf(i nt m) /最短作业优先算法JCB *mi n; int i,ide n; system("cls"); ini tal(); for(i=0;i< n; i+)p=min=ready;ide n=1;doif(p staten-W&&p->reachtime<=times) if(ide n)min=p ;ide n=0;else if(p
16、->n eedtime< min->n eedtime) min=p;p=p->n ext;while( p!=NULL);if(ide n) i-; /prin tf("ntime=%d:t no JCB submib.wait.",time); times+;if(times>100) prin tf("nrun time is too Ion g.error");getch(); else调用running()函数runnin g(mi n, m);/ /for调用running()函数fin al();/void f
17、cfs(i nt m)/先来先服务算法int i,ide n;system("cls");in ital();for(i=0;i< n;i+)p=ready;ide n=1;doif(p->state='W'&&p-> reachtime<=times) ide n=0;if(ide n)p=p->n ext;while( p!=NULL&&ide n);if(ide n)没有满足要求的进程,需等待”);i-;prin tf("n时间过长”);getch();times+;if(time
18、s>100) prin tf("n调用runningO 函数elserunnings, m); /调用running。函数fin al();/ void mun e()int m;system("cls");作业调度演示n");,*ttn");先来先服务算法."); 最短作业优先算法."); 响应比高者优先算法"); 退出程序.");选择所要操作:”);printf("nntt*ttn");prin tf("ttttprin tf("ttprin tf(&qu
19、ot;nnnttt1.prin tf("nttt2.prin tf("nttt3.prin tf("nttt0.prin tf("nn ttttscan f("%d", &m);switch(m)case 1:fcfs(m); getch(); system("cls"); mun e();break;case 2: sjf(m); getch(); system("cls"); mun e(); break;case 3: hrn(m); getch(); system("c
20、ls"); mun e(); break;case 0: system("cls"); break;选择错误,重新选择");default: printf(” getch(); system("cls"); mu ne();main ()in ize(); mun e();/ 主函数5)调试结果:1.选择操作的界面亘TE:課程课件计算欖操作系统喋作系统实验八作业a度zuoye.exe"作业调度演示MHMH以MMMJwMaMHMHaMiaMaHJiMHKHaBaHMMH闻輦SaaMMMMM其兽.祛 算先优 务优者- 服业高序
21、来短应出 先最响退 12-342.输入操作初始信息:回“"慄程課件册算机*輸入作业数汚Bi潮帚=c:a佥讎Ss时间斤入作血要运行的时间=23.先来先服务算法作业调度结果:(调度顺序:a->b->c->d->e):4.eeeeee;1.666003作业毋生运行,估廿其运行情况* 开始运厅时刻.0 完成吋刻:4 曙8;龜同;作业b正在运行,估计其运行情况; 开始运實时刻=4完成吋刻:7港时间.&.306066帶杖甬转时间:2-000000a hos been finished*»pess any We屮 to continue.«.b
22、ha£ been F in Is lied!pFess an9 key to cant inire .皿孙间转 辺运器周 业始威叢 作开启曙7味:Es-a作业出正在运行,估计其运行情况开始运行时刻=12完咸叶刻:14转时间.li.gooeee帶桩周转时间:5.500000C has hee n fin is lied T press 已ny he号 to continue _.d has been finished!pre&s anv key to continue.B1运茸周j_4_000QB0可:3.500000e has been finisliedf press an
23、y key to continue.*.业的¥均周转时间是;?. WWW业的平均鬆t周转时间是2.800000:4.最短作业优先算法作业调度结果(调度顺序:a->d->b->e->c)时刻:0:4:4.eeeeeQ1.000000¥鷄毎运行,估计其运行情况;Si ?農周轎时词;作业d疋在运行.估计其运行情况: 弃始运管时刘:4完咸吐製:6凰g时间.3.00069带W周转吋间;1.590QQBa lias been finished*press ke t« continue.*.d. has been F in isliedfpres昏 Any hey to con七inu«.乐间.9_0 周转时环作业h正在运行,估计其运行情况: 开始运宜时动:6时间 T 6.000000,周转时间1 2 .666667普正在运行,ft计其运行情况; 、二 刻=9135.00B000 2.256660b hag been finished! press any key to continue.e has been f in isF
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025汽车买卖合同内容
- 2025【经管励志】商业连锁企业全国扩张物业租赁示范合同文本(阿峰原创)
- 2025安保员用工合同
- 2025年短视频内容创作授权合同协议
- 2025关于中文版租房合同样本
- 2025房屋买卖合同正式版
- 河北CISA注册信息系统审计师考试试题库及答案(2025年)
- 美国 分居协议书 出轨
- 怎么样起草离婚协议书
- 2025年北京市不定期劳动合同范本
- 无人机在野生动物保护中的监控与追踪可行性分析报告
- 农交会营销方案
- 2024-2025学年山东省青岛市李沧区青岛版五年级上册期中测试数学试卷(无答案)
- 篮球场施工合同(标准版)
- 2025年plc电气自动化笔试题及答案
- 2025年汽车后市场汽车维修配件电商平台研究报告
- 中小企业数字化转型实施报告
- 电机与电气控制 课程思政 三相异步电动机正反转运行的控制线路
- 2025-2030高端装备制造业数字化转型实施难点分析
- (2024新版)七上第14课:丝绸之路的开通与经营西域
- 2025年中远海运招聘1189人(含社招)笔试参考题库附带答案详解
评论
0/150
提交评论