使用动态优先权的进程调度算法的模拟实验

上传人:第*** 文档编号:38796018 上传时间:2018-05-07 格式:DOC 页数:13 大小:239KB
返回 下载 相关 举报
使用动态优先权的进程调度算法的模拟实验_第1页
第1页 / 共13页
使用动态优先权的进程调度算法的模拟实验_第2页
第2页 / 共13页
使用动态优先权的进程调度算法的模拟实验_第3页
第3页 / 共13页
使用动态优先权的进程调度算法的模拟实验_第4页
第4页 / 共13页
使用动态优先权的进程调度算法的模拟实验_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《使用动态优先权的进程调度算法的模拟实验》由会员分享,可在线阅读,更多相关《使用动态优先权的进程调度算法的模拟实验(13页珍藏版)》请在金锄头文库上搜索。

1、- 1 -使用动态优先权的进程调度算法的模拟使用动态优先权的进程调度算法的模拟1 1、实验目的、实验目的 通过动态优先权算法的模拟加深对进程概念和进程调度过程的理解。通过动态优先权算法的模拟加深对进程概念和进程调度过程的理解。 2 2、实验内容、实验内容 (1 1)用)用 C C 语言来实现对语言来实现对 N N 个进程采用动态优先算法的进程调度;个进程采用动态优先算法的进程调度; (2 2)每个用来标识进程的进程控制块)每个用来标识进程的进程控制块PCBPCB 用结构来描述,包括以下字段:用结构来描述,包括以下字段: 进程标识符进程标识符 idid 进程优先数进程优先数 prioritypr

2、iority,并规定优先数越大的进程,其优先权越高;,并规定优先数越大的进程,其优先权越高; 进程已占用的进程已占用的 CPUCPU 时间时间 cputimecputime ; 进程还需占用的进程还需占用的 CPUCPU 时间时间 alltimealltime,当进程运行完毕时,当进程运行完毕时,alltimealltime 变为变为 0 0; 进程的阻塞时间进程的阻塞时间 startblockstartblock,表示当进程再运行,表示当进程再运行 startblockstartblock 个时间片后,个时间片后, 进程将进入阻塞状态;进程将进入阻塞状态; 进程被阻塞的时间进程被阻塞的时间

3、blocktimeblocktime,表示已阻塞的进程再等待,表示已阻塞的进程再等待 blocktimeblocktime 个时间个时间 片后,将转换成就绪态片后,将转换成就绪态 进程状态进程状态 statestate; 队列指针队列指针 nextnext,用来将,用来将 PCBPCB 排成队列排成队列 (3 3)优先数改变的原则:)优先数改变的原则: 进程在就绪队列中呆一个时间片,优先数增加进程在就绪队列中呆一个时间片,优先数增加 1 1 进程每运行一个时间片,优先数减进程每运行一个时间片,优先数减 3 3。 (4 4)假设在调度前,系统中有)假设在调度前,系统中有 5 5 个进程,它们的初

4、始状态如下:个进程,它们的初始状态如下: IDID0 01 12 23 34 4 PRIORITYPRIORITY9 93838303029290 0 CPUTIMECPUTIME0 00 00 00 00 0 ALLTIMEALLTIME3 33 36 63 34 4 STARTBLOCKSTARTBLOCK2 2-1-1-1-1-1-1-1-1 BLOCKTIMEBLOCKTIME3 30 00 00 00 0 STATESTATEREADYREADYREADYREADYREADYREADYREADYREADYREADYREADY (5 5)为了清楚地观察诸进程的调度过程,程序应将每个时间

