




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上使用动态优先权的进程调度算法的模拟1、实验目的通过动态优先权算法的模拟加深对进程概念和进程调度过程的理解。2、实验内容(1)用C语言来实现对N个进程采用动态优先算法的进程调度;(2)每个用来标识进程的进程控制块PCB用结构来描述,包括以下字段:l 进程标识符idl 进程优先数priority,并规定优先数越大的进程,其优先权越高;l 进程已占用的CPU时间cputime;l 进程还需占用的CPU时间alltime,当进程运行完毕时,alltime变为0;l 进程的阻塞时间startblock,表示当进程再运行startblock个时间片后,进程将进入阻塞状态;l 进程
2、被阻塞的时间blocktime,表示已阻塞的进程再等待blocktime个时间片后,将转换成就绪态l 进程状态state;l 队列指针next,用来将PCB排成队列(3)优先数改变的原则:l 进程在就绪队列中呆一个时间片,优先数增加1l 进程每运行一个时间片,优先数减3。(4)假设在调度前,系统中有5个进程,它们的初始状态如下:ID01234PRIORITY93830290CPUTIME00000ALLTIME33634STARTBLOCK2-1-1-1-1BLOCKTIME30000STATEREADYREADYREADYREADYREADY(5)为了清楚地观察诸进程的调度过程,程序应将每个
3、时间片内的进程的情况显示出来,参照的具体格式如下:RUNNING PROG: iREADY_QUEUE:->id1->id2BLOCK_QUEUE:->id3->id4=ID 01234PRIORITY P0P1P2P3P4CPUTIME C0C1C2C3C4ALLTIME A0A1A2A3A4STARTBLOCK T0T1T2T3T4BLOCKTIME B0B1B2B3B4STATE S0S1S2S3S43、思考题(1)在实际的调度中,除了按调度算法选择下一个执行的进程外,还应处理哪些工作?1、 实验目的通过动态优先权算法的模拟加深进程概念和进程调度过程的理解,并学习
4、撰写规范的科学研究报告。二、实验环境及设备(一)实验地点:实C三楼机房、宿舍(二)主要仪器设备:PC机、Red Flag Linux和Windows7操作系统、g+和VC+6.0环境3、 实验内容1对N个进程采用动态优先权算法的进程调度;2每个用来标识进程的进程控制块PCB用结构描述,包括以下字段:进程标识数ID,进程优先数PRIORITY,进程以占用的CPU时间CPUTIME,进程还需占用的CPU时间ALLTIME,进程状态STATE等。3优先数改变的原则:进程在就绪队列中呆一个时间片,优先数增加1,进程每运行一个时间片优先数减3。4设置调度前的初始状态。5将每个时间片内的进程情况显示出来。
5、四、调试分析程序首先设置一个struct,模拟操作系统的PCB数据结构,并初始化。PCB有ID、PRIORITY、CPUTIME、ALLTIME、STATE五个字段,其中STATE有两个状态,0为未完成,1为完成。首先,程序会调用maxp()函数找出优先权PRIORITY最大的进程ID,如果有若干个进程的PRIORITY相同,则程序会选择还需时间ALLTIME最少的进程,取出ID作为下一个时间片要执行的进程。当前进程执行完后,程序会调用change()函数修改进程的各个字段,未执行的进程呆一个时间片优先权PRIORITY就+1,刚执行完的进程优先权PRIORITY就-3,并且已经执行的CPU时
6、间CPUTIME增加1,还需CPU时间ALLTIME减少1。如果一个进程还需CPU时间ALLTIME为0,说明该进程完成了,状态STATE就修改为1,表示进程已经完成了,同时优先权变为0或者更低的数值,表示该进程不能再执行了。程序每运行一个时间片,就调用display()函数将所有进程的字段显示出来。如果所有程序的状态都为1了,表示所有进程都执行完了,程序将退出。5、 实验结果=ID 0 1 2 3 4PRIORITY 9 38 30 29 0CPUTIME 0 0 0 0 0ALLTIME 3 3 6 3 4STATE 0 0 0 0 0RUNNING PROG:1=ID 0 1 2 3 4
7、PRIORITY 10 35 31 30 1CPUTIME 0 1 0 0 0ALLTIME 3 2 6 3 4STATE 0 0 0 0 0RUNNING PROG:1=ID 0 1 2 3 4PRIORITY 11 32 32 31 2CPUTIME 0 2 0 0 0ALLTIME 3 1 6 3 4STATE 0 0 0 0 0RUNNING PROG:1=ID 0 1 2 3 4PRIORITY 12 0 33 32 3CPUTIME 0 3 0 0 0ALLTIME 3 0 6 3 4STATE 0 1 0 0 0RUNNING PROG:2=ID 0 1 2 3 4PRIORIT
8、Y 13 0 30 33 4CPUTIME 0 3 1 0 0ALLTIME 3 0 5 3 4STATE 0 1 0 0 0RUNNING PROG:3=ID 0 1 2 3 4PRIORITY 14 0 31 30 5CPUTIME 0 3 1 1 0ALLTIME 3 0 5 2 4STATE 0 1 0 0 0RUNNING PROG:2=ID 0 1 2 3 4PRIORITY 15 0 28 31 6CPUTIME 0 3 2 1 0ALLTIME 3 0 4 2 4STATE 0 1 0 0 0RUNNING PROG:3=ID 0 1 2 3 4PRIORITY 16 0 29
9、 28 7CPUTIME 0 3 2 2 0ALLTIME 3 0 4 1 4STATE 0 1 0 0 0RUNNING PROG:2=ID 0 1 2 3 4PRIORITY 17 0 26 29 8CPUTIME 0 3 3 2 0ALLTIME 3 0 3 1 4STATE 0 1 0 0 0RUNNING PROG:3=ID 0 1 2 3 4PRIORITY 18 0 27 0 9CPUTIME 0 3 3 3 0ALLTIME 3 0 3 0 4STATE 0 1 0 1 0RUNNING PROG:2=ID 0 1 2 3 4PRIORITY 19 0 24 0 10CPUTI
10、ME 0 3 4 3 0ALLTIME 3 0 2 0 4STATE 0 1 0 1 0RUNNING PROG:2=ID 0 1 2 3 4PRIORITY 20 0 21 0 11CPUTIME 0 3 5 3 0ALLTIME 3 0 1 0 4STATE 0 1 0 1 0RUNNING PROG:2=ID 0 1 2 3 4PRIORITY 21 0 0 0 12CPUTIME 0 3 6 3 0ALLTIME 3 0 0 0 4STATE 0 1 1 1 0RUNNING PROG:0=ID 0 1 2 3 4PRIORITY 18 0 0 0 13CPUTIME 1 3 6 3
11、0ALLTIME 2 0 0 0 4STATE 0 1 1 1 0RUNNING PROG:0=ID 0 1 2 3 4PRIORITY 15 0 0 0 14CPUTIME 2 3 6 3 0ALLTIME 1 0 0 0 4STATE 0 1 1 1 0RUNNING PROG:0=ID 0 1 2 3 4PRIORITY 0 0 0 0 15CPUTIME 3 3 6 3 0ALLTIME 0 0 0 0 4STATE 1 1 1 1 0RUNNING PROG:4=ID 0 1 2 3 4PRIORITY 0 0 0 0 12CPUTIME 3 3 6 3 1ALLTIME 0 0 0
12、 0 3STATE 1 1 1 1 0RUNNING PROG:4=ID 0 1 2 3 4PRIORITY 0 0 0 0 9CPUTIME 3 3 6 3 2ALLTIME 0 0 0 0 2STATE 1 1 1 1 0RUNNING PROG:4=ID 0 1 2 3 4PRIORITY 0 0 0 0 6CPUTIME 3 3 6 3 3ALLTIME 0 0 0 0 1STATE 1 1 1 1 0RUNNING PROG:4=ID 0 1 2 3 4PRIORITY 0 0 0 0 0CPUTIME 3 3 6 3 4ALLTIME 0 0 0 0 0STATE 1 1 1 1
13、1RUNNING PROG:0Press any key to continue从上面的执行结果知道,进程的执行顺序为:1->1->1->2->3->2->3->2->3->2->2->2->0->0->0->4->4->4->4六、实验源程序/使用动态优先权的进程调度算法的模拟#include <stdio.h> #include <iostream.h>int i; /循环值 int j; /未执行完的进程数即还在阻塞或就绪队列中的进程数 int s;/优先权
14、数int m; /最大priority的id即应该被调用的id号 struct pcb int id; int p; /priority 优先权int cputime; int alltime; int state; /0 就绪 1完成; struct pcb pro5= 0,9,0,3,0, 1,38,0,3,0, 2,30,0,6,0, 3,29,0,3,0, 4,0,0,4,0 ; int maxp() /求出最大priority所在进程的id s=pro0.p; int maxpriority=pro0.p;int minalltime=pro0.alltime;m=pro0.id;f
15、or(i=1;i<j;i+)if(proi.p>maxpriority)maxpriority=proi.p; /max为最大的优先权数minalltime=proi.p;m=proi.id; /最大p的idelse if(proi.p=maxpriority)if(proi.alltime>minalltime)minalltime=proi.alltime;m=proi.id;return m; void change() maxp(); int x; /得到m现在的数组编号 for(i=0;i<j;i+)if(1!=proi.state)proi.p+; /完成执
16、行一个时间片优先权加1的操作for(i=0;i<j;i+)if(proi.id=m) x=i;prox.cputime+;prox.p=prox.p-4; prox.alltime-; if(prox.alltime=0)prox.state=1;prox.p=0; void display() cout<<"=n" cout<<"ID "<<"t" for(i=0;i<j;i+) cout.width(10); cout<<proi.id; cout<<endl
17、<<"PRIORITY " for(i=0;i<j;i+) cout.width(10); cout<<proi.p; cout<<endl<<"CPUTIME " for(i=0;i<j;i+) cout.width(10); cout<<proi.cputime; cout<<endl<<"ALLTIME " for(i=0;i<j;i+) cout.width(10); cout<<proi.alltime; cou
18、t<<endl<<"STATE "<<" " for(i=0;i<j;i+) cout.width(10); cout<<proi.state; cout<<endl;change(); cout<<"RUNNING PROG:"<<m<<endl; int main() j=5; /最初有5个进程 int count=0;while(j!=count) for(i=0;i<j;i+) if(proi.state=1)count+;if(5=count)break;else count=0;display(); getchar();/输出暂停 display();return 0;7、 实验总结本次实验完成了进程调度的模拟实验,实现对5个进程采用动态优先权算法的进程调度,每个用来标识进程控制块的PCB用数据结构来描述,进程在就绪队列中呆一个时间片,优先数增加1,进程每运行一个
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年物流服务师考试经验分享与试题及答案
- 2024年投资咨询的市场需求变化试题及答案
- 数据智能化在仓储管理中的应用试题及答案
- 园林景观绿化劳务合同
- 北师大版七年级上册历史18《东晋南朝政局与江南地区的开发》教学设计
- 2024年五年级英语下册 Module 4 Unit 1 Lets make a home library教学实录 外研版(三起)
- 小学防溺水主题课件
- 实验:+探究小车速度随时间变化的规律+高一上学期物理人教版(2019)必修第一册
- 小学防春季传染病课件
- 八年级生物上册 第五单元 第四章 第五节《人类对细菌和真菌的利用》教学实录1 (新版)新人教版
- 2025年浙江宁波奉化区农商发展集团有限公司招聘笔试参考题库附带答案详解
- 2025年高考物理一轮总复习:牛顿运动定律(原卷版)
- 2025年领导胜任力测试题及答案
- 2025年医院基建科面试题及答案
- 中职高考数学一轮复习讲练测专题一 集合与充要条件(测)原卷版
- 美甲店的创业之路
- 水利项目申报专项债、中央预算内资金、超长国债
- 企业财务会计(第四版)教案27:合同成本
- 公司安全事故隐患内部举报、报告奖励制度
- 电站锅炉压力容器检验规程
- 小学生竞选班干部ppt
评论
0/150
提交评论