《2022年实验高优先权优先的进程调度算法模拟归纳 .pdf》由会员分享,可在线阅读,更多相关《2022年实验高优先权优先的进程调度算法模拟归纳 .pdf(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、实验 3 高(动态)优先权优先的进程调度算法模拟1. 实验目的通过动态优先权算法的模拟加深对进程概念和进程调度过程的理解。2. 实验环境装有操作系统Windows XP 和开发工具VC+6.0,内存在 256M 以上的微机;或者:装有Linux(Fedora 7)操作系统和gcc 编译器,内存在256M 以上的微机。3. 实验内容(1)用 C 语言来实现对N 个进程采用动态优先权优先算法的进程调度。(2)每个用来标识进程的进程控制块PCB用结构来描述,包括以下字段:进程标识数ID;进程优先数PRIORITY ,并规定优先数越大的进程,其优先权越高;进程已占用的CPU时间 CPUTIME;进程还
2、需占用的CPU时间 NEEDTIME 。当进程运行完毕时,NEEDTIME变为 0;进程的阻塞时间STARTBLOCK,表示当进程再运行STARTBLOCK 个时间片后, 进程将进入阻塞状态;进程被阻塞的时间BLOCKTIME ,表示已阻塞的进程再等待BLOCKTIME个时间片后,进程将转换成就绪状态;进程状态STATE ;(READY , RUNNING, BLOCK, FINISH) 队列指针NEXT ,用来将 PCB排成队列。(3)优先数改变的原则:进程在就绪队列中呆一个时间片,优先数增加1;进程每运行一个时间片,优先数减3。(4)假设在调度前,系统中有5 个进程,它们的初始状态如下:I
3、D 0 1 2 3 4 PRIORITY 9 38 30 29 0 CPUTIME 0 0 0 0 0 NEEDTIME 3 3 6 3 4 STARTBLOCK 2 -1 -1 -1 -1 BLOCKTIME 3 0 0 0 0 STATE READY READY READY READY READY (5)为了清楚地观察进程的调度过程,程序应将每个时间片内的进程的情况显示出来,参照的具体格式如下:RUNNING PROCESS: $id0 READY QUEUE: $id1-$id2 BLOCK QUEUE: $id3-$id4 FINISH QUEUE: $id0-$id1-$id2-$i
4、d3-$id4 = ID PRIORITY CPUTIME NEEDTIME STATE STARTBLOCK BLOCKTIME 0 XX XX XX XX XX XX 1 XX XX XX XX XX XX 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 10 页 - - - - - - - - - 2 XX XX XX XX XX XX 3 XX XX XX XX XX XX 4 XX XX XX XX XX XX = 4. 实验要求(1) 将源程序 (priori
5、ty.c) 和程序运行结果写入实验报告。(2) 将该算法执行过程与高响应比优先调度算法的执行过程进行比较。#include #include using namespace std; int i; / 循环值int j; / 还在阻塞或就绪队列中的进程数int s; int m; / 最大 priority 的 id struct pcb int id; int p; /priority int cputime; int alltime; int startblock; int blocktime; int state; /0 表示 ready 1 表示 end -1 表示 block ; s
6、truct pcb pro5= 0,9,0,3,2,3,0, 1,38,0,3,-1,0,0, 2,30,0,6,-1,0,0, 3,29,0,3,-1,0,0, 4,0,0,4,-1,0,0 ; int changestate0() if(pro0.startblock=0) pro0.state=-1; pro0.startblock-; return 1; if(pro0.blocktime=0) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 10 页 - - -
7、 - - - - - - pro0.state=0; return 1; if(pro0.state=0&pro0.startblock!=-1) pro0.startblock-;return 1; if(pro0.state=-1&pro0.blocktime!=0) pro0.blocktime-;return 1; int state0() changestate0(); s=pro0.p; if(pro0.state=-1) s=-100; return s; int maxp()/ 求出最大priority state0(); int max=s; m=pro0.id; for(i
8、=0;iproi.p) max=proi+1.p; m=proi+1.id; return m; void change() maxp(); int x;/ 得到 m 现在的数组编号for(i=0;ij;i+) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 10 页 - - - - - - - - - proi.p+; for(i=0;ij;i+) if(proi.id=m) x=i; prox.cputime+; prox.p=prox.p-4; prox.allti
9、me-; if(prox.alltime=0) prox.state=1; void display() change(); coutRUNNING PROG:mendl; cout=n; coutID ; for(i=0;ij;i+) cout.width(10); coutproi.id; coutendlPRIORITY ; for(i=0;ij;i+) cout.width(10); coutproi.p; coutendlCPUTIME ; for(i=0;ij;i+) cout.width(10); coutproi.cputime; coutendlALLTIME ; for(i
10、=0;ij;i+) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 10 页 - - - - - - - - - cout.width(10); coutproi.alltime; coutendlSTARTBLOCK; for(i=0;ij;i+) cout.width(10); coutproi.startblock; coutendlBLOCKTIME ; for(i=0;ij;i+) cout.width(10); coutproi.blocktime; cout
11、endlSTATE ; for(i=0;ij;i+) cout.width(10); coutproi.state; coutendl; int main() j=5;/ 刚开始有5 个进程while(j!=0) for(i=0;ij;i+) if(proi.state=1) for(;ij;i+) proi=proi+1; j=j-1; display(); getchar(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 10 页 - - - - - - - -
12、- 运行结果:RUNNING PROG:1 = ID 0 1 2 3 4 PRIORITY 10 35 31 30 1 CPUTIME 0 1 0 0 0 ALLTIME 3 2 6 3 4 STARTBLOCK 1 -1 -1 -1 -1 BLOCKTIME 3 0 0 0 0 STATE 0 0 0 0 0 RUNNING PROG:1 = ID 0 1 2 3 4 PRIORITY 11 32 32 31 2 CPUTIME 0 2 0 0 0 ALLTIME 3 1 6 3 4 STARTBLOCK 0 -1 -1 -1 -1 BLOCKTIME 3 0 0 0 0 STATE 0 0
13、 0 0 0 RUNNING PROG:1 = ID 0 1 2 3 4 PRIORITY 12 29 33 32 3 CPUTIME 0 3 0 0 0 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 10 页 - - - - - - - - - ALLTIME 3 0 6 3 4 STARTBLOCK -1 -1 -1 -1 -1 BLOCKTIME 3 0 0 0 0 STATE -1 1 0 0 0 RUNNING PROG:2 = ID 0 2 3 4 PRIO
14、RITY 13 30 33 4 CPUTIME 0 1 0 0 ALLTIME 3 5 3 4 STARTBLOCK -1 -1 -1 -1 BLOCKTIME 2 0 0 0 STATE -1 0 0 0 RUNNING PROG:3 = ID 0 2 3 4 PRIORITY 14 31 30 5 CPUTIME 0 1 1 0 ALLTIME 3 5 2 4 STARTBLOCK -1 -1 -1 -1 BLOCKTIME 1 0 0 0 STATE -1 0 0 0 RUNNING PROG:2 = ID 0 2 3 4 PRIORITY 15 28 31 6 CPUTIME 0 2
15、1 0 ALLTIME 3 4 2 4 STARTBLOCK -1 -1 -1 -1 BLOCKTIME 0 0 0 0 STATE -1 0 0 0 RUNNING PROG:3 = ID 0 2 3 4 PRIORITY 16 29 28 7 CPUTIME 0 2 2 0 ALLTIME 3 4 1 4 STARTBLOCK -1 -1 -1 -1 BLOCKTIME 0 0 0 0 STATE 0 0 0 0 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 10
16、页 - - - - - - - - - RUNNING PROG:2 = ID 0 2 3 4 PRIORITY 17 26 29 8 CPUTIME 0 3 2 0 ALLTIME 3 3 1 4 STARTBLOCK -1 -1 -1 -1 BLOCKTIME 0 0 0 0 STATE 0 0 0 0 RUNNING PROG:3 = ID 0 2 3 4 PRIORITY 18 27 26 9 CPUTIME 0 3 3 0 ALLTIME 3 3 0 4 STARTBLOCK -1 -1 -1 -1 BLOCKTIME 0 0 0 0 STATE 0 0 1 0 RUNNING PR
17、OG:2 = ID 0 2 4 PRIORITY 19 24 10 CPUTIME 0 4 0 ALLTIME 3 2 4 STARTBLOCK -1 -1 -1 BLOCKTIME 0 0 0 STATE 0 0 0 RUNNING PROG:2 = ID 0 2 4 PRIORITY 20 21 11 CPUTIME 0 5 0 ALLTIME 3 1 4 STARTBLOCK -1 -1 -1 BLOCKTIME 0 0 0 STATE 0 0 0 RUNNING PROG:2 = ID 0 2 4 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - -
18、 - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 10 页 - - - - - - - - - PRIORITY 21 18 12 CPUTIME 0 6 0 ALLTIME 3 0 4 STARTBLOCK -1 -1 -1 BLOCKTIME 0 0 0 STATE 0 1 0 RUNNING PROG:0 = ID 0 4 PRIORITY 18 13 CPUTIME 1 0 ALLTIME 2 4 STARTBLOCK -1 -1 BLOCKTIME 0 0 STATE 0 0 RUNNING PROG:0 = ID 0 4 PRIORITY 15 1
19、4 CPUTIME 2 0 ALLTIME 1 4 STARTBLOCK -1 -1 BLOCKTIME 0 0 STATE 0 0 RUNNING PROG:0 = ID 0 4 PRIORITY 12 15 CPUTIME 3 0 ALLTIME 0 4 STARTBLOCK -1 -1 BLOCKTIME 0 0 STATE 1 0 RUNNING PROG:4 = ID 4 PRIORITY 12 CPUTIME 1 ALLTIME 3 STARTBLOCK -1 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心
20、整理 - - - - - - - 第 9 页,共 10 页 - - - - - - - - - BLOCKTIME 0 STATE 0 RUNNING PROG:4 = ID 4 PRIORITY 9 CPUTIME 2 ALLTIME 2 STARTBLOCK -1 BLOCKTIME 0 STATE 0 RUNNING PROG:4 = ID 4 PRIORITY 6 CPUTIME 3 ALLTIME 1 STARTBLOCK -1 BLOCKTIME 0 STATE 0 RUNNING PROG:4 = ID 4 PRIORITY 3 CPUTIME 4 ALLTIME 0 STARTBLOCK -1 BLOCKTIME 0 STATE 1 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 10 页 - - - - - - - - -