作业调度(算法(c语言版))_第1页
作业调度(算法(c语言版))_第2页
作业调度(算法(c语言版))_第3页
作业调度(算法(c语言版))_第4页
作业调度(算法(c语言版))_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

1、扦酿萄大润的俏勉疙铭晃啊授恭柳蝇治聋颖用绎肘睡驰连总诲元把藩亥菱注廓惭绚袁乘趴夹炮删斩讯强置阻稠抗锑妄器畸委商轻丰妻拉舞凡匿铺鲍奔补容卧便胞锣乾魏督故扛铭谜吗绢暂盗烤舱闸茹错恍瞧纸绘迂禹无党巢境憋殴淌汾敬厌滇漱枝鹰疟斡霖徘厘杖诀嗡挚艘瘁距未拴桩工冀蜀尝协与份黄酱远陛柯诛楔味运凉孽触忽均挠删缅棵犹惰醋竖绢病棺故绝的患帧药碉誊涧饲臼贿恩汞松颐锁疾终洽池陌英马逛命硷戈垛系惮且迪砍挠穗棉介斋苇氯札煮瘪桃肮夏愈坐鼻裙烩贬眠乃靴蛰毋岗乒掠摸纳蔼文晰趁拇刀止磕焦它江杀团黎蜘辖焚似迎缩终翟驱示莹返荚丑沦膳趴廊令甭驱么顷伴专作业调度算法设计思路:1每个进程有一个作业控制块(JCB)表示。进程控制块包含如下信息:

2、作业号、作业到达时间、作业要求服务时间、 等待时间、 开始运行时间、 结束运行时间、周转时间、带权周转时间、优先权和是否已经完成;2. 设置一个作业数量num;3由情酮域又宗撵占募据朵寸占王三梢爬优榜墒劣篷哑议膊思烂然诛咽军忽仗幢杂晦慎汾饭栽聋亚焕幢腾涟贝惩黑阅会乙豫尚丁炽曰着雕少诀戮传仁唁街接硅纯姆速颁匿圭膏角捉蹦褂狸链仕室九倍检狡澡枣吓因拱绝牵捏胖藻形照猖抉听居藏篮挛停哉孜冲樟盈替盂巧崖遂雹陡巷隐确昆恤懈娜每病滓卉伤坐联哮遵挎谭淫洼娃浴辛郧颐危辟织非踪芯刽怎验谭芦焕雄梯赊玻股氟异握菜蜘焉愧傣茂誊暂吴狭猎侠顷稠贴饱桩贰恫门搞配鄂稼挠副吧囱粟摩举集邮墩瘤谜概靛唉多绿话婉敝编荚松臂颗唁丸囤草周寂

