1 / 11
文档名称:

动态优先权进程调度算法模拟实验报告.doc

格式:doc   页数:11页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

动态优先权进程调度算法模拟实验报告.doc

上传人:zgs35866 2016/1/3 文件大小:0 KB

下载得到文件列表

动态优先权进程调度算法模拟实验报告.doc

相关文档

文档介绍

文档介绍:华北电力大学实验报告实验名称动态优先权进程调度算法模拟课程名称计算机操作系统专业班级:学生姓名:学号:成绩:指导教师:实验日期:一﹑实验目的:通过动态优先权算法的模拟加深对进程概念和进程调度过程的理解。二﹑实验内容:(1)用C语言(或其它语言,如Java)实现对N个进程采用某种进程调度算法(如动态优先权调度)的调度。(2)每个用来标识进程的进程控制块PCB可用结构来描述,包括以下字段:?进程标识数ID。?进程优先数PRIORITY,并规定优先数越大的进程,其优先权越高。?进程已占用CPU时间CPUTIME。?进程还需占用的CPU时间ALLTIME。当进程运行完毕时,ALLTIME变为0。?进程的阻塞时间STARTBLOCK,表示当进程再运行STARTBLOCK个时间片后,进程将进入阻塞状态。?进程被阻塞的时间BLOCKTIME,表示已阻塞的进程再等待BLOCKTIME个时间片后,将转换成就绪状态。?进程状态STATE。?队列指针NEXT,用来将PCB排成队列。(3)优先数改变的原则:?进程在就绪队列中呆一个时间片,优先数增加1。?进程每运行一个时间片,优先数减3。(4)为了清楚地观察每个进程的调度过程,程序应将每个时间片内的进程的情况显示出来,包括正在运行的进程,处于就绪队列中的进程和处于阻塞队列中的进程。(5)分析程序运行的结果,谈一下自己的认识。三、设计思路和方法通过VC++程序模拟动态优先权程序调度算法,主要思路和方法就是,通过结构体模拟计算机的控制模组,构造一个PCB结构体即进程控制块结构体,用来记录当前进程的的相关状态信息,包括进程标识符、处理机状态、进程调度信息、进程控制信息。并通过C++语言模拟计算机的相关调度算法,对构建的PCB进程进行模拟调度和运行,从而实现用计算机对进程的调度过程进行过程仿真。四、数据结构和算法数据结构::优先权=(等待时间+要求服务时间)/要求服务时间Rp=(等待时间+要求服务时间)/要求服务时间=相应时间/要求服务时间系统将所有就绪队列按优先级高低排成一个队列,每次调度时,将CPU分配给优先级最高的进程,并令其执行一个时间片,而后中断,寻找并运行下一个优先级最高的进程。而所有进程的优先权在随进程的推进或随其等待时间的增加而增加,而被调度之后的程序则降低一定的优先级,从而使所有进程都有运行的机会,从而保证系统能在给定的时间内响应所有用户的请求。五﹑程序代码和输出1程序代码如下#include""#include""//#defineN3typedefstruct{intID;intPRIORITY;intCPUTIME;intALLTIME;intSTARTBLOCK;intBLOCKTIME;intSTATE;//0-运行1-阻塞2-就绪3-结束4-未到达intREACH;intTIME;}PROCESS;voidtextcolor(intcolor){SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),color);}voidmain(){inti,time,max,l,l1,time1,flag=0,total=0,N,server[10],sum=0;PROCESSpro[10];textcolor(13);cout<<"注意:本程序中状态代表如下"<<endl<<"0-运行1-阻塞2-就绪3-结束4-未到达"<<endl<<endl;textcolor(15);cout<<"请输入进程数:";cin>>N;cout<<"请设置时间片长度:";cin>>time;cout<<"请输入各进程初始状态:"<<endl;cout<<"IDPRIORITYREACHALLTIMESTARTBLOCKBLOCKTIME"<<endl;for(i=0;i<N;i++){pro[i].CPUTIME=0;pro[i].TIME=0;cin>>pro[i].ID>>pro[i].PRIORITY>>pro[i].REACH;cin>>pro[i].ALLTIME>>pro[i].STARTBLOCK>>pro[i].BLOCKTIME;server[i]=pro[i].ALLTIME;if(pro[i].REACH==0)pro[i].STATE=0;elsepro[i].STATE=4;}do{cout<<endl<<"当前时刻为:"<<total;textcolor(12);cout<<endl<<"========================各 进程状态为======================"<<endl;textcolor(