版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1.实验名称:动态优先权调度过程中就绪队列的模拟2.实验要求:采用动态优先权的进程调度算法,用C语言编程模拟调度过程中每个时间片内的就绪队列。3.实验内容:(1)每个进程控制块PCB用结构描述,包括以下字段:*进程标识符id*进程优先数priority,并规定优先数越大的进程,其优先权越高。*进程已占用的CPU时间cputime*进程还需占用的CPU时间alltime,当进程运行完毕时,aiitime变为0*进程的阻塞时间startblock,当进程再运行startblock个时间片后,进程将进入阻塞状态*进程被阻塞的时间blocktime,已阻塞的进程再等待blocktime个时间片后,将转
2、换成就绪状态*进程状态state*队列指针next,将PCB排成队列。2)调度前,系统中有五个进程,它们的初始状态如下:ID01234PRIORITY93830290CPUTIME00000ALLTIME33634STARTBLOCK2-1-1-1-1BLOCKTIME30000STATEREADYREADYREADYREADYREADY3)进程在就绪队列呆一个时间片,优先数增加1。4)进程每运行一个时间片,优先数减3。5)按下面格式显示每个时间片内就绪队列的情况:READY_QUEUE:-id1-id24.任务分析进程控制块用结构体来表示,包含它的各项属性。建立两个队列:一个就绪队列,一个阻
3、塞队列。创建一个进程控制块表示当前正在运行的进程。程序开始运行时,所有进程都在就绪队列中。当startblock减少到0时,进程进入阻塞队列。在阻塞队列中的进程,当blocktime减少到0时,转入就绪队列。在就绪队列中的进程,如果优先级比当前正在执行的进程高,就可以取代当前进程获取时间片。当前进程如果运行完毕,就绪队列中优先级最高的进程就可以成为新当前进程。5.程序流程图程序清单#includeiostream#includestringusingnamespacestd;#defineLEN5typedefenumSTATEREADYBLOCKENDSTATE;/定义进程控制块typede
4、fstructPCBintid;intpriority;intcputime;intalltime;intstartblock;intblocktime;STATEstate;PCB;/定义队列typedefstructqueueintsize;PCB*dataLEN;Queue;PCBpsLEN;PCB*cp;/进程最大数量/进程状态/就绪/阻塞/完成/进程标识符/进程优先级/已占用的CPU时间/还需占用的CPU时间/阻塞时间/被阻塞时间/进程状态/队列中进程的数量/进程的指针/进程数组/当前正在运行的进程QueuerQueue,bQueue;/就绪队列和阻塞队列/就绪队列按优先级降序排序(
5、使用了冒泡排序法)voidrQueueSort()PCB*temp;for(inti=0;irQueue.size-1;i+)for(intj=0;jrQueue.size-1-i;j+)if(rQueue.dataj-priorityrQueue.dataj+1-priority)temp=rQueue.dataj;rQueue.dataj=rQueue.dataj+1;rQueue.dataj+1=temp;/初始化voidinit()/给进程赋值for(inti=0;iLEN;i+)psi.id=i;psi.state=READY;psi.cputime=0;psi.alltime=3;
6、psi.blocktime=0;psi.startblock=T;ps0.priority=9;ps1.priority=38;ps2.priority=30;ps3.priority=29;ps4.priority=0;ps2.alltime=6;ps4.alltime=4;ps0.startblock=2;ps0.blocktime=3;cp=NULL;/当前进程赋空bQueue.size=0;/阻塞队列没有进程for(inti=0;iLEN;i+)bQueue.datai=NULL;rQueue.datai=rQueue.size=5;/所有进程全部进入就绪队列rQueueSort();
7、/对就绪队列排序/打印voidprint()coutid;coutnREADY_QUEUE:;for(inti=0;irQueue.size;i+)cout-rQueue.datai-id;coutnBLOCK_QUEUE:;for(inti=0;ibQueue.size;i+)cout-bQueue.datai-id;coutnendl;coutIDtt;for(inti=0;iLEN;i+)coutpsi.idt;coutnPRI0RITYt;for(inti=0;iLEN;i+)coutpsi.priorityt;coutnCPUTIMEtt;for(inti=0;iLEN;i+)cou
8、tpsi.cputimet;coutnALLTIMEtt;for(inti=0;iLEN;i+)coutpsi.alltimet;coutnSTARTBLOCKt;for(inti=0;iLEN;i+)coutpsi.startblockt;coutnBLOCKTIMEt;for(inti=0;iLEN;i+)coutpsi.blocktimet;coutnSTATEtt;for(inti=0;iLEN;i+)if(psi.state=READY)coutREADYt;elseif(psi.state=BLOCK)coutBLOCKt;elseif(psi.state=END)coutEND0
9、)temp=q-data0;/取出队首进程for(inti=0;isize一;returntemp;/返回队首进程returnNULL;/入队voidpush(Queue*q,PCB*p)if(q-sizedataq-size=p;/将入队的进程放在队尾q_size+;return;/运行进程voidrun()if(rQueue.size0|bQueue.size0)if(cp=NULL)/程序一开始运行时,从就绪队列取出首进程cp=pop(&rQueue);/当前进程没有结束,但优先级比就绪队列首进程低if(cp_alltime0&cp_prioritystate=END;cp=pop(&r
10、Queue);/如果当前进程运行结束/改变进程状态/从就绪队列取出新的当前进程cppriority-=3;/修改当前进程的优先级/将当前进程放入就绪队列/就绪队列队首进程成为当前进程/startblock为0,标志着当前进程要进入阻塞状态if(cpstartblock=0&cpblocktime0)cpstate=BLOCK;push(&bQueue,cp);cp=pop(&rQueue);elseif(cpstartblock0)cpstartblock一;/修改当前进程的状态/将当前进程加入阻塞队列/从就绪队列取出新的当前进程/当前进程的startblock为正数时/运行一次减一个时间片c
11、pcputime+;/当前进程占用CPU时间片+1if(cpalltime0)/当前进程还需运行的时间片-1cpalltime;if(cpalltime=0)/减到0时,修改进程状态cpstate=END;/每运行一个时间片/就绪队列中的进程优先级+1/每运行一个时间片/阻塞队列中的进程blocktime-1for(inti=0;irQueue.size;i+)rQueue.datai-priority+;for(inti=0;i0)bQueue.datai-blocktime-;/当阻塞队列队首进程blocktime为0时if(bQueue.size0&bQueue.data0-blockt
12、ime=0)bQueue.data0-state=READY;/修改进程状态push(&rQueue,pop(&bQueue);/将阻塞队列首进程取出,放入就绪队列/每运行一个时间片,就绪队列排一次序rQueueSort();/主函数intmain()init();/初始化print();/打印进程信息while(1)_sleep(1000);if(rQueue.size=0&bQueue.size=0)/当两个队列都为空时,结束程序cp-state=END;break;run();/运行进程print();/打印进程信息return0;实验过程记录IGPROG:1QLiEUE:-2-3-0-
13、4亂EUE:m匸:WINDaWSsystem32cmd.exeNGPROG:r_QUEUE:-l-.2-3-0-4x33003TQlx630o程序开始执行,当前进程是优先级最高的1号进程,1号进程的优先级减3、cputime+、0go323READY13803-L0READYDYEAoR2903-10READY-10READY0100323READY13512-10READY4L04-10READYalltime-。在就绪队列中的进程优先级全部加1。CWINDOWSy5tem32crrdjExeXRUNNINGPROG:1READYQLELE:-2-3-0-4BLOCKQLELE:D0L234
14、PRIORITYL22933323CPUTIME03000rLLTIME30634STARTBLOCK2-1-1-1-1BLOCKTIME30000STATEREADYENDREADYREADYREADYRUNNING-PROG:2READY_QVELE:-3-0-4BLOd_QUEUE:D0L3PRIORITY13293033fcPUTIME030ALLTIME303STARTBLQCK2-1-1-1-1BLOCKTIME30000pATEREADYENDREADYREADYREADY执行几次之后,1号进程执行完毕而且优先级也不是最高的了,所以优先级为33的2号进程成为当前进程,开始执行。Q
15、ICAWINDOWS5ystem32cmdjeKe-XRUNNINGPROG:2READYQUEUE:-3-0-4BLOCKQLELE:D0L3PRIORITY13293033pPUTIME030kLLTIME303STARTBLOCK2-1-1-1-1BLOCKTIME30000STATEREADYENDREADYREADYREADYRUNNINGPROG:3READYQUElE:-2-0-4BLOCK_QUEUE:ID0123PRIORITY14293130fcPUTIME0311ALLTIME3052STARTBLQCK2-1-1-1-1BLOCKTIME30000RATEREADYEN
16、DREADYREADYREADY2号进程执行一次后,优先级由33降低到30,于是3号进程成为当前进程,2号进程进入就绪队列等待。BlCAWINDOWS5y5tem32cmd.exeXRUNNINGPROG:3READYQUEUE:-2-0-4BLOCKQUEUE:AD0L23PRIORITY14293130CPUTIME0311Rlltime3052STARTBLOCK2-1-1-1-1BLjOCKTIME30000STATEREADYRUNNINGPROG:2READYQl:El:E:-3-0-4BLOCKQUEUE:ENDREADYREADYREADYID0L234PRIORITY1529
17、28316fPUTME03210LLTIME30424STARTBLOCK2-1-1-1-1BLOCKTIME30000CTATEREADYENDREADYREADYREADY同理,执行一次后,3号进程的优先级由33降低到30,2号进程再次成为当前进程,3号进程进入就绪队列等待。这个过程会重复几次,就不重复了。mCAWINDOWS55tem32cmd.e3ce-XRUNNINGPROG:3READYQUEUE:-2-0-4BLOCKQLELE:ID0123PRIORITYL8292726fPUTME0333ALLTIME3030STARTBLOCK2-1-1-1-1ELOCKTIME30000
18、RATEREADYENDREADYENDREADYKUNNING-PROG:2READY_QLELE:-0-4BLOCK_QUEUE:D0L234PRIORITY1929242610fPUTME03430LLTIME30204STARTBLOCK2-1-1-1-1BLOCKTIME30000CTATEREADYENDREADYENDREADY3号进程执行完毕后退出,2号进程成为当前进程。EHAWINDOWS5y5tem32cmd.eMe-XRUNNINGPROG:2READY_QLELE:-0-4BbOCK.QUEUE:D0L234PRIORITY2129182612CPUTIME03630R
19、lltime30004STARTBLOCK2-1-1-1-1BLjOCKTIME30000STATEREADYENDENDENDREADYRUNNINGPROG:0READYQUEUE:-4BLOCK_QUEUE:ID0L234PRIORITY1829182613pUTIMEL3e30LLTIME20004STARTBLOCK1-1-1-1-1BLQCKTIME30000CTATEREADYENDENDENDREADY2号进程执行完毕后,0号进程成为当前进程。mCAWINDOWSsystem32cmd.exe一XRUNNINGPROG:0READYQUEUE:-4BLOCKQVELE:ID01
20、234IPRIORITY1529182614pUTIME23630Rlltime10004STARTBLOCK0-1-1-1-1BbOCKTIME30000CTATEREADYENDENDENDREADYRUNNINGPROG:4READYQUEUE:N.OCK,QLELE:-XOD0L34PRIORITY1229182614CPUTIME2331Rlltime1003STARTBLOCK0-1-1-1-1BbOCKTIME20000RATEBLOCKENDENDENDREADY0号进程执行2次后,startblock为0了,进入阻塞队列,停止运行,4号进程开始执行。1i5CAWINDOWSy
21、5tem32cmdjeiOID0L3PRIORITY1229182611CPUTIME233RlltimeL00fSTARTBLOCK0-1-1-I-1BLjOCKTIMEL0000STATEBLOCKENDENDENDREADYRUNNINGPROG:4READYQUEUE:-QBLOCK.QVEIE:ID0L234PRIORITYL22918268fPUTME23633ALLTIMEL0001STARTBLOCK0-1-1-1-1BLOCKTIME00000CTATEREADYENDENDENDREADY4号进程运行几次后,0号进程的blocktime为0了,0号进程从阻塞队列转入就绪队列mj&tSCzVWINDOWSVsystemJZXcmd.ese-XRUNNINGPROG:4READYQUEUE
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 魔法巫术培训课件
- 铁路安全管理培训策划书课件
- 2025 小学六年级数学上册圆的问题链教学课件
- 2025 小学六年级数学上册圆的海峡航线规划课件
- 2025年国企资产管理岗笔试题库及答案
- 突发环境事件应急预案
- 溶剂油销售技巧培训课件
- 高铁小知识课件
- 未来五年非税收入信息管理应用企业ESG实践与创新战略分析研究报告
- 未来五年强震观测服务企业ESG实践与创新战略分析研究报告
- 超声内镜穿刺的护理配合
- 网络空间测绘与安全可视化技术
- 2022年中国工艺美术馆招聘考试真题
- 辅导员工作的职责与使命课件
- 防造假管理程序文件
- ktv股东合作协议书
- 2023年北京海淀区高三一模化学试题及答案
- 肿瘤内科静脉给予抗肿瘤药物评价标准
- 医疗器械生产质量管理规范无菌医疗器械实施细则和检查评定标准
- 吊篮租赁安拆分包合同
- GB/T 20728-2006封闭管道中流体流量的测量科里奥利流量计的选型、安装和使用指南
评论
0/150
提交评论