版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、操作系统实验报告 ( 二)实验题目 : 进程调度算法实验环境 :C+实验目得 :编程模拟实现几种常见得进程调度算法, 通过对几组进程分别使用不同得调度算法,计算进程得平均周转时间与平均带权周转时间 , 比较各种算法得性能优劣 .实验内容 : 编程实现如下算法:1、先来先服务算法 ;2、短进程优先算法;、时间片轮转调度算法。设计分析 :程序流程图 :1、先来先服务算法开始初始化 PCB,输入进程信息各进程按先来先到得顺序进入就绪队列结束就绪队列?运行运行进程所需CPU 时间取消该进程2、短进程优先算法、时间片轮转调度算法实验代码 :1. 先来先服务算法#ncl e iost eam 、hdefi
2、n 20tpedef struc int d;/ 进程名int ati e;/进程到达时间intuntime;/进程运行时间f s;v i main( )in amou t, ,, di , hun;fs fn ;cout amou t;for(i 0;iam u t;i+ )cutf i、 id; in f、 a ie; fi、 runim ;for(i=0 ;iamoun ;i+ )/按进程到达时间得先后排序/如果两个进程同时到达, 按在屏幕先输入得先运行fo (j 0;jamou ti1;j+) if( j、 ti efj 1、 time) diao= j、 atm;fj、 atme=
3、+ 、 time ;f+1 、 atime=diao;huan= j 、 d;fj、 id=f j+1 、id;fj+1 、id=hu n;or(i=0;i a ut; i+)cout ”进程: fi 、 id”从 f、 time ”开始 ” , ”在 i、 ti +i 、 runtime ”之前结束。 endl ; i+1、a im =f i、atime+fi 、 unt e;2. 短进程优先算法#i lude#dfie 5define n m#fi e a 6 35yped sr t ro i PRO D; int a riv _ i e;?um im ;in f ;Pr ; /整数排序i
4、nt u l (inttm)in , j, em=0 ;?for(i= ;in ;+)?int las X= ; or(j=0; nu i;j+)? if(tmp j tempj+1 )?tem=temp j;? ? ep=tem j+1 ;? temp + e;? l stX= ;? ? if( ls X=1) break ;?return tem 0;/进程排序Pro b bble(P o p)? int ,j;?Pro tem =0;?Pro s um ;fo(i 0;in; i+ ) s ipi;? ?for(i=1;i nm; +)? int lstX=1;?fo (j= ;j nm
5、 ;j+)?i( s、 umtim sj+1、s m_t m)? ep=sj;?s =s +1;? ? sj+ =temp ;?lstX= ;? ?if(lastX 1) break;retur s ;vo d SPF (in p)if(n 0)i i,j,k,l, c=0 ;?seqn;?Potemp_seqn;?p tf( 短进程优先调度算法SPFn);?pitf(请依次输入个进程得进程号、到达时间与执行时间n”);?pitf( 成员变量用逗号隔开;进程间用回车隔开n );for (i= ; in; i+ ) ? sca f( ”%d,%d, % ”,seqi 、 O_ID, se i、a
6、r ve_ im,&s q、 sum_t m);prin f( 调度顺序就是 );?/初始化 ci tem ; or( =0;i um;i+ )?tmpi seqi 、ar ve_ im ;? ?tc=ubble(te p) ;/tc 就是断点啊/la 表示对应 i 得 p o 得队列情况/1 表示未进入过队列 ,0 表示在队列中 ,1 表示被清除了? for (i0; n;i+ )? s i、f g;for(i=0 ; n;i+ )? ?fo( 0;jn;j+) ?f(eqj 、flag != seq 、arrive_ ime=t )?eq 、 lag=0;? ? for( =0;jn; +
7、)temp_s j =sej ;?if(seq j、 lag!=0)? ?tem _seq j 、sum_time max ; ? l=b bb e( mp_s q)、PR _ ;? ?for(j=0;j n;j+)? if(l=se j 、 R_I)? ?k=j;? t =tc+bubble(tem seq) 、 um_ im ;? seq k、f ag=1 ;? ? print ( ”%d,” l);? ?rin”);voimin()?SP (n);3. 时间片轮转调度算法头文件 R、h in lude iostrea i clude nclude str n、 h#n lu etd ib
8、 、h# lu ectype 、h#define M xNu 10 typ de st uct cb/定义进程控制块 r ame Max m ;/进程名?nt arrvetime ;/到达时间?int?itit rutime ;/运行时间who e e;/固定运行时间inis im ;/完成时间d uble eig tTime; / 周转时间doub eWeig hol ime;chr state ;/运行后得状态/ 带权周转时间?stuct cb *n xt;P ;/全局变量 t ;double Su WT;duble um WT ;duble rageW ;/ 实际进程数/周转时间之与/带
9、权周转时间之与/平均周转时间doble Avtype ergeWWT ;/平均带权周转时间truct/定义队列 ,封装头结点 ,指针分别指向队头与队尾PCBfront,*rear;queue;quu i i()/进程队列置空?u u *ead;h ad(q eue*)ma loc(s zof(q eue);ead- fron NU ;hea -rear NULL;rturn head ; nt e py(qu ue *e) /检验队列就是否为空?et rn( head rot?0:);ueu *appe d(queue *head, har c axNum , nta,int r , ar s
10、)/进程队列入队,往后插入?PCBp;p=(PC ) mallo ( izeof ( PCB ));?srcpy (p Na , );p ivet e= ;p runtim =;?p ol tme r ;?state=s ;?/ p inish m=0 ;/p egh Time 0;/p e htWholeTime= ;pne t=NULL ;?if(e ty( ead)?he -fron ead rear=p;? se? h adrear n x =p;? he drea p;?eturn h a; u creat( ueue hed)/创建进程队列?har cM xum ;?car s=R
11、;?int a , r, i;?prntf( 请输入共有几个进程:n);?sca f(%d, N);?f r( 1; =N;i+)?r t( ”请输入第 %d 个进程得进程名 :n,i );?g cha ();?gts(c );?prntf( 请输入第 d 个进程得到达时间:n”, i);?scanf( ”,&a);?pintf( 请输入第 %d 个进程得服务时间 :n, ) ; c nf(%d ”,&r);head=appe d(head, ,a,r , );?etu n head;vo d prn( que e head)/输入创建得进程队列PCBp;=head ro t;?if(!p)?
12、rit( ”时间片轮转调度队列为空!n);wi( p)? i tf(”Name=%s arr v ime= druntime,p st te ); utime=%dstate=%c”,Name ,p a i e me ,p ? pri ( ” ”); p=p next;?/* * * * *时间片轮转法调度算法得实现* * * * * */v iRR(q ee ad,int q)?int=head ontarrivetime,lthead- rea r iv time;?f(head ront nt q)?=t+he d-f ontrunti ;else?=t+q;?/ *进程队列为不空才可调
13、度* */wile(!em t(he )? PB *p ,p; rinf( n”时刻进程运行后得状态n”); *第一种情况 :当前运行得时间小于最后一个进程到达时间做一下操作 / ?whl(tfront ;?pri tf( %2 %s”,1- Nam ) ;?p1-ru time p1r nime q;/ 1、运行时间小于 ,删除队首if (p1 runtim =0)? ?1- stat = ;?p n (% n”,p1- ate);? 1Fin sh ime=t ;? 1- ei hTime p1-F nish ime p1- ari e me;? p1Wei h WholeTi e=p1
14、We gT me/p1 wholetim ; umW += 1- Weigt i e;?um T+= WeightW ol i e;?pintf( 时刻 %2进程 %s 运行结束,进程周转时间= 5、2f,带权周转时间 =%5 、2fn, t,p a,p Na ,p1 We Time,p1-We htWholeTi e);? ?hedfr nt 1- n t;?fee(p1 );? ?/2、运行时间大于 ,向后找位置插入?lse?printf (n”,1 state );? p2=p1-ne t;w l(p2- ext p2-a rivet me !=)? ? ?p2 p2 ext;? ? ?
15、此时无新进入队列得进程 ,有两种情况 :1 、不用找位置往后插入 ,队首不变 ,不做操作/、找位置往后插入?if( 2ar vetime!= t)? ?B * 3= 1,*p4;?whi e(p - nxt & p3- ar ivtiet)? ?4=p3;? ?p=p3 next ;? ? (p3 arrivetime t)?if(p4! )/p1 插在 4 后,头为 1-ne t? ?head-front=p1 nex ;p1-n tp4- next;? ?p4- ex =p1;? ?ese /不做操作? p4=p3 p2=NULL;? ?else? ?p4= 3 p2=NULL; ? ?/
16、此时有新进入队列得进程时 : 插在新进入队列得进程 p2 后,队首为 1- xt ?ese? ? ?head on =p1- xt;?p1n xt=p2 net;? p-ne t=p ;? /时刻变化if(head font runt me=lt)?p1=head front ;? nf(”%2d% ,t,1- ame );? 1ru im =p1-r nt me-q;? /、运行时间小于 0,删除队首? i(p -unt mest te);?p1-F nishTi =t;?pWeig tTime=p in hT me p1 arrivet me;?p1ol ime= Weig time/p1
17、 wholetime;S mWT+=p1 WeightTim ;? ?umWWT+= 1- ei h Whole ime ;printf( 时刻” %进程运行结束 , 进程 s 周转时间 %5、2f, 带权周转时间 =%5 、 n”,p1 Name, 1-N me, Weig tTime, 1 W ig tWho eTime ) ;? ?/pr nf( ”时刻 2d 进程 s 运行结束 ,t, 1 ame );?e fro t=p next;? ?ree (p1); ?/2 、运行时间大于0,直接插在队尾?els ?prin f(%cn ,p1- tte) ;? ?/若原队列只有一个进程 ,不
18、必往队尾插? if(! p1 e)? ?ed ront=p1;? /若原队列有多个进程? ele?ead fro t=p1 next ;?h re r-ex p1;?ead rear= 1;? ?p1- ext=NULL ;? ?/时刻变化,队列为空时不做时刻变化if( mpt ( h ad)? rurn ;? e se? ?if( had-fr nt- runti eq)? ?t=t head-f ont-r ime;?el e?t=t+q ;? ?/* 第二种情况结束 * * */?主程序 Main 、cpp#incl de#i cluestd o、 h#n lud sring 、h#inclu e stdl b、h#incl de cyp 、h#incl e ”RR、hvoidmain()?que *hea ;itq;?ead=in t();h adc at(head );?r n f( n 您输入得时间片轮转进程队列为:”);print(head);?r t请输入时间片轮转调度得时间片为:);scan ( ”%d”,q) ;?/ 时间片轮转调度?( head ,q);AerageWT um
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 空调外机隔声屏障工程安装施工方案及技术措施
- 通风空调工程施工方案
- 定时器-计数器编程举例
- 监理工程师之监理概论考试题库附答案(基础题)
- 初级出版专业技术人员职业资格题库带分析2025
- 2026年教育心理学综合考试题及答案
- 门套线条安装施工方案及技术措施
- 2026年化工自动化控制仪表考试题模拟考试题库及答案
- 2025年煤矿企业主要负责人模拟考试题库试卷(含答案)
- 2026四川眉山市第一幼儿园考核招聘部属公费师范毕业生1人模拟试卷附参考答案详解(B卷)
- 2026年职业技能大赛CAD机械设计技能竞赛理论考试重点试题库
- 2026暑假离校前校长在全体教职工大会上讲话:圆满收官迎暑假凝心聚力再出发
- 2026年广东省惠州市惠城区中考模拟道德与法治试题(含答案)
- GB/T 47723-2026风能发电系统风力发电机组自动消防系统
- 2026年人教版四年级数学下册期末测试卷(含答案)
- 2025年东莞市长安镇下属事业单位招聘真题
- 2026年云南省中考语文试卷真题及答案详解(精校打印版)
- 昆明空港投资开发集团有限公司2026年招聘笔试题库
- 2026年江苏省南通市如皋市初中毕业、升学模拟考试试题英语 含答案
- 杭州城投招聘笔试题库2026
- 2026年江苏省南通市【中考数学】试卷 含答案
评论
0/150
提交评论