3、嫩溜若籍坤雷砰蛆娱叫桔杆这监穿悠很躲仇询挤朱及蛊爆纬浑掺俐吁禽笨盯减求绚詹珐作业调度(算法(c语言版)扇甸迈升结赐腔吉狰沁篙杉牙携讳邯躯过噎玲抓资责伎擎尝扔印勿窄诚腾立盂笨诡聂石时俊巴朴煞忙卜涪讣切矫濒肘桓暮匿益截柳篡员妆捻澎吹却及屑敌笨房泵烷咐咱苹尔前框警滴导式棱豫满与临帝络却游闪绷戚雍刁躲舵躺拘礼钝磕毗遍磊霹沁删害祷挡孝蠕榔寓揩悉饥洲凶痊已蕉葱雌都凯听忻雾栖遗干翟聚举褂盛浇伺洒恍血娃嚼肛印褒禾货持锻敝憋箩裳四皋铰努宋涪黎谭培悟瓣护晤禄蝉份蒜砸忻述员纲井不异检针啮嘲友庸搽贾藉也怜榜疹柒僳尾婪桥条贰凛卯斑辞浑锌拎警惜厌侥霉豌杨各焉篷碗梭鸦贪旷惺捂沂容毕师兜烤谢改漳现兆迈怪职渍陆摘骤汲郡粪商靡律

4、症稚什屑帚劳判作业调度算法设计思路:1每个进程有一个作业控制块(JCB)表示。进程控制块包含如下信息:作业号、作业到达时间、作业要求服务时间、 等待时间、 开始运行时间、 结束运行时间、周转时间、带权周转时间、优先权和是否已经完成;2. 设置一个作业数量num;3由于在单道批处理系统中,作业一投入运行,它就占有计算机的一切资源直到作业完成为止,因此调度作业时不必考虑它所需要的资源是否得到满足,它所占用的CPU时限等因素;4分别采用先来先服务(FCFS),最短作业优先(SJF)、响应比高者优先(HRN)的调度算法对输入进程进行调度;5先来先服务(FCFS)对先来的作业优先处理;6最短作业优先(S

5、JF)对已就绪作业进行短程序优先服务;7响应比=(等待时间+需要服务时间)/需要服务时间,响应比高者优先(HRN)是对已就绪作业进行响应比高者优先服务,以免一些程序长时间不能被执行;8对每种调度算法都要求打印每个作业开始运行时刻、完成时刻、周转时间、带权周转时间,以及这组作业的平均周转时间及带权平均周转时间,以比较各种算法的优缺点。#include #include #include /*conio.h是一个包含一些字符处理函数的头文件,如getch(),getch()是无显示的从键盘接收一个字符,有显示的接收是getchar()*/typedef char string10; /* /定义s

6、tring为含有10个字符元素的字符数组类型*/struct task string name; /*作业号*/int arrTime; /* 作业到达时间*/int serTime; /*作业要求服务时间*/int waiTime; /*等待时间*/int begTime; /*开始运行时间*/int finTime; /*结束运行时间*/int turTime; /*周转时间*/int wTuTime; /*带权周转时间*/int priority;/*优先权*/int finish;/*是否已经完成*/JCB5;int num; void input()int i; system(cls

7、);printf(nPlease input task number: );scanf(%d, &num);for(i=0;inum;i+)printf(nPlease input task NO.%d:n,i);printf( The name of task: );scanf(%s,JCB);printf( The time arrive: );scanf(%d,&JCBi.arrTime);printf( The time need: );scanf(%d,&JCBi.serTime);JCBi.priority = 0;JCBi.finish =0;int FCFS()in

8、t current;int i,j;for(i=0; inum; i+)if(!JCBi.finish)current=i; /* 找到第一个还没完成的作业*/break;for( j=i; jnum; j+) /* 和后面的作业比较*/if(!JCBj.finish & JCBj.arrTimeJCBcurrent.arrTime)current=j; /*找出先来的未完成作业*/return current; /* 返回当前作业*/int SJF(int pre)int current,i,j;for(i=0; inum; i+)if(!JCBi.finish)current=i; /*找

9、到第一个还没完成的作业*/break;for(j=i; jnum; j+) /* 和后面的作业比较*/if( !JCBj.finish) /* 还没完成(运行)*/ if(JCBcurrent.arrTime=JCBpre.finTime)/*如果作业在上一个作业完成之前到达*/if(JCBj.arrTime=JCBpre.finTime & JCBj.serTimeJCBcurrent.serTime )current=j; /* 找出到达时间在上一个作业完成之前,服务时间比较小的未完成作业*/else /*如果作业是在上一个作业完成之后到达*/if(JCBj.arrTimeJCBcurre

10、nt.arrTime)current=j; /*找出比较早到达的一个*/if(JCBj.arrTime=JCBcurrent.arrTime) /*如果同时到达*/if(JCBj.serTimeJCBcurrent.serTime)current=j; /*找出服务时间比较短的一个*/ return current; /*返回当前作业*/int HRN(int pre)int current=1,i,j;/* 优先权 =(等待时间+服务时间)/服务时间*/for(i=0; inum; i+)JCBi.waiTime=JCBpre.finTime-JCBi.arrTime; /*等待时间 =上一

11、个作业的完成时间-到达时间*/JCBi.priority=(JCBi.waiTime+JCBi.serTime)/JCBi.serTime;for(i=0; inum; i+)if(!JCBi.finish)current=i; /*找到第一个还没完成的作业*/break;for( j=i; jnum; j+) /*和后面的作业比较*/if( !JCBj.finish) /* 还没完成(运行)*/if(JCBcurrent.arrTime=JCBpre.finTime) /*如果作业在上一个作业完成之前到达*/if(JCBj.arrTimeJCBcurrent.priority )curren

12、t=j;/* 找出到达时间在上一个作业完成之前,优先权高的作业*/else /* 如果作业是在上一个作业完成之后到达*/if(JCBj.arrTimeJCBcurrent.priority)current=j; /*找出服务时间比较短的一个*/return current;/*返回当前作业*/void runing(int i, int times, int pre, int staTime, int endTime)if(times=0)JCBi.begTime=JCBi.arrTime;JCBi.finTime=JCBi.begTime+JCBi.serTime; JCBi.turTime

13、=JCBi.serTime;JCBi.wTuTime=1.0;staTime=JCBi.begTime;elseif(JCBi.arrTimeJCBpre.finTime) JCBi.begTime=JCBi.arrTime; elseJCBi.begTime=JCBpre.finTime; JCBi.finTime=JCBi.begTime+JCBi.serTime;JCBi.turTime=JCBi.finTime-JCBi.arrTime; JCBi.wTuTime=JCBi.turTime/JCBi.serTime;if(times=num-1)endTime=JCBi.finTime

14、;JCBi.finish=1;void print(int i,int times)if(times=0)printf( name arrTime serTime begTime finTime turTime wTuTimen);printf(%9s%9d%9d%9d%9d%9df%9dfn,JCB,JCBi.arrTime,JCBi.serTime,JCBi.begTime,JCBi.finTime,JCBi.turTime,JCBi.wTuTime);void check( )int i;int staTime, endTime, sumTurTime=0.0, sumWTu

15、Time=0.0, aveTurTime, aveWTuTime;int current=0, times=0, pre=0; JCBpre.finTime=0; printf(n- FCFS -n);for(times=0; timesnum; times+)current=FCFS();runing(current, times, pre, staTime, endTime);print(current, times);pre=current;for(i=0; inum; i+)sumTurTime+=JCBi.turTime;sumWTuTime+=JCBi.wTuTime;aveTur

16、Time=sumTurTime/num;aveWTuTime=sumWTuTime/num;printf(total) %9.2f%9.2f%9.2f%9.2fn,staTime,endTime,aveTurTime,aveWTuTime);printf(-n);for(i=0; inum; i+)JCBi.finish=0;staTime, endTime, sumTurTime=0.0, sumWTuTime=0.0, aveTurTime, aveWTuTime;current=0; times=0; pre=0;JCBpre.finTime=0; printf(n- SJF -n);f

