时间片轮转调度算法_第1页
时间片轮转调度算法_第2页
时间片轮转调度算法_第3页
时间片轮转调度算法_第4页
时间片轮转调度算法_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

1、#iiiclude #iiiclude #iiiclude #iiiclude/*进程控制块数据结构*/typedef stmct nodechar name 10;/*进程名 */int prio;/*进程优先级*/mt round;/*循环轮转法进程每次轮转的时间片*/mt cputune; /*进程累计消耗的CUP时间*/int needtime; /*进程到完成还需要的CUP时间*/mt count;/*循环轮转法一个时间片内进程运行时间*/char state;/*进程的状态:R:运行,W:等待,F:结束可stmct node *next;/*指向下一个进程的链指针*/PCB;PCB

2、 *fmish,*ready,指向三个队列的队首的指针, finish为完成队列头指针, ready为就绪队列头指针, tail为就绪队列的队尾指针, run为当前运行进程头指针*/mtN;/*定义进程的数目*/ void firstm(void); 调度就绪队列的第一个进程投入运行:void print 1 (char a);打印表头行信息void pimt2(char chose.PCB *p); 打印每一行的状态信息void priiit(chai- chose);打印每执行一次算法后所有的进程的状态信息void msen_prio(PCB *q);在优先数算法中,将尚未完成的PCB按优

3、先数顺序插入到就绪队列中;void pnor_Hut(chai- chose); 进程优先级法初始化将进程按优先级插入到就绪队列里void pnority(char chose);/进程优先级算法总函数void msert_n(PCB *q);在轮转法中,将执行了一个时间片单位(为2),但尚未完成的进程的PCB,插到就绪队列的队尾;void ioundiiin_niit(char chose); 循环轮转法初始化将就绪队列保存为FIFO队列void roundnin(char chose);循环轮转法总算法void 主函数chai chose=, while(chose!=e)&(chose!

4、=E)fflush(stdm);system(HclsM);/*pnntfC*ttt两种进程调度算法的模拟niT); pnntf(tP.进程优先级算法模拟nn); */ pnntf(”tR.循环轮转算法模拟nn”); pnntfCtE,退出程序 niT);pnntf(”t请输入你的选择:); scanf(H%c,&chose);if(chose!=e)&(chose! =E)system(nclsH);/*if(chose=,P,)|(chose=,pt)prioi_init(chose);prionty(chose);system(HclsM);*/*else */if(choser,)|(

5、chose=,R,)ioundiiui_uut(chose);loundi-un(chose); system(HclsM);)prmtf(ntt 谢谢使用!! n”); void firstm(void)/调度就绪队列的第一个进程投入运行:if(ready!=NULL)iiui=ready;read 尸 ready. next;runstate=R;iiui-next=NULL;)else(iiui=NULL;)void print 1 (char a)/打印表头行信息if(toupper(a)=P)piintf(name cputime needtiine piioiity state i

6、T);elsepnntf(name cputime needtiine count found statevoid pimt2(char chose.PCB *p)打印每一行的状态信息if(toupper(chose)=P)piuitf(%st%dt%dt%dt %ciip-name,p-cputmie,p-needtinie,p-prio.p-state);elsepnntf(,%st%dt%dt%dt%dt%cii,p-name,p-cputiine,p-needtiine,p-count,p-iound,p-sta忙);void prmt(chai- chose)/打印每执行一次算法后所

7、有的进程的状态信息 PCB *p;print 1 (chose);if(mn!=NULL)print2(chose4iin);p=ready;wliile(p!=NULL)prmt2(chose.p);p=p-next;p=finish;wliile(p!=NULL)print2(chose,p);p=p-next;void insert_pno(PCB *q)/*在优先数算法中,将尚未完成的PCB按优先数顺序插入到就绪队列中;*/PCB *p,*s,*r; /*p,r用来控制就绪队列滚动,S指向插入的队列*/s=q;p=ready;r=p;if(s-piioready-pno)/要插入的进程

8、的优先级大于ready的优先级s-next=ready;ready=s;else/要插入的进程的优先级不大于ready的优先级vhile(p)(if(p-prio=s-prio)r=p;p=p-next;elsebreak; /找到要插入的位置snext=p;r-next=s;/*void pnoi_Hiit(chai- chose)/* 进程优先级法初始化将进程按优先级插入到就绪队列里PCB *p;mt i.tiine;chaina10;ready=NULL;fiiiish=NULL;mn=NULL;pnntf(”tt进程优先级算法模拟全过程nn”);pnntf(”输入进程的个数N:iT);

9、scanf(”d”,&N);fbr(i=O;iname,na);p-cputune=O;p-needtmie=time;pstate=W;p-pno=50-tune;/设置进程优先值初值if(ieady=NULL)ready=p;ready-next=NULL;elsemsert_prio(p);pnntfC当前就绪队列的进程的信息iT);print(chose);pnntff%d个进程已按优先级从高到低进到就绪队列中n”,N);prmtf(”按回车键开始模拟优先级算法.n”); fiflush(stdin);getchaiQ;fustin();*/*void priority (char c

10、hose)/进程优先级算法总函数 mt i=l;wliile(i-un !=NULL)nm-cputime+= 1;nin-needtiine-= 1;nin-prio-=l;if(nin-needtiiiie=O) nm-next=fiiiish;finish=run;nin-state=T,;nin-prio=0;mn=NULL;fustinQ;elseif(ieady!=NULL)&(iiin-priopiio)(nin-state=,W,;nin=NULL;fhstin();)printf(”第d次执行优先级算法ii,i+);pimt(chose);(pimtfC按回车键继续下一次优先

11、级算法.n”);elsepnntf(”优先级算法模拟过程结束! n”);fflush(stdin);getcharQ;*/void insert_n(PCB *q)在轮转法中,将执行了一个时间片单位(为2), /但尚未完成的进程的PCB,插到就绪队列的队尾;tail-next=q;tail=q;q-next=NULL;void ioundnm_uiit(char chose)/*循环轮转法初始化 将就绪队列保存为FIFO队列*/PCB *p;hit ijiine;charna10;ieady=NULL;fuiish=NULL;mn=NULL;pnntf(tt循环轮转算法模拟全过程nn”);pn

12、ntf(”输入进程的个数N:iT);scanff%d”,&N);fbr(i=O;iname,na);p-cputiine=O;p-needtmie=time;p-count=0;pstate=W;p-round=2;if(ieady!=NULL)insert_rr(p);elsep-next=ready;ready=p;tail=p;pnntfC当前就绪队列的进程的信息iT);print(chose);pnntf(”d个进程已按FIFO进到就绪队列中ii,N);pnntf(”按回车键开始模循环轮转算法.n”);fiflush(stdm);getchai();nm=ready;ready=ieadynext;n】nstate=R;void ioundnm(char chose)/循环轮转法总算法hit i=l;wliile(i-un !=NULL)nm-cputime+= 1;nin-needtiine-= 1;nm-count+=l;ifi(nin-iieedtiiiie=O)Rin-next=fiiiish;finish=Rin;ninstate=F;nin-prio=0;nm=NULL;if(ready!=NULL)(fustinQ;)else(if(i-un-

温馨提示

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

评论

0/150

提交评论