资源描述:
《进程调度模拟实验》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、二.进程调度模拟实验1.实验目的通过对进程调度算法的模拟加深对进程概念和进程调度过程的理解。2.实验内容•用C语言实现对N(N=5)个进程的调度模拟,可以采用如简单轮转法RoundRobin、优先权高者优先算法HighestPriorityFirst筹,分别进行模拟调度。■每个川来标识进程的进程控制块PCB川结构(记录)来描述,根据需要,它包括以下字段:◊进程标识数ID。◊进程优先数Priority,并规定优先数越大的进程,其优先权越高。采用简单轮转法时该字段无用。◊进程己经占丿IJ的CPU时间CPUTIMEo◊进程还需占用的CPU时间ALETIME
2、o当进程运行完毕时,ALLTIME变为0。◊进稈状态STATEo◊队列指针NEXT,用来将PCB排成队列。■优先数改变的原则(釆用简单轮转法时该字段无用):◊进程在就绪队列屮等待一个时间片,优先数增加1;◊进程每运行一个时间片,优先数减3。•假设在进行调度前,系统中有5个进程,它们的初始状态对以编程输入(更具有灵活性),也可以初始化为如下内容:IDPRIORITYCPUTIMEALLTIMESTATE0903READY13803READY23006READY32903READY4004READY•为了清楚地观察诸进程的调度过程,程序应该将每个时间片内
3、各进程的情况显示出来并暂停,参考格式如门Running:IReadyQueue:Idi,Idj,・・・IDPRIORITYCPUTIMEALETIMESTATE0P0COAOSO1PlClAlSI2P2C2A2S23P3C3A3S34P4C4A4S4按上述要求编写程序如下:#includenstdio.hHtypedefstructPCB{intpriority,CPUTIME,ALETIME;char*STATE;structPCB*next;}pcb;structPCBqueue[5]={{9,0,3,Hready",&queue[1]},{3&
4、0,3,leady”,&queue[2]},{30,0,6,nreadyH,&queue[3]},{29,0,3,“ready”,&queue[4]},{0,0,4,Hready",&queue[0]}};pcb*p=&queue[0];pcb*search()〃找出优先级最大的一个进程{pcb*p=&queue[0];pcb*q=&queue[1];inti=0;for(i=0;i<4;i++)if(p->prioritypriority&&q・>STATE!="encT){p=q;q++;}elseq++;returnp;}voidcal
5、culate(pcb*p){inti;if(p->ALLTIME==O){p->STATE=nendn;p->priority=p・>priority-3;}else{p->STATE=HdoingH;++p->CPUTIME・-p->ALLTIME;—p->priority;}if(p->ALETIME==O){p->STATE=nendu;p->priority=p・>priority-2;for(i=0;i<5;i++)if(queue[i].STATE==nreadyn)queue[i].priority++;if(queue[i].ALET
6、IME>0)queue[i].STATE=HreadyH;}}voiddisplay(){inti;printf(nID,priority,CPUTIME,ALETIME,STATEH);for(i=0;i<5;i++)printf(n%d,%d,%d,%d,%s'i,queue[i].priority,queue[i].CPUTIME,queue[i].ALETIME,queue[i].STATE);}voidmain(){inti;printf("所有进程都没运行时的pcb的内容:");display();printf(n运行优先权
7、最高的进程:”);p=search();calculate(p);displayO;while(queue[O].STATE==nreadynllqueue[l].STATE==,'readynllqueue[3].STATE==nreadynllqueue[4].STATE==nreadyn){p二search。;calculate(p);}printf(”最后结果为:”);display();程序运行的结果如下:*eH:Debugpcbl.exe"所有进程都没运行时的Mb的内容:ID,priorit—CPUTIHE.ALLTIHE,S
8、TATE9,0,3,ready38,0.3.ready2,30,0.6.ready3.29.0,3.read