5、片内的进程的情况)为了清楚地观察诸进程的调度过程,程序应将每个时间片内的进程的情况 显示出来,参照的具体格式如下:显示出来,参照的具体格式如下: RUNNINGRUNNING PROGPROG: i i READY_QUEUE:-id1-id2READY_QUEUE:-id1-id2 BLOCK_QUEUE:-id3-id4BLOCK_QUEUE:-id3-id4 = IDID 0 01 12 23 34 4 PRIORITYPRIORITY P0P0P1P1P2P2P3P3P4P4 CPUTIMECPUTIME C0C0C1C1C2C2C3C3C4C4 ALLTIMEALLTIME A0A0

6、A1A1A2A2A3A3A4A4 STARTBLOCKSTARTBLOCK T0T0T1T1T2T2T3T3T4T4 BLOCKTIMEBLOCKTIME B0B0B1B1B2B2B3B3B4B4 STATESTATE S0S0S1S1S2S2S3S3S4S4- 2 -程序代码:程序代码:/A.4使用动态优先权的进程调度算法的模拟 /by YanQiwei#include #define N 5voidvoid init();init();voidvoid print();print();intint getRunning();getRunning();voidvoid sort();sort

7、();intint run(run(intint time);time);enum STATEReady,Run,Block,RunOut;struct PROCESSint ID;int Priority;int Cputime;int Alltime;int Startblock;int Blocktime;enum STATE State;ProcessN;int READYN;int BLOCKN;int RUNOUTN2;intint main()main()int Time=0;init();printf(“Time:%dn“,Time);sort();print();while(

8、1)Time+;getchar();printf(“Time:%dn“,Time);if(run(Time)break;/sort();/print(Time);return 0;voidvoid init()init()- 3 -int i;/printf(“Input properties of %d process(PRIORITY,ALLTIME,STARTBLOCK,BLOCKTIME):n“,/N);for(i=0;i=0)printf(“tRUNNING PROG: %dn“,getRunning();printf(“tREADY_QUEUE:“);for(i=0;i=0)pri

9、ntf(“-%d“,ProcessREADYi.ID);elsebreak; printf(“ntBLOCK_QUEUE:“);for(i=0;i=0)printf(“-%d“,ProcessBLOCKi.ID);elsebreak;- 4 -printf(“n=n“);printf(“IDt“);for(i=0;i=0)printf(“-%d(%d)“,ProcessRUNOUTi0.ID,RUNOUTi1);elseprintf(“n“);break; printf(“n“);intint getRunning()getRunning()int i;for(i=0;ij;-k)- 6 -R

10、EADYk=READYk-1;READYj=i;break;else if(Processi.State=Block)for(j=0;j=ProcessBLOCKj.Blocktime) continue; elsefor(k=N-1;kj;-k)BLOCKk=BLOCKk-1;BLOCKj=i;break;intint run(run(intint time)time)int i,runNum;runNum=READY0;if(runNum=0)ProcessrunNum.Priority-=3;ProcessrunNum.Alltime-=1;ProcessrunNum.Cputime+=

11、1;ProcessrunNum.State=Run;for(i=0;i=0)ProcessrunNum.Startblock-=1;if(ProcessrunNum.Startblock=0)ProcessrunNum.State=Block;/ProcessrunNum.Startblock-=1;else if(BLOCK0=0)for(i=0;iN;+i)if(Processi.State=Block)Processi.Startblock=-1;Processi.Blocktime-=1;if(Processi.Blocktime=0)Processi.State=Ready;/print();sort();- 8 -print();return 0;- 9 - 10 - 11 - 12 - 13 -3 3、思考题、思考题 (1 1)在实际的调度中,除了按调度算法选择下一个执行的进程外,还应处理哪)在实际的调度中,除了按调度算法选择下一个执行的进程外,还应处理哪 些工作?些工作? 答:1.记录系统中所有进程的执行情况 作为进程调度的准备,进程管理模块必须将系统中各个进程的执行特征记录在各个进程的 PCB 表中。 2.进行进程上下文交换 一个进程的上下文包括进程的状态,有关变量和数据结构的值。机器寄存器的值和 PCB 以 及有关程序,数据等。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 教学课件 > 初中课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号