版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上华北电力大学实 验 报 告 实验名称 动态优先权进程调度算法模拟 课程名称 计算机操作系统 专业班级: 学生姓名: 学 号: 成 绩:指导教师: 实验日期: 专心-专注-专业一实验目的:通过动态优先权算法的模拟加深对进程概念和进程调度过程的理解。二实验内容:(1)用C语言(或其它语言,如Java)实现对N个进程采用某种进程调度算法(如动态优先权调度)的调度。(2)每个用来标识进程的进程控制块PCB可用结构来描述,包括以下字段:² 进程标识数ID。² 进程优先数PRIORITY,并规定优先数越大的进程,其优先权越高。² 进程已占用CPU时间
2、CPUTIME。² 进程还需占用的CPU时间ALLTIME。当进程运行完毕时,ALLTIME变为0。² 进程的阻塞时间STARTBLOCK,表示当进程再运行STARTBLOCK个时间片后,进程将进入阻塞状态。² 进程被阻塞的时间BLOCKTIME,表示已阻塞的进程再等待BLOCKTIME个时间片后,将转换成就绪状态。² 进程状态STATE。² 队列指针NEXT,用来将PCB排成队列。(3)优先数改变的原则:² 进程在就绪队列中呆一个时间片,优先数增加1。² 进程每运行一个时间片,优先数减3。(4)为了清楚地观察每个进程的调度
3、过程,程序应将每个时间片内的进程的情况显示出来,包括正在运行的进程,处于就绪队列中的进程和处于阻塞队列中的进程。(5)分析程序运行的结果,谈一下自己的认识。三、设计思路和方法通过VC+程序模拟动态优先权程序调度算法,主要思路和方法就是,通过结构体模拟计算机的控制模组,构造一个PCB结构体即进程控制块结构体,用来记录当前进程的的相关状态信息,包括进程标识符、处理机状态、进程调度信息、进程控制信息。并通过C+语言模拟计算机的相关调度算法,对构建的PCB进程进行模拟调度和运行,从而实现用计算机对进程的调度过程进行过程仿真。四、数据结构和算法数据结构:1. 包含PCB信息的结构体2. 包含进程信息的顺
4、序表结构算法: 优先权=(等待时间+要求服务时间)/要求服务时间 Rp=(等待时间+要求服务时间)/要求服务时间=相应时间/要求服务时间系统将所有就绪队列按优先级高低排成一个队列,每次调度时,将CPU分配给优先级最高的进程,并令其执行一个时间片,而后中断,寻找并运行下一个优先级最高的进程。而所有进程的优先权在随进程的推进或随其等待时间的增加而增加,而被调度之后的程序则降低一定的优先级,从而使所有进程都有运行的机会,从而保证系统能在给定的时间内响应所有用户的请求。五程序代码和输出1 程序代码如下#include "iostream.h"#include "windo
5、ws.h"/#define N 3typedef structint ID;int PRIORITY;int CPUTIME;int ALLTIME;int STARTBLOCK;int BLOCKTIME;int STATE;/0-运行 1-阻塞 2-就绪 3-结束 4-未到达int REACH;int TIME;PROCESS;void textcolor (int color) SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE), color );void main()int i,time,max,l,l1,tim
6、e1,flag=0,total=0,N,server10,sum=0;PROCESS pro10;textcolor(13);cout<<"注意:本程序中状态代表如下"<<endl<<"0-运行 1-阻塞 2-就绪 3-结束 4-未到达"<<endl<<endl;textcolor(15);cout<<"请输入进程数:"cin>>N;cout<<"请设置时间片长度:"cin>>time;cout<<
7、;"请输入各进程初始状态:"<<endl;cout<<"ID PRIORITY REACH ALLTIME STARTBLOCK BLOCKTIME"<<endl;for(i=0;i<N;i+)proi.CPUTIME=0;proi.TIME=0;cin>>proi.ID>>proi.PRIORITY>>proi.REACH;cin>>proi.ALLTIME>>proi.STARTBLOCK>>proi.BLOCKTIME;serveri=
8、proi.ALLTIME;if(proi.REACH=0) proi.STATE=0;else proi.STATE=4;docout<<endl<<"当前时刻为:"<<total;textcolor(12);cout<<endl<<"=各进程状态为="<<endl;textcolor(15);cout<<"ID PRIORITY CPUTIME ALLTIME STARTBLOCK BLOCKTIME STATE"<<endl;for(i
9、=0;i<N;i+)cout<<proi.ID<<" "<<proi.PRIORITY<<" "<<proi.CPUTIME<<" "cout<<proi.ALLTIME<<" "<<proi.STARTBLOCK<<" "<<proi.BLOCKTIME<<" "<<proi.STATE;cout<<e
10、ndl;total+=time;for(i=0;i<N;i+)if(proi.STATE=4&&proi.REACH<total)proi.STATE=1;for(i=0;i<N;i+)time1=proi.ALLTIME;if(proi.STATE=0)if(proi.ALLTIME<=time)/proi.CPUTIME+=time1;proi.ALLTIME=0;proi.STATE=3;proi.TIME=total-time+time1;else/proi.CPUTIME+=time;proi.ALLTIME-=time;proi.STARTB
11、LOCK-;if(proi.STARTBLOCK=0)proi.STATE=1;proi.BLOCKTIME=time1;proi.STARTBLOCK=time1;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)/proi.CPUTIME+=time;proi.PRIORITY+;proi.TIME=total;max=-100;l1=-1;l=-1;for(i=0;i<N;
12、i+)if(proi.PRIORITY>max&&(proi.STATE=0|proi.STATE=2)l=i;max=proi.PRIORITY;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;i<N;i+)if(proi.STATE!=3)flag=1;break;if(flag=0) break;while(1);cout<<endl<<"当前时刻:"<<
13、total;textcolor(12);cout<<endl<<"=各进程状态为="<<endl;textcolor(15);cout<<"ID PRIORITY CPUTIME ALLTIME STARTBLOCK BLOCKTIME STATE"<<endl;for(i=0;i<N;i+)cout<<proi.ID<<" "<<proi.PRIORITY<<" "<<proi.CPUTI
14、ME<<" "cout<<proi.ALLTIME<<" "<<proi.STARTBLOCK<<" "<<proi.BLOCKTIME<<" "<<proi.STATE;cout<<endl;cout<<endl<<"各进程运行结束!"<<endl;cout<<"进程号 到达时间 结束时间 周转时间 带权周转时间"<
15、;<endl;textcolor(10);for(i=0;i<N;i+)cout<<" "<<proi.ID<<" "<<proi.REACH<<" "<<proi.TIME<<" "<<proi.TIME-proi.REACH<<" "<<(float)(proi.TIME-proi.REACH)/serveri<<endl;sum+=proi.TIM
16、E-proi.REACH;cout<<"平均周转时间为:"<<(float)sum/N<<endl;textcolor(15);2输入注意:本程序中状态代表如下0-运行 1-阻塞 2-就绪 3-结束 4-未到达请输入进程数:5请设置时间片长度:4请输入各进程初始状态:ID PRIORITY 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=各进程状态为=ID PRIORITY CPUTI
17、ME ALLTIME STARTBLOCK BLOCKTIME STATE1 2 0 0 1 4 42 6 0 0 3 1 42 0 0 4 5 2 42 1 0 4 3 4 41 5 0 4 5 3 4当前时刻为:4=各进程状态为=ID PRIORITY CPUTIME ALLTIME STARTBLOCK BLOCKTIME STATE1 2 0 0 1 3 12 6 0 0 3 1 42 0 0 4 5 1 12 1 0 4 3 3 11 5 0 4 5 2 1当前时刻为:8=各进程状态为=ID PRIORITY CPUTIME ALLTIME STARTBLOCK BLOCKTIME
18、STATE1 2 0 0 1 2 12 7 0 0 3 0 02 1 0 4 5 0 22 1 0 4 3 2 11 5 0 4 5 1 1当前时刻为:12=各进程状态为=ID PRIORITY CPUTIME ALLTIME STARTBLOCK BLOCKTIME STATE1 2 0 0 1 1 12 7 0 0 3 0 32 2 0 4 5 0 22 1 0 4 3 1 11 6 0 4 5 0 0当前时刻为:16=各进程状态为=ID PRIORITY CPUTIME ALLTIME STARTBLOCK BLOCKTIME STATE1 3 0 0 1 0 02 7 0 0 3 0
19、32 3 0 4 5 0 22 2 0 4 3 0 21 6 0 0 5 0 3当前时刻为:20=各进程状态为=ID PRIORITY CPUTIME ALLTIME STARTBLOCK BLOCKTIME STATE1 3 0 0 1 0 32 7 0 0 3 0 32 4 0 4 5 0 02 3 0 4 3 0 21 6 0 0 5 0 3当前时刻为:24=各进程状态为=ID PRIORITY CPUTIME ALLTIME STARTBLOCK BLOCKTIME STATE1 3 0 0 1 0 32 7 0 0 3 0 32 4 0 0 5 0 32 4 0 4 3 0 01 6 0 0 5 0 3当前时刻:28
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 植树绿化养护施工方案1
- 工厂突然停气应急预案演练脚本
- 外墙抹灰淋水试验记录
- 焊接作业单位操作员运行操作安全操作规程
- 2026护士资格证《儿科护理学》备考练习题「带答案」
- 银行网上银行故障应急预案演练脚本
- 科学天文课观测天文知识大分享
- Unit 3 Sports and Fitness单元词汇填空专练 2022-2023学年高一上学期英语人教版(2019)必修第一册
- 《非遗面塑》课件-3.1.3康乃馨
- DBJ50-T-402-2021 地铁工程施工质量验收标准 综合监控、气体灭火、安防及云平台
- 2026年中国四川邮政揽投部经理笔试题及答案
- 倍智TAS人才测评题
- 2025年冶炼化验室考核试卷及答案
- 空气斜槽课件
- 小学语文课程分项等级评价指南
- 电气车间安全工作计划
- 活不养死不葬合同协议书
- 饭堂食材配送合同协议书
- 景区安全生产培训课件
- 华东师大版数学七年级下册期末培优检测卷
- 高中英语外研版选修一单词表
评论
0/150
提交评论