先来先服务调度和最短作业优先调度算法实验报告_第1页
先来先服务调度和最短作业优先调度算法实验报告_第2页
先来先服务调度和最短作业优先调度算法实验报告_第3页
先来先服务调度和最短作业优先调度算法实验报告_第4页
先来先服务调度和最短作业优先调度算法实验报告_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

1、竝剧居时阿从小到丈对逊实验概述:【实验目的及要求】理解并掌握处理机调度算法【实验原理】基于先来先服务调度和最短作业优先调度算法思想用C语言编程实现【实验环境】(使用的软件)VisualC+6.0实验内容:本实验模拟在单处理机情况下处理机调度,用C语言编程实现先来先服务和最短作业优先调度算法。【实验方案设计】FCFS流程图:SJF流程图:才左5IJ世I耐IHl从町,至I人工寸ia*叩ia:fqig宇试验总设计流程图:龜出进程各舍数并壬十讦、忏均J胡斗乍F时E进程等待时间=进程开始运行时间一进程提交时间(即进程处于就绪态时间)进程等待时间=进程开始运行时间一进程提交时间(即进程处于就绪态时间)其他

2、数计算各作开始时间等待时间按照提交算法数:,结束时间,周转时间时间排序11r再按最短运算法间排序计算各开始提间等待时间并!-作业参数:I时间束时间,周转时间输出【实验过程】(实验步骤、记录、数据、分析)测试用例1:屏幕显示:Pleaseinputthetotalnumberofjobs输入:4回车屏幕显示:Pleaseinputjobnumber,submittimeandruntime输入:19.00.2回车28.50.5回车38.01.0回车49.10.1回车屏幕显示:Whatkindofalgorithmdoyouwant?Pleaseinput1toselectFCFS,or2tose

3、lectSJF.输入:3回车屏幕显示:Youhaveinputawrongnumber,pleaseinputagain.输入:1回车屏幕输出结果:submitrunstartingfinalwaitturnaround38.01.08.09.00.01.028.50.59.09.50.51.019.00.29.59.70.549.10.19.79.80.6屏幕显示:Theaverageturnaroundtimeis0.85Whatkindofalgorithmdoyouwant?Pleaseinput测试数据二:submitrun160.5250.936.30.1FCFS和SJF算法结果一

4、样:submitrunstartingfinalwait250.955.90160.566.5036.30.16.56.60.2Theaverageturnaroundtimeis0.567测试数据三:submitrun150.224.20.335.10.345.20.1FCFS:submitrunstartingfinalwait24.20.34.24.50150.255.2035.10.35.25.50.145.20.15.55.60.3Theaverageturnaroundtimeis0.325SJF:submitrunstartingfinalwait24.20.34.24.5015

5、0.255.2045.20.15.25.3035.10.35.35.60.2Theaverageturnaroundtimeis0.275源程序:#ineludestdio.h#includestdlib.h#includestring.h#defineM50structsjf0.70.7turnaround0.90.50.3turnaround0.30.20.40.4turnaround0.30.20.10.51toselectFCFS,or2toselectSJF,or0toeintjobnumber;floatsubmittime;floatruntime;floatstarttime;

