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

上传人:cn****1 文档编号:563770388 上传时间:2023-04-23 格式:DOCX 页数:11 大小:25.83KB
返回 下载 相关 举报
动态优先权进程调度算法模拟实验报告_第1页
第1页 / 共11页
动态优先权进程调度算法模拟实验报告_第2页
第2页 / 共11页
动态优先权进程调度算法模拟实验报告_第3页
第3页 / 共11页
动态优先权进程调度算法模拟实验报告_第4页
第4页 / 共11页
动态优先权进程调度算法模拟实验报告_第5页
第5页 / 共11页
点击查看更多>>
资源描述

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

1、华北电力大学实验报告实验名称动态优先权进程调度算法模拟课程名称计算机操作系统学生姓名成绩实验日期专业班级:学号指导教师、实验目的:通过动态优先权算法的模拟加深对进程概念和进程调度过程的理解。二、实验内容:(1) 用C语言(或其它语言,如Java)实现对N个进程采用某种进程调度算法(如动态 优先权调度)的调度。(2) 每个用来标识进程的进程控制块PCB可用结构来描述,包括以下字段:进程标识数ID。进程优先数PRIORITY,并规定优先数越大的进程,其优先权越高。进程已占用CPU时间CPUTIME。进程还需占用的CPU时间ALLTIME。当进程运行完毕时,ALLTIME变为0。进程的阻塞时间STA

2、RTBLOCK,表示当进程再运行STARTBLOCK个时间片后,进程将进 入阻塞状态。进程被阻塞的时间BLOCKTIME,表示已阻塞的进程再等待BLOCKTIME个时间片后,将 转换成就绪状态。进程状态STATE。队列指针NEXT,用来将PCB排成队列。(3) 优先数改变的原则:进程在就绪队列中呆一个时间片,优先数增加1。进程每运行一个时间片,优先数减3。(4) 为了清楚地观察每个进程的调度过程,程序应将每个时间片内的进程的情况显示出 来,包括正在运行的进程,处于就绪队列中的进程和处于阻塞队列中的进程。(5) 分析程序运行的结果,谈一下自己的认识。三、设计思路和方法通过VC+程序模拟动态优先权

3、程序调度算法,主要思路和方法就是,通过结构体模拟计算机的控制模组,构造一个PCB结构体即进程控制块结构体,用来记录当前进程的的 相关状态信息,包括进程标识符、处理机状态、进程调度信息、进程控制信息。并通过 C+语言模拟计算机的相关调度算法,对构建的PCB进程进行模拟调度和运行,从而实现 用计算机对进程的调度过程进行过程仿真。四、数据结构和算法数据结构:1. 包含PCB信息的结构体2. 包含进程信息的顺序表结构算法:优先权=(等待时间+要求服务时间)/要求服务时间Rp=(等待时间+要求服务时间)/要求服务时间二相应时间/要求服务时间系统将所有就绪队列按优先级高低排成一个队列,每次调度时,将CPU

4、分配给优 先级最高的进程,并令其执行一个时间片,而后中断,寻找并运行下一个优先级最高 的进程。而所有进程的优先权在随进程的推进或随其等待时间的增加而增加,而被调 度之后的程序则降低一定的优先级,从而使所有进程都有运行的机会,从而保证系统 能在给定的时间内响应所有用户的请求。五、程序代码和输出1程序代码如下#inelude #inelude PUTIME=O;proi.TIME=0;ein proi.IDproi.PRIORITYproi .REACH;ein proi.ALLTIMEproi.STARTBLOCKproi.BLOCKTIME;serveri=proi. ALLTIME;if(p

5、roi.REACH=0) proi.STATE=0;else proi.STATE=4;doeoute ndl当前时刻为:total;textcolor(12);coutendl 各进 程 状态 为endl;textcolor(15);coutIDPRIORITYCPUTIMEALLTIMESTARTBLOCKBLOCKTIMESTATEendl;for(i=0;iN;i+)coutproi.IDproi.PRIORITY*proi.CPUTIME;coutproi.ALLTIMEproi.STARTBLOCKproi.BLOCKTIMEproi.STATE;coutendl; total+二

6、time;for(i=0;iN;i+)if(proi.STATE=4&proi .REACHtotal) proi.STATE=1; for(i=0;iN;i+)time仁proi.ALLTIME;if(proi.STATE=0) if(proi.ALLTIME=time)PUTIME+二time1; proi.ALLTIME=0; proi.STATE=3; proi.TIME=total-time+time1;elsePUTIME+二time; proi.ALLTIME-二time; proi.STARTBLOCK; if(proi.STARTBLOCK=O)proi .STATE=1;p

7、roi.BLOCKTIME=time1;proi.STARTBLOCK二timel;proi.PRIORITY=3;proi.TIME二total;if(proi.STATE=1)proi.BLOCKTIME-;if(proi.BLOCKTIME=0) proi.STATE=2;proi.TIME二total;if(proi.STATE=2)PUTIME+二time;proi.PRIORITY+;proi.TIME二total;max=-100;l1=-1;l=-1;for(i=0;imax&(proi.STATE=O|proi .STATE=2) l = i;max=proi.PRIORIT

8、Y; if(proi.STATE=0) l1 = i;if(l!=-1 &l! = l1) prol.STATE=0;if(l1!=-1) prol1.STATE=2;flag=0;for(i=0;iN;i+)if(proi.STATE!=3)flag=1;break; if(flag=O) break;while(1);coute ndl当前时刻:total; textcolor(12);进 程 状 态 为STARTBLOCK BLOCKTIMEproi.PRIORITYcoutendl=endl;textcolor(15);coutID PRIORITY CPUTIME ALLTIMEST

9、ATEendl;for(i=O;iN;i+)coutproi.IDIIproi.CPUTIMEproi.STARTBLOCKcoutproi.ALLTIMEproi.BLOCKTIMEproi.STATE;coutendl;coute ndl各进程运行结束!e ndl;带权周转时间e ndl;cout进程号到达时间结束时间周转时间textcolor(10);for(i=0;iN;i+)coutproi.IDproi.REACHproi.TIMEproi.TIME-proi.REACH(float)(proi.TIME-pro i .REACH)/serverie ndl;sum+=proi.T

10、IME-proi.REACH;cout平均周转时间为:(float)sum/Ne ndl;textcolor(15);2输入注意:本程序中状态代表如下0-运行1-阻塞2-就绪3-结束4-未到达请输入进程数:5请设置时间片长度:4请输入各进程初始状态:IDPRIORITY REACH ALLTIME STARTBLOCK BLOCKTIME1 2 3 0 1 42 6 4 0 3 12 0 3 4 5 22 1 2 4 3 41 5 2 4 5 33输出结果当前时刻为:0=各进程状态为=IDPRIORITYCPUTIMEALLTIMESTARTBLOCKBLOCKTIMESTATE1200144

11、2600314200452421043441504534当前时刻为:4=各进程状态为=IDPRIORITYCPUTIMEALLTIMESTARTBLOCKBLOCKTIMESTATE12001312600314200451121043311504521当前时刻为:8-各进程状态为IDPRIORITYCPUTIMEALLTIMESTARTBLOCKBLOCKTIMESTATE12001212700300210450221043211504511当前时刻为:12-各进程状态为IDPRIORITYCPUTIMEALLTIMESTARTBLOCKBLOCKTIMESTATE12001112700303220450221043111604500当前时刻为:16-各进程状态为IDPRIORITYCPUTIMEALLTIMESTARTBLOCKBLOCKTIMESTATE13001002700303230450222043021600503当前时刻为:20-各进程状态为IDPRIORITYCPUTIMEALLT

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

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