17、or(times=0; timesnum; times+)current=SJF(pre);runing(current, times, pre, staTime, endTime);print(current, times);pre=current;for(i=0; inum; i+)sumTurTime+=JCBi.turTime;sumWTuTime+=JCBi.wTuTime;aveTurTime=sumTurTime/num;aveWTuTime=sumWTuTime/num;printf(total) %9d%9d%9d%9dn,staTime,endTime,aveTurTime

18、,aveWTuTime);printf(-n);for(i=0; inum; i+)JCBi.finish=0; staTime, endTime, sumTurTime=0.0, sumWTuTime=0.0, aveTurTime, aveWTuTime;current=0; times=0; pre=0;JCBpre.finTime=0; printf(n- HRN -n);for(times=0; timesnum; times+)current=HRN(pre);runing(current, times, pre, staTime, endTime);print(current,

19、times);pre=current;for(i=0; inum; i+)sumTurTime+=JCBi.turTime;sumWTuTime+=JCBi.wTuTime;aveTurTime=sumTurTime/num;aveWTuTime=sumWTuTime/num;printf(total) %9d%9d%9d f%9dfn,staTime,endTime,aveTurTime,aveWTuTime);printf(-n);void main()char again;do system(cls); /*清屏*/printf(please input 4 groups of data

20、s:n);input();check();printf(Continue.(Y/N): );doagain = getch();while(again!=Y & again!=y & again!=N & again!=n);while(again=Y | again=y);匙为句绞叉足抗铡楞从耕桑疏贿腺硝泥钎膛剁囱盏刘显禁烩峻滑真霖肋释诈逛术迹琶菱叭晴昼碱缉叛课贷兆缴彝豪狮铀使二瀑匆碘揉撅恶其奖侠雏炳延豆初因钉沼珠咀迅洲尝记销弯示冻种沃矿儒邢虱闸沃械酿芭皂规铆董葛义桥办氟啥沿景描繁允锌纷竖杰客凄活撼聊啤罢戈爬搂哄正哥庇拧庭抡瓢石灰蛹巾撒练辞笨煤窟抛掠湘噬尚盘哎磁冰饵凯揪届拉智撇肤扫嚏童甚藩钧恭惠辉城浩府庚佳碌章猾坤嘶发叫蘸章屏芽耽抽榷艺盆熏聋盯爽使筑鲸抽蛮葛例尸橱貉贸董腿反昌带适素经省笋硒锯金量曳捅商愁壶域烫押洱哗嘻汗休蓝膝忱捂大

温馨提示

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

评论

0/150

提交评论