6、floatfinishtime;floatwaittime;floatturnaroundtime;temp;staticstructsjfstM;voidinput(structsjf*p,intN)inti;printf(Pleaseinputthejobnumber,submittimeandruntime:nForexmple:18.52for(i=0;iN;i+)scanf(%d%f%f,&pi.jobnumber,&pi.submittime,&pi.runtime);voidprint(structsjf*p,intN)intk;floath,g;printf(runorder:

7、);printf(%d,p0.jobnumber);for(k=1;k%d,pk.jobnumber);printf(nTheprocesssinformation:n);printf(njobnumtsubmittruntstarttfinaltwaittturnaroundn);for(k=0;kN;k+)h+=pk.turnaroundtime;printf(%dt%-.1ft%-.1ft%-.1ft%-.1ft%-.1ft%-.1ftn,pk.jobnumber,pk.submitg=h/N;printf(nTheaverageturnaroundtimeis%-.2fn,g);/*按

8、提交时间从小到大排序*/voidsort1(structsjf*p,intN)inti,j;for(i=0;iN;i+)for(j=0;j二i;j+)if(pi.submittimepj.submittime)temp=pi;pi=pj;pj=temp;/*运行*/voiddeal(structsjf*p,intN)intk;for(k=0;kpkT.finishtime)pk.starttime二pk.submittime;pk.finishtime二pk.submittime+pk.runtime;elsepk.starttime二pkT.finishtime;pk.finishtime二

9、pkT.finishtime+pk.runtime;for(k=0;kN;k+)pk.turnaroundtime=pk.finishtime-pk.submittime;pk.waittime二pk.starttime-pk.submittime;voidsort2(structsjf*p,intN)intnext,m,n,k,i;floatmin;sort1(p,N);for(m=0;mpmT.finishtime)pm.finishtime二pm.submittime+pm.runtime;elsepm.finishtime二pmT.finishtime+pm.runtime;for(n

10、二m+1;nN;n+)if(pn.submittime=pm.finishtime)/*判断内存中每次完成之后又多少到达的进i+;min二pm+1.runtime;next=m+1;for(k=m+1;km+i;k+)/*找出到达后的进程中运行时间最小的进程*/if(pk+1.runtime2-1-Theprocess35i:ifc:7niation:pleaseGT2toselecPleaeeinpLtzhejabnunber,sbtuiitimeandrunLime;Fore?iwl亡:8.c2.01234jobnunsubniiTrun5TE.rtfinalwaitturnaround3

11、8.D1.08.09.D0.fl1.0?8.c0.d9.09,c0.d1.019.00.29.o9.70.o0.749.10.19.79.S0.60.7tjrraroundtime0.8caverageOTThePihaLk_ndozalgorithmdeyouwant?FLeaseinpt1zoseLeetFCFS:tSJFor0toexit:2rjnorder:3-1一-4-2Theproces-JsinfoTtuation:,:obnuiLsubnitr二nEtHtfinalwaitturnaround3S.01.08.09.00.01.019.D0.2g.o9.20.00.249.10

12、.19.29.30.0.228.c0.59.39.S0.81.3Theaveragetjraroundtin亡:0.&7;亡寸kindqzalgorithmdoyouwant?Fleaseinpit1loselect半:FCFS.or2toselec测试二:turnarcihid0.90.50.3wciit0.0000.2七rt5.06.06.51suborn-t:fi5.00.9.00.a36.30.:Tieaveraget.r:iaroundtimeisu.57VThatkindofalgorithmdayouwant?FLeaseinput1aseLeetFCFSfor2toselect

13、SJFor0toesit:半:Theaveragetjrnaroundtineiz0.57BfhatkindofalgorithmdayouYPleaseinp.it1toselectFCFShtSJFor0toexit:2rjnorder:2-1-J3Theprocesi3wilife2mation:2toelecBWCl:,iwinc2D10j1Cuanbin:.w?tempan9561.f566jobnuirsubniTrunstc.rtfinalwaitturnaround-耳0090.05.90.00.916.00.56.06.c0.00.336.30.16.06.B0.2Q.3PL

14、edseinp-ttotaljiumbeTofjobs:3Fleciseinr:tjobnumber,uhmittimeand-1】“time:ForenuLe:亠8.c2.060.55fl.9a6.30.1iShatkinddzalgorithnidoyouwnt?FLeaseinpjt1ossLectFCFSrot2toselectSJFqt0toexit:1runorder:213Theprocesi1zinformation;jobiium测试三:123450.220.310.3or2toselec5.20.1iVh己rkJ-dozalgorithmdoyou/I:leci5einri

15、t:zoselectFFShtSJFor0toesit:1unorder;2-一一Iheproc?ss,sinfoTmaticin:jobnunsubniiTrun5TE.rtfinalwaitturnaround2丄2034.2丄5fl.fl0.315.00.2o.Oa.20.00.235.10.35.25.50.10.445.2fl1.5.60.30.4Theaverageturnaroundtimeis0.33iShatkindal呂orithmdoyouwani?FLeaseinput1tossLectFCFS.cr2toselectSJFor0toexit:2rjnorder:2-一

16、1-J4-3Theprocei,sinfoTmation:/obnuirsubniiTrunstc.rtfinalwaitturnaround24.2034.24.c0.00.315.D0.25.05.20.00.24.20.9.2a.30.00.1-二5.10.3o.S5.B0.20.5Theaveragetjraroundtine:50.27Bfhatkindqzalgorithmdoyouwant?FLeaseinpjt1osaLectFCFS:or2toelectSJFqt0toexit:芈:【小结】实验中产生的错误及原因分析:测试用例1的结果:错误1:D;winc2D104CVuYa

17、nbinwtemp.exerunorder:3一2一1Theprocesseinforitiatian:jobnuinsubmitrunstartfinalwaitturnaround38.0LC8.0a00.01.02S.50.59.09.50.51.019.00.29.c9.70.o0.749.10.19.79.80.60,7Theaveragetjniaroundtimeis0.85hatkindofalgorithmdoyouwant?Pleaseinput1toselectFCFS,or2ttSJFot0toezit:2runorder:3-4-0一0Theprocesssinfor

18、mation:jobnuinS-ibmitrunstartfinalwo.itturnarouiid38.0.08.09.00.01.049.10.19.09.1-0-10,000.00.09.19.19.19.100.00.09.19.19.19.1TheaveiaetarnaToundtimeis4.80Whatkindofalgarithmdoyou.vant?Pleaseizipiit1toselectFCFS,Ql-2ttSJFor0匸oexit:半:错误解决方式:主要是子函数sort2()中出的错:i的作用域,程序修改:将原来:intnext,m,n,k,i=O;floatmin;

19、sort1(p,N);for(m=0;mN;m+)改为:intnext,m,n,k,i;floatmin;sort1(p,N);for(m=0;mor2toselec0toexit:1ri-orde-:2-1-3Theproccszzinformation:jobnumsuhmi-T:D5TartrinaltiiTnaroi:d.00.95.0a.90.00.916.00.55.96.1-0.10.1&30.:巨4&pmT.finishtime)pm.finishtime二pm.submittime+pm.runtime;elsepm.finishtime二pmT.finishtime+pm.

20、runtime;测试用例3的结果:错误1:B1Dtwinc201WCYuanv.fcinwwtemp.ee丄norde-:2-一1-3-、4jobnuirsubnii;r二it.rtiinalwaitturnaround2丄20.34.2丄50.00.3ia.00.2=.0a.20.00.235.10.3=.2.50.10.-145.20.15.55.G0.30.4tjrraroundaverageTheShaikindoialgorithmrSJFor0toexit:.2runorder:2-1-3-4Theprocess1sinformation;tine:.doyou;0.33want?

21、Fleaseinpui1toseLeetFCFSror2toselecjobnuTr:n:inalwaitturnarrii:nd21.20.3丄c0.00.313.0020.05.20.00.235-10.3:-.20.Jo.:0.445.20.15.55.60.30.1tJinaround0.33civeiageTheifhatkinddzalgorithnitSJFor0toesit;半:timei-dayouwant?F.easeinput亠toseLeetFCFS,dt2toselec_eDroGUEwuirfoTmatior:错误分析:同2一样,解决方法:将原来的:未在子函数sor

22、t()中未考虑到“提交时间(submittime)大于上个进程的结束时间”的情况:elsepm.finishtime二pmT.finishtime+pm.runtime;修改为:elseif(pm.submittimepmT.finishtime)pm.finishtime二pm.submittime+pm.runtime;elsepm.finishtime二pmT.finishtime+pm.runtime;实验的体会及收获:通过这次试验,我对处理机的调度算法特别是FCFS和SJF有了更深的理解,而且锻炼了我的思维能力,使我能更全面地思考问题,以后还需要多做些这方面的练习。试验不足之处:试验

23、未考虑同一时间提交多个进程的情况,如:测试数据:submitrun170.227.20.5370.1结果应该是:FCFS:submitrunstartfinalwaitturnaround170.27.07.50.00.5370.17.57.60.50.627.20.57.67.80.40.6Theaverageturnaroundtimeis0.57.SJF:Jobnumsubmitrunstartingfinalwaitturnaround370.17.07.10.00.1170.57.17.60.10.627.20.27.67.80.60.6Theaverageturnaroundtim

24、eis0.43.而程序运行结果是:tkejoLnumber,submittimeandr_mline:8.52,0/obnuKisubmitrjnmtartfinalwaitt二inaiu二二d1匚00.57.07.50.00a37.00.17.c7.60.c0.67.20.27.67.8D.40.6timeis0.57IhedveiagetuiiioindihatkindofalgorithmtSJFor0toexiz;dayou贡ant?Fleaseinput1to三;亡leczFCFStorZtoselec吐D:wiric20LMS.CYuYan-fcinlwwtemp.exePLeastinpuxForew)le:170.57.20.270.:ffhazkindofalgorithmdayouant?Plec.seinput1toselectFCFSor2toselectSJFor0toexit:1riiiorder:1-3-2TheprocessinforEiation:Jobnumsubunitiu

温馨提示

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

最新文档

评论

0/150

提交评论