《2023年进程调度算法的实现实验报告.docx》由会员分享,可在线阅读,更多相关《2023年进程调度算法的实现实验报告.docx(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、南昌大学卖脍报告一 ( 4 J进程惆盛算法的实现学生姓名: 学 号:专业班级:实验类型:口验证综合 设计口创新 实验日期: 实验成绩:一、实验目的通过实验加强对进程调度算法的理解和掌握。二、实验内容编写程序实现进程调度算法,具体可以编写程序实现先来先服务算法或优先度高者调度 算法。三、实验规定1、需写出设计说明;2、设计实现代码及说明;3、运营结果;四、重要实验环节1、分析实验内容,画出算法流程图;2、根据流程图写出实验代码;3、编译代码,验证结果对的与否;4、对程序进行修改,得到最后结果。流程图如下:诳牙M至u虫nJ ntr -不出I 匕色代力工:,JN宓心日、j rH-nu务 INfnj五
2、、实验数据及解决结果H:Docunents and SettingsXfldninistratorMly DocunentsCfcfsFCFS算法开始Des igned by Zhang Hong转 名周 程达1鬟 进错完6348138751.6C 64 29 167 103 3.6D 92 52 219 127 2.4E 97 43 262 165 3.8平均106.82.5继续募入,退嵯输入薮建还是由索籁嚅疆数据蓟入:1露入5个进程的到达时间:0 12 3 4端入5个进住对应的服务时间:5 7 2可 晌 间同同间转 名周 程达1曩 进招完,可 晌 间同同间转 名周 程达1曩 进招完,继续输
3、入1,退出输入。请输入:0FCFS算法结束,谢谢使用n:Docunents and Settings/idninistratorXMy DocunentsC六、实验体会或对改善实验的建议在做这个实验的时候,一开始认为很简朴,只要做简朴的加减乘除就行了,但是仔细做过 以后发现需要考虑很多情况。比如说输入进程到达时间的时候,要是乱序的该怎么办?尚有 到达时间和服务时间等等定义的都是整型变显,但是带权周转时间确会得到小数,此时就需 要用到强制转换。在做系统产生随机数的时候也要考虑随机数的范围,如到达时间可认为0, 但是服务时间却不能为0,否则带权周转时间的计算会犯错。七、参考资料计算机操作系统计算机
4、操作系统实验指导书C程序设计C语言程序设计现代方法八、实验代码# i n c lude # inclu d e # i n c 1 ude # define N 5/进程个数,可改变ini rt N; 到达时间in t stN;服务时间int ctN;完毕时间i n t cyt N ; / /周转时间f lo a t rctN; 带权周转时间float a v 2;i n t n,m,c=l,whic h ;void 1 ine() /美化程序,使程序运营时更加明朗美观 prinlf (-n);)vo i d st a rt ()/ /表达FCFS算法开始Mi n e ();printf( r
5、FCFS 算法开始n”);pr i n t f( D e s ign e d by Zh ang H o n g n *);line ();v o id end()表达F CFS算法结束Nine。;-Printf (FCFS算法结束,谢谢使用n);lin e ();)void input()|叩r i n t f(请输入d个进程的到达时间二N):for (n= 0 ;nN ;n + +)oscanf ( %d,&rt n);P rintf(请输入d个进程相应的服务时间二N);fo r (n= 0 ;nN ; n +)。 scan f (%d,&stln);)void ran d om ()s
6、ra n d(uns i g ned) t i me(NUL L );of o r ( n =0: nN;n+)rtnj=rand()%l 0 0;a for (m=0; mvn;m+)i f (n!=0 & r tn = r t m)000 |r t n=ra n d ()% 100;m=0;stn =rand()%98+l;。fb r (m=O;mn;m+)if ( n ! =0 & s t n =stml)g st n =ra n d ()% 9 8 +1;皿 m =0;。)voi d o r din a tion()重新排序,应对出现输入的到达时间为乱序的情况(Ant tem p ;f
7、 or (n=0;nN;n+)o for (m=0;mN-n-1 ;m+)f (rt m+ 1 r tm)0gg t emp= r t m+ 1 ;g r t m+l=r t m;。r tm =temp;。 tcmp=st m + 1 ;stm+l= s t m;st m=tem p ;。 )void f cfs()void f cfs()执行fcfs算法av 0 =0;a v l= 0 ;ct O=rt 0+ st01;for ( n = 1 ; n=rtn)/考虑当前一个进程完毕而后一个进程还没有到达的情况ct n = c tn- l+stn;elset n = r tn + s tn;a
8、 f o r (n=(); n N; n +)c y lnl=ct nl-rtn;for ( n = 0 ; nN;n+ + )ret n = (floa t ) c y t n/ ( f I o al) st n ;f or (n=0;nN;n+ + )0 av 0 +=( f 1 oa t )cyt n / N;av 1 +=rct n /N;)v o i d output() 输出结果line();printf(进程名 t”);fbr (n=0;nN;n+)p r intf ( t%c ,65+n);print f(t平均 n到达时间);f or ( n = 0 ; nN;n+)叩ri
9、n t f ( t %d, r tnl);opr i ntf(n 服务时间”):fo r (n=0;nN:n+)oop r intf (t%d,stn);prinlf (”n完毕时间)afor (n=0; n vN;n+)g p ri n tf(t%d ,ct nJ);prin t 一11周转时间”);for(n=0;nN ;n + +)-prinlf(t%d, cylfn);printf(ut%0. 1 f , a v 0 J);primf(”n带权周转时间)f o r (n=0; n scanf(%d,& w hich);g if (whi c h= 1 )g i nput();g b r eak;elsegif (whic h =2)g(g。random ();oabre a k;gprint f (输入错误,请重新输入!);)ord i natio n ();进程按照到达时间进行排序ofc f s();o u tput ();pr i nlf (继续输入,退出输入。请输入:); s can f (%d,&c);)cnd ();I