版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年国投航空科技(北京)有限公司招聘备考题库完整答案详解
- 2026年国家空间科学中心质量管理处招聘备考题库含答案详解
- 2026年天津市医源卫生人才服务有限责任公司公开招聘工作人员的备考题库及一套参考答案详解
- 2026年天津市医源卫生人才服务有限责任公司公开招聘工作人员的备考题库及1套完整答案详解
- 2026年中建新科建设发展有限公司招聘备考题库完整答案详解
- 2026年北京协和医院神经科合同制科研助理招聘备考题库及答案详解一套
- 2026年天津市静海区所属部分国有企业面向社会公开招聘工作人员备考题库及参考答案详解一套
- 2026年1112月山东圣翰财贸职业学院韩语教师招聘备考题库及答案详解一套
- 2026年上海对外经贸大学招聘工作人员备考题库参考答案详解
- 2026年哈尔滨电机厂有限责任公司招聘备考题库及1套参考答案详解
- DB32T 5124.1-2025 临床护理技术规范 第1部分:成人危重症患者目标温度管理
- 食管癌的护理查房知识课件
- 高三日语二轮复习阅读专题课件
- 《双重差分法与调节效应模型:解析绿色债券价值影响》12000字(论文)
- 2025届江苏省南通市高三下学期3月二模化学试题(含答案)
- 毕业论文答辩的技巧有哪些
- 粉色小清新小红帽英语情景剧
- 酒店安全风险分级管控和隐患排查双重预防
- 2018年风电行业事故锦集
- 《重点新材料首批次应用示范指导目录(2024年版)》
- 防水班组安全晨会(班前会)
评论
0/150
提交评论