1、(3)优先数改变的原则: 进程在就绪队列中呆一个时间片,优先数增加1。 进程每运行一个时间片,优先数减3。(4)为了清楚地观察每个进程的调度过程,程序应将每个时间片内的进程的情况显示出来,包括正在运行的进程,处于就绪队列中的进程和处于阻塞队列中的进程。(5)分析程序运行的结果,谈一下自己的认识。四、实验结果及分析1.实验步骤(2)分析程序运行的结果,谈一下自己的认识。2.实验代码#include iostream.hint i;/循环值 int j;/还在阻塞或就绪队列中的进程数 int s;int m;/最大priority的id struct pcb int id; int p; /pri
2、ority 优先数 int cputime; int alltime; int startblock; int blocktime; int state; /0 表示ready 1表示end -1表示block ;struct 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.blo
3、cktime=0) pro0.state=0; if(pro0.state=0&pro0.startblock!=-1) pro0.startblock-;return 1; if(pro0.state=-1&pro0.blocktime!=0) pro0.blocktime-;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=0;iproi.p) max=proi+1.p;
4、 m=proi+1.id; return m;void change() maxp(); int x;/得到m现在的数组编号 proi.p+; if(proi.id=m) x=i; prox.cputime+; prox.p=prox.p-4; prox.alltime-; if(prox.alltime=0) prox.state=1;void display() change(); coutRUNNING PROG:mendl;=n;ID cout.width(10);proi.id;endlPRIORITY proi.p;CPUTIME proi.cputime;ALLTIME proi
5、.alltime;STARTBLOCKproi.startblock;BLOCKTIME proi.blocktime;STATE proi.state;void main() j=5;/刚开始有5个进程 while(j! if(proi.state=1) for(; proi=proi+1; j=j-1; display(); getchar();3.实验结果在Microsoft Visual C+ 6.0 中运行以上程序,得结果如下:1=ID 0 1 2 3 4PRIORITY 10 35 31 30 1CPUTIME 0 1 0 0 0ALLTIME 3 2 6 3 4STARTBLOC
6、K 1 -1 -1 -1 -1BLOCKTIME 3 0 0 0 0STATE 0 0 0 0 0PRIORITY 11 32 32 31 2CPUTIME 0 2 0 0 0ALLTIME 3 1 6 3 4STARTBLOCK 0 -1 -1 -1 -1PRIORITY 12 29 33 32 3CPUTIME 0 3 0 0 0ALLTIME 3 0 6 3 4STARTBLOCK -1 -1 -1 -1 -1STATE -1 1 0 0 02ID 0 2 3 4PRIORITY 13 30 33 4CPUTIME 0 1 0 0ALLTIME 3 5 3 4STARTBLOCK -1
7、-1 -1 -1BLOCKTIME 2 0 0 0STATE -1 0 0 03PRIORITY 14 31 30 5CPUTIME 0 1 1 0ALLTIME 3 5 2 4BLOCKTIME 1 0 0 0PRIORITY 15 28 31 6CPUTIME 0 2 1 0ALLTIME 3 4 2 4BLOCKTIME 0 0 0 0PRIORITY 16 29 28 7CPUTIME 0 2 2 0ALLTIME 3 4 1 4STATE 0 0 0 0PRIORITY 17 26 29 8CPUTIME 0 3 2 0ALLTIME 3 3 1 4PRIORITY 18 27 26
8、 9CPUTIME 0 3 3 0ALLTIME 3 3 0 4STATE 0 0 1 0ID 0 2 4PRIORITY 19 24 10CPUTIME 0 4 0ALLTIME 3 2 4STARTBLOCK -1 -1 -1BLOCKTIME 0 0 0STATE 0 0 0PRIORITY 20 21 11CPUTIME 0 5 0ALLTIME 3 1 4PRIORITY 21 18 12CPUTIME 0 6 0ALLTIME 3 0 4STATE 0 1 0ID 0 4PRIORITY 18 13CPUTIME 1 0ALLTIME 2 4STARTBLOCK -1 -1BLOC
9、KTIME 0 0STATE 0 0PRIORITY 15 14CPUTIME 2 0ALLTIME 1 4PRIORITY 12 15CPUTIME 3 0ALLTIME 0 4STATE 1 04ID 4PRIORITY 12CPUTIME 1ALLTIME 3STARTBLOCK -1BLOCKTIME 0STATE 0PRIORITY 9CPUTIME 2ALLTIME 2PRIORITY 6CPUTIME 3ALLTIME 1PRIORITY 3CPUTIME 4ALLTIME 0STATE 14.实验结果分析动态优先权是指,在创建进程时所赋予的优先权,是可以随进程的推进或随其等待时
10、间的增加而改变的,以便获得更好的调度性能。在此次实验中具体来说是指:进程在就绪队列中呆一个时间片,优先数增加1;进程每运行一个时间片,优先数减3。运行程序后,进程1的优先数最大,即优先权最高。因此首先调度进程1,RUNNING PROG:图1 优先调度进程1此后进程1完成,状态值为1表示END,再比较0,2,3,4进程的优先数,发现进程2的优先数最大,运行进程2,运行1个时间片后再比较,进程3优先数最高,则优先运行进程3。以此类推。图2 最终5个进程全部完成综上所述,程序运行过程中逐步实现各进程的调度,最终如结果所示,0-4共5个进程都已完成,即STATE值均为1。5.实验心得通过本次操作系统综合实验我更好地掌握了操作系统的基本概念、基本原理、及基本功能。特别是进程的概念、进程控制块的概念以及进程的三种基本状态等概念。从而培养和提高了编制清晰、合理、可读性好的系统程序的能力,进一步加深了对操作系统课程的理解,切实锻炼了我的实践技能。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1