动态优先权的进程调度算法模拟_第1页
动态优先权的进程调度算法模拟_第2页
动态优先权的进程调度算法模拟_第3页
动态优先权的进程调度算法模拟_第4页
动态优先权的进程调度算法模拟_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

动向优先权的进度调动算法模拟华北科技学院计算机系综合性实验实验报告课程名称计算机操作系统实验学期2010至2011学年第2学期学生所在系部基础部年级2008级专业班级信息与计算科学学生姓名范玉文学号200809014212任课教师杜杏菁实验成绩计算机系制华北科技学院计算机系综合性实验报告《操作系统》课程综合性实验报告开课实验室:第六实验室2011年6月15日进度调动算法程序设计实验题目一、实验目的经过对进度调动算法的模拟,进一步理解进度的基本观点,加深对进度运转状态和进度调动过程、调动算法的理解。二、设施与环境硬件设施:PC机一台软件环境:安装Windows操作系统或许Linux操作系统,并安装有关的程序开发环境,如C\C++\Java等编程语言环境。三、实验内容用C语言(或其余语言,如Java)实现对N个进度采纳某种进度调动算法(如动向优先权调动)的调动。每个用来表记进度的进度控制块PCB可用构造来描绘,包含以下字段:,进度表记数ID。进度优先数PRIORITY,并规定优先数越大的进度,其优先权越高。进度已占用CPU时间CPUTIME。进度还需占用的CPU时间ALLTIME。当进度运转完成时,ALLTIME变成0。,进度的堵塞时间STARTBLOCK,表示当进度再运转STARTBLOCK个时间片后,进度将进入堵塞状态。进度被堵塞的时间BLOCKTIME,表示已堵塞的进度再等候BLOCKTIME个时间片后,将转换成就绪状态。进度状态STATE。行列指针NEXT,用来将PCB排成行列。优先数改变的原则:,进度在就绪行列中呆一个时间片,优先数增添1。进度每运转一个时间片,优先数减3。为了清楚地察看每个进度的调动过程,程序应将每个时间片内的进度的状况显示出来,包含正在运转的进度,处于就绪行列中的进度和处于堵塞行列中的进度。剖析程序运转的结果,谈一下自己的认识。第1页华北科技学院计算机系综合性实验报告四、实验结果及剖析实验设计说明实验代码#include<stdio.h>#defineN5voidinit( );voidprint( );intgetRunning( );voidsort( );intrun(inttime);enumSTATE{Ready,Run,Block,RunOut};structPROCESS{intID;intPriority;intCputime;intAlltime;intStartblock;intBlocktime;enumSTATEState;}Process[N];intREADY[N];//储存就绪行列intBLOCK[N];//储存堵塞行列intRUNOUT[N][2];//储存运转完的进度和相应的时间片数intmain( ){intTime=0;init( );printf("Time:%d\n",Time);sort( );print( );while(1){Time++;getchar( );//要从键盘上获得一个字符才持续运转,以此实现键盘控制逐渐进行的目的printf("Time:%d\n",Time);if(run(Time))break;}return0;}voidinit( )//无问题了第2页华北科技学院计算机系综合性实验报告{inti;for(i=0;i<N;++i){READY[i]=-1;//是-1,便于后边排序用且后边假如大于0则表示有进度,假如小于0则表示没有了BLOCK[i]=-1;RUNOUT[i][0]=-1;//表示第几个进度RUNOUT[i][1]=-1;//表示第几个时间片达成Process[i].ID=i;Process[i].Cputime=0;Process[i].State=Ready;Process[i].Startblock=-1;//再运转这么长时间就进入堵塞,假如是0则马长进入堵塞Process[i].Blocktime=0;//初始化为0}Process[0].Priority=9;Process[0].Alltime=3;Process[0].Startblock=2;//运转两个时间片就堵塞Process[0].Blocktime=3;//堵塞3个时间片就就绪Process[1].Priority=38;Process[1].Alltime=3;//默认无穷制Process[2].Priority=30;Process[2].Alltime=6;Process[3].Priority=29;Process[3].Alltime=3;Process[4].Priority=0;Process[4].Alltime=4;}voidprint( )//用于输出目前状态{inti;if(getRunning( )>=0)printf("\tRUNNINGPROG:%d\n",getRunning( ));printf("\tREADY_QUEUE:");for(i=0;i<N;++i){if(READY[i]>=0)printf("->%d",Process[READY[i]].ID);else{break;}}printf("\n\tBLOCK_QUEUE:");for(i=0;i<N;++i){if(BLOCK[i]>=0)printf("->%d",Process[BLOCK[i]].ID);else{break;第3页华北科技学院计算机系综合性实验报告}}printf("\n=====================================================\n");printf("ID\t");for(i=0;i<N;++i){printf("\t%d",Process[i].ID);}printf("\nPRIORITY");for(i=0;i<N;++i){printf("\t%d",Process[i].Priority);}printf("\nCPUTIME\t");for(i=0;i<N;++i){printf("\t%d",Process[i].Cputime);}printf("\nALLTIME\t");for(i=0;i<N;++i){printf("\t%d",Process[i].Alltime);}printf("\nSTARTBLOCK");for(i=0;i<N;++i){printf("\t%d",Process[i].Startblock);}printf("\nBLOCKTIME");for(i=0;i<N;++i){printf("\t%d",Process[i].Blocktime);}printf("\nSTATE\t");for(i=0;i<N;++i){switch(Process[i].State){case0:printf("\tReady");break;case1:printf("\tRun");if(Process[i].Alltime==0){Process[i].State=RunOut;}elseProcess[i].State=Ready;break;第4页华北科技学院计算机系综合性实验报告case2:printf("\tBlock");break;case3:printf("\tRunOut");break;}}printf("\n");printf("\tRUNOUTLIST:");for(i=0;i<N;++i){if(RUNOUT[i][0]>=0)printf("->%d(%d)",Process[RUNOUT[i][0]].ID,RUNOUT[i][1]);else{printf("\n");break;}}printf("\n");}intgetRunning( ){inti;for(i=0;i<N;++i)//找出正在运转的进度{if(Process[i].State==Run)returni;}for(i=0;i<N;++i)//假如没有正在运转的进度则找出立刻就要堵塞的进度{if(Process[i].Startblock==0)returni;}return-1;}voidsort( )//作用是排序,找出就绪行列和堵塞行列分别放入READY[],BLOCK[]{inti,j,k;for(i=0;i<N;++i){READY[i]=-1;BLOCK[i]=-1;}for(i=0;i<N;++i)//找出了READYQUEUE按权从大到小放在READY[]中{if(Process[i].State==Ready||Process[i].State==Run){if(Process[i].Alltime==0)continue;第5页华北科技学院计算机系综合性实验报告for(j=0;j<N;++j){if(READY[j]<0){READY[j]=i;break;}elseif(Process[i].Priority<=Process[READY[j]].Priority){continue;}else{for(k=N-1;k>j;--k){READY[k]=READY[k-1];}READY[j]=i;break;}}}elseif(Process[i].State==Block)//找出堵塞行列放入BLOCK[]中{for(j=0;j<N;++j){if(BLOCK[j]<0){BLOCK[j]=i;break;}elseif(Process[i].Blocktime>=Process[BLOCK[j]].Blocktime){continue;}else{for(k=N-1;k>j;--k){BLOCK[k]=BLOCK[k-1];}BLOCK[j]=i;break;}}}}}intrun(inttime){第6页华北科技学院计算机系综合性实验报告inti,runNum;//run的次数runNum=READY[0];if(runNum<0&&BLOCK[0]<0){printf("EveryprocessisOVER!\n");return1;}else{if(runNum>=0){Process[runNum].Priority-=3;Process[runNum].Alltime-=1;Process[runNum].Cputime+=1;Process[runNum].State=Run;for(i=0;i<N;++i)//对其余进度进行改正{if(i!=runNum){if(Process[i].State==Ready){Process[i].Priority+=1;}elseif(Process[i].State==Block){Process[i].Blocktime-=1;if(Process[i].Blocktime==0){Process[i].State=Ready;}}}}if(Process[runNum].Alltime==0){for(i=0;i<N;++i){if(RUNOUT[i][0]<0){RUNOUT[i][0]=runNum;RUNOUT[i][1]=time;break;}}}elseif(Process[runNum].Startblock>=0)第7页华北科技学院计算机系综合性实验报告{Process[runNum].Startblock-=1;if(Process[runNum].Startblock==0){Process[runNum].State=Block;}}}elseif(BLOCK[0]>=0){for(i=0;i<N;++i){if(Process[i].State==Block){Process[i].Startblock=-1;Process[i].Blocktime-=1;if(Process[i].Blocktime==0){Process[i].State=Ready;}}}}}sort( );print( );return0;}实验结果Time:1READY_QUEUE:->1->2->3->0->4BLOCK_QUEUE:=====================================================ID01234PRIORITY93830290CPUTIME00000ALLTIME33634STARTBLOCK2-1-1-1-1BLOCKTIME30000STATEReadyReadyReadyReadyReady第8页华北科技学院计算机系综合性实验报告RUNOUTLIST:Time:1RUNNINGPROG:1READY_QUEUE:->1->2->3->0->4BLOCK_QUEUE:=====================================================ID01234PRIORITY103531301CPUTIME01000ALLTIME32634STARTBLOCK2-1-1-1-1BLOCKTIME30000STATEReadyRunReadyReadyReadyRUNOUTLIST:Time:2RUNNINGPROG:1READY_QUEUE:->1->2->3->0->4BLOCK_QUEUE:=====================================================ID01234PRIORITY113232312CPUTIME02000ALLTIME31634STARTBLOCK2-1-1-1-1BLOCKTIME30000STATEReadyRunReadyReadyReadyRUNOUTLIST:Time:3RUNNINGPROG:1READY_QUEUE:->2->3->0->4第9页华北科技学院计算机系综合性实验报告BLOCK_QUEUE:=====================================================ID01234PRIORITY122933323CPUTIME03000ALLTIME30634STARTBLOCK2-1-1-1-1BLOCKTIME30000STATEReadyRunReadyReadyReadyRUNOUTLIST:->1(3)Time:4RUNNINGPROG:2READY_QUEUE:->3->2->0->4BLOCK_QUEUE:=====================================================ID01234PRIORITY132930334CPUTIME03100ALLTIME30534STARTBLOCK2-1-1-1-1BLOCKTIME30000STATEReadyRunOutRunReadyReadyRUNOUTLIST:->1(3)Time:5RUNNINGPROG:3READY_QUEUE:->2->3->0->4BLOCK_QUEUE:=====================================================ID01234PRIORITY142931305第10页华北科技学院计算机系综合性实验报告CPUTIME03110ALLTIME30524STARTBLOCK2-1-1-1-1BLOCKTIME30000STATEReadyRunOutReadyRunReadyRUNOUTLIST:->1(3)Time:6RUNNINGPROG:2READY_QUEUE:->3->2->0->4BLOCK_QUEUE:=====================================================ID01234PRIORITY152928316CPUTIME03210ALLTIME30424STARTBLOCK2-1-1-1-1BLOCKTIME30000STATEReadyRunOutRunReadyReadyRUNOUTLIST:->1(3)Time:7RUNNINGPROG:3READY_QUEUE:->2->3->0->4BLOCK_QUEUE:=====================================================ID01234PRIORITY162929287CPUTIME03220ALLTIME30414STARTBLOCK2-1-1-1-1BLOCKTIME30000第11页华北科技学院计算机系综合性实验报告STATEReadyRunOutReadyRunReadyRUNOUTLIST:->1(3)Time:8RUNNINGPROG:2READY_QUEUE:->3->2->0->4BLOCK_QUEUE:=====================================================ID01234PRIORITY172926298CPUTIME03320ALLTIME30314STARTBLOCK2-1-1-1-1BLOCKTIME30000STATEReadyRunOutRunReadyReadyRUNOUTLIST:->1(3)Time:9RUNNINGPROG:3READY_QUEUE:->2->0->4BLOCK_QUEUE:=====================================================ID01234PRIORITY182927269CPUTIME03330ALLTIME30304STARTBLOCK2-1-1-1-1BLOCKTIME30000STATEReadyRunOutReadyRunReadyRUNOUTLIST:->1(3)->3(9)Time:10RUNNINGPROG:2第12页华北科技学院计算机系综合性实验报告READY_QUEUE:->2->0->4BLOCK_QUEUE:=====================================================ID01234PRIORITY1929242610CPUTIME03430ALLTIME30204STARTBLOCK2-1-1-1-1BLOCKTIME30000STATEReadyRunOutRunRunOutReadyRUNOUTLIST:->1(3)->3(9)Time:11RUNNINGPROG:2READY_QUEUE:->2->0->4BLOCK_QUEUE:=====================================================ID01234PRIORITY2029212611CPUTIME03530ALLTIME30104STARTBLOCK2-1-1-1-1BLOCKTIME30000STATEReadyRunOutRunRunOutReadyRUNOUTLIST:->1(3)->3(9)Time:12RUNNINGPROG:2READY_QUEUE:->0->4BLOCK_QUEUE:=====================================================ID01234第13页华北科技学院计算机系综合性实验报告PRIORITY2129182612CPUTIME03630ALLTIME30004STARTBLOCK2-1-1-1-1BLOCKTIME30000STATEReadyRunOutRunRunOutReadyRUNOUTLIST:->1(3)->3(9)->2(12)Time:13RUNNINGPROG:0READY_QUEUE:->0->4BLOCK_QUEUE:=====================================================ID01234PRIORITY1829182613CPUTIME13630ALLTIME20004STARTBLOCK1-1-1-1-1BLOCKTIME30000STATERunRunOutRunOutRunOutReadyRUNOUTLIST:->1(3)->3(9)->2(12)Time:14RUNNINGPROG:0READY_QUEUE:->4BLOCK_QUEUE:->0=====================================================ID01234PRIORITY1529182614CPUTIME23630ALLTIME10004STARTBLOCK0-1-1-1-1第14页华北科技学院计算机系综合性实验报告BLOCKTIME30000STATEBlockRunOutRunOutRunOutReadyRUNOUTLIST:->1(3)->3(9)->2(12)Time:15RUNNINGPROG:4READY_QUEUE:->4BLOCK_QUEUE:->0=====================================================ID01234PRIORITY1529182611CPUTIME23631ALLTIME10003STARTBLOCK0-1-1-1-1BLOCKTIME20000STATEBlockRunOutRunOutRunOutRunRUNOUTLIST:->1(3)->3(9)->2(12)Time:16RUNNINGPROG:4READY_QUEUE:->4BLOCK_QUEUE:->0=====================================================ID01234PRIORITY152918268CPUTIME23632ALLTIME10002STARTBLOCK0-1-1-1-1BLOCKTIME10000STATEBlockRunOutRunOutRunOutRunRUNOUTLIST:->1(3)->3(9)->2(12)Time:17第15页华北科技学院计算机系综合性实验报告RUNNINGPROG:4READY_QUEUE:-

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论