《2023年实验报告一进程调度算法.docx》由会员分享,可在线阅读,更多相关《2023年实验报告一进程调度算法.docx(12页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、江西师范大学计算机信息工程学院学生实验报告专业12级物联网班 姓名 严超 学号日期2 0 23/0 5 /8课程名称操作系统教程实验室名称W43 1 3实验名称进程调度算法指导教师张练兴成绩1、实验目的用代码实现模拟操作系统的进程调度,以加深对进程的概念及进程调度算法 的理解2、实验原理和内容(1)先来先服务(FCFS)调度算法:从“就绪队列”中选择一个最先进入队列的 进程,为它分派解决器,使之开始运营。(2)优先数调度算法:根据进程的情况或规定赋予进程一个优先级,进程运营过 程中优先级不再改变。每次调度时,就绪队列中优先级最高的进程被率先调度, 同级的采用先来先服务(FCF S ) o3、实
2、验环节进程调度算法:(1)编写进程控制块数据结构(2)统一按照FCFS调度算法创建队列(3)在FCFS调度算法中,将就绪队列队首进程调入执行,假如在队列中存在到 达时间小于等于当前时间的结点,将该结点的状态设为就绪状态。假如当前进程 执行完了,就将其状态改为完毕状态,并将其插入到队尾。(4)在优先级调度算法中,将就绪队列队首进程调入执行,假如在队列中存在到 达时间小于等于当前时间的结点,将该结点的状态设为就绪状态,并对队列中的 结点按优先级数的大小进行排序(队首除外)。假如当前进程执行完了,就将其状 态改为完毕状态,并将其插入到队尾。(5)输出运营后的结果,如周转时间和带权周转时间。4、程序及
3、运营结果(或实验数据记录及分析)进程调度算法:本次实验让我更加明白进程调度的概念,更加了解进程调度的工作原理。 在前期,我是直接将结果显示出来,后来,我又在原有的基础上加了显示每一时 刻队列的信息。在编写此代码过程中碰到很多问题,例如指针问题,指针指来指 去,总是指错地址。n o de* p,* q * f 1 ag;flag =p=h e a d;c 1 oc k =p-arr i ve_ti m e ;all_time=st a rt_time= h e a d-ar r ive_time;w h i i e( p )。(。 a 1 l_timc+= p s e r v c_t i me;
4、gp=p- n ext;p=hcad;while (done)do n e= 0 ;pri n tf( nn t|- 第 2d 时亥!-I , clock);。 w h il e (p) if( p - a rrive_timcst a te=-w|p-s t ate= r) 。 p-state=r; d one= 1; 0 op=p-n e xt;I。 Sor t BySu p er(head);wh i 1 e (fl a g- n ext)flag=fl a gn e xt;gpr i nt( h cad);o p r i nt f (t|-第 2 d 时刻-1 n n ock);i f
5、 (clock=all_t i m e ) break;clock+;f i nish_time= s tart_time+he a d-serve_time;if(fin i s h_time=clock)00 。 h ead-s t a te=f;。 fl a g-n e x t= h e ad;oah e ad=he a d- n ext;qfla g =flag-nex t ;。 fl a g-n e x t= N U L L;。s tart_ t ime=f i n is h _time;8 。 p=head;p=he a d;finish, t iine=p-arrive_tini
6、e; P ri n tf(nn 11-优先数调度算法-);op rintf(nt|进程名 倒达时间|服务时间I开始时间|完毕时间|周转时间|带权周转I ”); whi 1 e( p )(if(p-ar r i v e_t i me a rrive_tim e ;fin i sh_tim e =sta r t_ t im e +p-serv e _time;around _tiine=finish_time-parr i v e_tim e ;r i g h t_round_time= ( f loat) ro u nd_tim e /p s er v e_time;p rin t f( nt
7、I %8d|%8d|% 8 d|%8d|%8d|%8d I %8.2ff, p -ID, gp-arriv e _time,p-serve_ t i me,st a rt_tim e ,fin i sh_time, round_t i m e ,r i gh t _roun d _t i me); p= p -n e xt; )op r int f ( n t|-优先数调度算法-I );oprintf ( n ); )int main() char choice;0node *head; 0do p r i ntf(n t t |-MUN E- I n);pri n t f ( t t |-l
8、.FCFS 调度算法-|nM); P ri n - 2 .优先数调度算法-|n );。 prindTttt 你的选择是:bb);。 while(scan f ( %c c hoic e ) !=EOF&choic e ! = r&choice!=2);h ea d = c re a tc(); aswitch (choice)g c ase I:pri n t( h ead);。 FCFS (head); b reak:&case 2 :print (head);。叩 r iorit y ( h ead); b reak;运营结果截图:一法 法算 算度1先来先服务调度算法运营结果1.FCFS调
9、 X曲镯 你的选择7E: 31 0于于 左尖 者不必结数翳 务到服 前m ira 程务 进优到服 入入入入 ZHTTtn于于:n者不必结数目 T先达务 人优到服 输ttt 程先达务 进优到服 入入入入 A j 本月佳目在DE住HE于于 生尖 r不如结数翳 T先达务 人优到服 输ttt 程先达务 进优到服 人入 在R本月注目江信请输入进程名(输入T结束):T请输入进程名(输入T结束):T状态WV/W.砾赢调送输福露丽I1 :1:1:2:2:2:3!3:3!结点信息情况进程名123第一个节点 “为当前正在 执行的进程第一个节点 “为当前正在 执行的进程寸间;服务时间;状态进程名;优先级数1:1:2
10、:2:2:进程名;优先级数 2:23!3:3:3:1: 1: 1: 1:状态;:.状态为俵示f! f该进程已结束第7唯结点信息;进程名 城先级数国达百间;服务时间;状态;:1:1!1:1:!2:2:2:2!f!SFCFS调度算法!进程名;到达时间;服务时间;开始高M;荒成时间;周转时间;带权周转;1 :1!1:1 :2!1 !1.00!2:2:2:2:4:2:1.00:!3 :3!3:4:7!4:1.33:;FCFS调度算法优先级调度算法运营结果1.FCFS调度舁法一 二二-2:优警调度算法 你的选择是:1 44 13 22 20 00 0 0 0于于干于I于于I干干里更务4先尖者不必3先尖者
11、不必者不必1先尖 I者不必结数T先达务到服 输m 1 程先达务 进优到服 入入入入 请请请请结数翳 T先达务 入优到服 输m 翳 程先达务 进优到服 入 请请请请入优到服 刖m 程务 进优到服 入 请请请请结数解 T先达务 人优到服 输m 程先达务 进优到服 入入入入 4747101 请请请请状态WWWW时间;4:2:2:1 ;.砾丽圈墟简蠹爵3:1:4:25:3:6 :4:结点信息、情况况J 主即在 自5间1 23:4:鼠小18613 2 4名 程进处于就队列 的进程进程名;优先级教1 i3二间4 51 一焉 B泮 日息间1 靠点达n4!b:4!1!r!2:5:3:2:r iLL_3:4:2
12、:2:r i4 0-11-0S当前正隹执 行的进程进程名;到达时间;服务时间;开始时间;完成时间;周转时间;带权周转1: 1:4:1;5!4;1.004:4:1 ;5 ;6 :2 ;2.002!3!2:6:8 ;5:2.503:2:2 !8 !10:8:4.00意键继续.优先数调度算法具体代码:# i nc 1 u d e #in c lude#defin e MAX 100 0t ypede f str u ct pr o g r e s s 。i nt ID;进程名ch a r s t at e ;。进程状态int super; o / /优先数int a rriv e _time;/ /
13、 到达时间i n t se r v e _t i me;。服务时间s t ruct prog r e s s *next; n ode;n o de* sortFCFS(nodc * he a d, n o de* q)(o de * p ,*pr e ;aint done =0;f ( h e a d =NULL) |(q-arriv e _time)arrive_time) ) /*到达时间最先者,插入队首*/(q-nex t =h e ad;。 h e a d=q;e Ise /水进程比较到达时间,插入适当的位置中*/。叩二 h ead;。p re=p- next;awhile (pr
14、e !=N U LL) f ( q - arri v e_time)a r riv c _t i me) /*若插入进程比当前进程到达时间小,*/ /*插入到当前进程前面*/。ne x t=pre;2p- n e xt=q;。p re=NULL;。 。 d o nc= 1;elsed|3 p=p-nex t ;op r e= p re- next;2)A f (done=0) p -n e xt=q;)r e tum head;)/*函数功能:创建单链表参数:空返回值:指向节点的指针he a d*/n od e * cr e ate()。n o d e *head; node * p,* q
15、;int x, c ount=0; ohcad=N ULL;叩rinlf(nN请输入进程名【输入-1结束】:);owhi 1 e(scanf (%d ,& x )!=EOF& x ! =- 1 )g p =(no de*) malloc(sizeof ( n ode);print f ( tt请输入优先级数【优先数高者优先】:);gs c a n f( %d,& p -s u p e r );P rint f ( tt请输入到达时间【到达时间不得小于0 : *,);。 sc a nf( %d”,& p -a r rive_ t i me);print f(t t请输入服务时间【服务时间必须大于
16、0】:);o scanf( %d”,&p-serv e _ t i m e );p-ID= x;。 p-s(at e - w* ;p-ne x t=NULL:。 hcad= sortFCFS(h e ad,p);-prin t请输入进程名(输入结束):”);)r cturn head;)/小函数功能:输出单链表参数:指向节点的指针he ad返回值:空*/v oi d pri n t(n o de *head)。n od e * p ;pi-in t f( n t |-结点信息情况-);它血(”ntt|进程名|优先级数倒达时间|服务时间|状态 |);p=h e ad;while(p)(。 pri
17、ntf(n tt I %8d|%8d|% 8 d I %8d|%8cl , p I D,p-s u pc r ,p-ar r ive_t i mc,p- s e rve_ti m e , p -s t a t e);op=p-next;)pri ntf(nt |-一结点信息情况-一 -|n);函数功能:运用先来先服务调度算法参数:指向节点的指针head返回值:空存在问题:*/vo i d F CFS( node* h e ad)(int s t a r t _ t i me,finis h _ t i in e =0, r o und_t i me, a 1 1 _ t im e =0;i n
18、 t don e =1 ;i nl cl o c k = 0 ;afloatr ight_ro und _time:flag=p=h c ad;clock = p -a r ri v e_ t i me;0a 1 l_time=start_ti m e=head-arrive_ti m e ;whi 1 e (p)。(al 1 _timc+=p-sc r vc_timc:p=p-n ext;)p=h e ad;whil e ( d o n e)|。 done=0;, p r intf( n nt|-第2d 时亥U-|,c 1 ock);while (p)。if(p-arri v e_times
19、tat e = w|p- s t ate=r)02 。叩 s tale= r ;done= 1;。 P =P- n ext; whi 1 e(f 1 a g -ne x t )tl a g=fl a g - n ext; p ri n t(h e a d );Sprint f ( t I -第2 d时亥“一一一-1 nnc 1 ock);对 f (clo c k =al 1 _t i mc)br e a k ;。c 1 ock+;。 f i nish_tim e =start_timc+h e ad-serv e _t i me;。i f(fi n ish_tim e = c 1 oc k )
20、a h ead-s t ate=,f;ogfla g - n ext=hea d ;a h e ad=hcad-nc x t;f lag= f lag- n ex t ;flag-ne x t=NULL;。 starl_lime=fin i sh_time; Io p= h e ad?p= head;f i nis h _t i me=p-ar r ive_t i me;prin t f( t |-FCFS 调度算法-1);oprint f ( n t |进程名|到达时间|服务时间|开始时间|完毕时间I周转时间|带权周转);wh i le(p)if(p-arrive_time= f inis
21、h _t i me)arr i ve_ t im e ;ofini s h_time=s t a r t _ t i me+ p -s e rve_t i m e ;r o und_time=fi n is h _ t ime-p-arr i v e_ t ime;r i g h t_round_ t imc=(flo a t) r o u nd_time / p - s erve_time;。叩 r intf(nt I %8 d |%8 d |%8d|%8d|%8d|%8 d |%8. 2ff,pID,p- a rrive_ t im e , p s e rve_time,s t a rt_
22、timc,fin i s h_t i me,round_ t i m e , ri g h t _round t im e );叩=p - n e xt; )p r intf( nt I -FCFS 调度算法- I);pr i nt f (n);)void Sort B y S u p e r (nod e *h e ad) (。n ode * p 1,* q 1, *temp:o t emp=(nod e *)m a 1 loc(s i zeof(nod e );for(p 1 =head-nex t ;pl !=NULL&pl st a t e =r;pl=p 1 -next)fo r (
23、q 1 = p 1 -ncxt;ql ! =NULL &q 1 -statc=-r;q 1 = q l-ncxt) (。 if (pl-s u pcr s u per)oootc m p- ID =p 1 -ID;a pl-ID= q l- I D;ql-ID=t e mp-ID;temp-supe r =pl super;*pl-su p er=ql s up e r;q I - s up e r = t e mp- s up e r;。 temp-a r rive_tim e =p 1 arriv e _t i me;o p l-a r r i ve_timc=q 1 -arr i v e
24、_t i me;叫 1 - a r r iv e _t i me= t emp-arr i ve_ t ime;ootemp-serve_tim e =pl s er v e_time;。 a p 1 -se r v e_tim e =ql-ser v e_time;*q 1 -scrvc_timc=tcm p -s e r vc_t i m e ;temp-state=pl sta t e;pl-st a te=q 1 - s tat e ;。q 1 -st a te=temp- s ta t e;00 )g I/*函数功能:运用优先数调度算法参数:指向节点的指针head返回值:空存在问题:*/vo i d priority(node* h e a d )(int sta r t_ t im e ,f i nis h _t i me=0, r ou n d_ t i m e , a 1 1 _tim e =0;i n t done= 1 ;int cloc k =0; afloat ri g h t_ r o u n d _time;