处理器调度算法实验报告
更新时间:2023-11-05 04:23:01 阅读量: 综合文库 文档下载
实验三、处理器调度算法实验
计本一区队学号:5090809
一、实习内容
选择一个调度算法,实现处理器调度。 二、实习目的
本实习模拟在单处理器环境下的处理器调度,加深了解处理器调度的工作。 三、实习题目
第一题:设计一个按优先数调度算法实现处理器调度的程序。 [提示]:
(1)假定系统有5个进程,每个进程用一个PCB来代表。PCB的结构为:
·进程名——如P1~P5。
·指针——按优先数的大小把5个进程连成队列,用指针指出下一个进程PCB的首地址。
·要求运行时间——假设进程需要运行的单位时间数。
·优先数——赋予进程的优先数,调度时总是选取优先数大的进程先执行。
·状态——假设两种状态:就绪和结束,用R表示就绪,用E表示结束。初始状态都为就绪状态。
(2) 开始运行之前,为每个进程确定它的“优先数”和“要求运行时间”。通过键盘输入这些参数。
(3) 处理器总是选择队首进程运行。采用动态改变优先数的办法,进程每运行1次,优先数减1,要求运行时间减1。
(4) 进程运行一次后,若要求运行时间不等于0,则将它加入就绪队列,否则,将状态改为“结束”,退出就绪队列。
(5) 若就绪队列为空,结束,否则转到(3)重复。 2.程序中使用的数据结构及符号说明:
#define num 5//假定系统中进程个数为5 struct PCB{ char ID;//进程名
int runtime;//要求运行时间 int pri;//优先数
char state; //状态,R-就绪,F-结束 };
struct PCB pcblist[num];//定义进程控制块数组
3.源程序清单
//按优先数调度算法实现处理器调度的程序 #include
#define num 5//假定系统中进程个数为5
struct PCB {
char ID;//进程名
int runtime;//要求运行时间 int pri;//优先数
char state; //状态,R-就绪,F-结束 };
struct PCB pcblist[num];//定义进程控制块数组
void init()//PCB初始化子程序 { int i;
for(i=0;i printf(\为每个进程任意指定pri和runtime scanf(\ pcblist[i].state='R';//进程初始状态均为就绪 getchar();//接收回车符 } } int max_pri_process()//确定最大优先级进程子程序 { int max=-100;//max为最大优先数,初始化为-100 int i; int key; for(i=0;i {if(pcblist[i].state=='r')//r为辅助状态标志,表示正在运行 return -1;//返回-1 else if(max max=pcblist[i].pri;//max存放每次循环中的最大优先数 key=i;//将进程号赋给key } if(pcblist[key].state=='F')//具有最大优先数的进程若已运行完毕 } void show()//显示子程序 {int i; printf(\ ID pri runtime state\\n\ printf(\ for(i=0;i printf(\ %s\\n\[i].state); } printf(\} void run()//进程运行子程序 return -1;//则返回-1 return key;//将key作为返回值返回 else//否则 } {int i,j; int t=0;//t为运行次数 for(j=0;j {t+=pcblist[j].runtime;}//运行次数即为各个进程运行时间之和 printf(\ show(); //调用show()子程序显示运行前PCB的情况 getchar();//等待输入回车符 for(j=0;j {while(max_pri_process()!=-1)//具有最大优先数的进程没有运行完,让其运行 { } for(i=0;i { pcblist[i].pri-=1;//将当前运行进程的优先数减1 pcblist[i].runtime--;//要求运行时间减1 { if(pcblist[i].runtime==0) pcblist[i].state='F';//运行完则将该进程状态置为结束 else } show();//显示每次运行后各PCB的情况 pcblist[max_pri_process()].state='r';//将其状态置为r,表示其正在运行 pcblist[i].state='R';//未运行完将其状态置为就绪 getchar();//等待回车进入下一次运行 } } } } void main()//按动态优先数调度主程序 { init();//初始化各个进程PCB run();//进程调度模拟 } 运行后结果: 首先初始化 ID pri a 5 b 6 c 4 d 1 e 3 runtime 6 5 4 2 3
正在阅读:
处理器调度算法实验报告11-05
表242-4 室内排水管道及配件安装检验批质量验收记录04-09
other_the_other_another_the_others区别_06-12
国际结算作业(三).doc讲评01-20
如何用公益活动成就品牌12-18
双液注浆施工方案11-10
安全生产管理评价制度(2012)07-02
《危重病医学》试卷(A)112-29
H3CNE题库(详解)-2016年最新版09-27
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 调度
- 算法
- 处理器
- 实验
- 报告
- 健康评估名词解释
- 《基要神学》卷一课程教材 - 图文
- 2016北京10套电工题库
- 新附着式升降脚手架安全监理细则
- 南邮软件设计报告
- 2017影视鉴赏期末考试 满分答案 陈旭光
- 室内设计空间的十四种类型
- 法定继承公证询问笔录参考格式
- 湘教版八年级初中音乐上册教案2
- tuxedo的配置 txt
- 美国教育家杜威是现代教育派的代表还是进步主义教育学派的代表是现代教育派的代表
- 往年郑州中学小升初选拔考题英语部分-最新
- 获得奖学金学生代表在奖学金助学金颁发仪式上的发言稿
- 推销实务1-4章练习题及答案
- 幼儿园体育活动指导意见
- 2018高考地理二轮知识专题复习文档:专题九农业区位与区域农业的可持续发展 Word版含答案
- 施工单位考察评分表及评分标准
- 液压作业
- 2011年成人高考专升本英语预测试卷及答案三
- 制肥机简介