




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、优先级调度算法实验报告 院系:*学院 班级:* 姓名:* 学号:*一、实验题目:优先级调度算法二、实验目的 进程调度是处理机管理的核心内容。本实验要求用高级语言编写模拟进程调度程序,以便加深理解有关进程控制快、进程队列等概念,并体会和了解优先级算法的具体实施办法。 三、实验内容1.设计进程控制块pcb的结构,通常应包括如下信息:进程名、进程优先数(或轮转时间片数)、进程已占用的cpu时间、进程到完成还需要的时间、进程的状态、当前队列指针等。2.编写优先级调度算法程序3.按要求输出结果。四、实验要求每个进程可有三种状态;执行状态(run)、就绪状态(ready,包括等待状态)和完成状态(fini
2、sh),并假定初始状态为就绪状态。(一)进程控制块结构如下: name进程标示符 prio/round进程优先数 needtime进程到完成还需要的时间片数 state进程状态 next链指针注: 1.为了便于处理,程序中进程的的运行时间以时间片为单位进行计算; 2.各进程的优先数或,以及进程运行时间片数的初值,均由用户在程序运行时给定。(二)进程的就绪态和等待态均为链表结构,共有四个指针如下: run当前运行进程指针 ready就需队列头指针 tail就需队列尾指针 finish完成队列头指针五、实验结果:六、实验总结: 首先这次实验的难度不小,它必须在熟悉掌握数据结构的链表和队列的前提下才
3、能完成,这次实验中用了三个队列,就绪队列,执行队列和完成队列,就绪队列中的优先级数是有序插入的,当进行进程调度的时候,需要先把就绪队列的队首节点(优先级数最大的节点)移入执行队列中,当执行进程结束后,判断该进程是否已经完成,如果已经完成则移入完成队列,如果没有完成,重新有序插入就绪队列中,这就是这次实验算法的思想。附录(算法代码):#include #include #include typedef struct nodechar name20; /*进程的名字*/ int prio; /*进程的优先级*/ /int cputime; /*cpu执行时间*/ int needtime; /*进
4、程执行所需要的时间*/ char state; /*进程的状态,w-就绪态,r-执行态,f-完成态*/ struct node *next; /*链表指针*/pcb;pcb *ready=null,*run=null,*finish=null; /*定义三个队列,就绪队列,执行队列和完成队列*/ int num;void getfirst(); /*从就绪队列取得第一个节点*/ void output(); /*输出队列信息*/ void insertprio(pcb *in); /*创建优先级队列,规定优先数越小,优先级越高*/ void inserttime(pcb *in); /*时间片
5、队列*/ void insertfinish(pcb *in); /*时间片队列*/ void priocreate(); /*优先级输入函数*/ /void timecreate(); /*时间片输入函数*/ void priority(); /*按照优先级调度*/ /void roundrun(); /*时间片轮转调度*/ void main() printf(优先数调度算法n);printf(请输入要创建的进程数目:);scanf(%d,&num);priocreate();priority();output();void getfirst() /*取得第一个就绪队列节点*/ run =
6、 ready; if(ready!=null) run -state = r; ready = ready -next; run -next = null; void output() /*输出队列信息*/ pcb *p; p = ready; printf(进程名t优先级t需要时间t进程状态n); while(p!=null) printf(%st%dt%dtt%ctn,p-name,p-prio,p-needtime,p-state); p = p-next; p = finish; while(p!=null) printf(%st%dt%dtt%ctn,p-name,p-prio,p-
7、needtime,p-state); p = p-next; p = run; while(p!=null) printf(%st%dt%dtt%ctn,p-name,p-prio,p-needtime,p-state); p = p-next; void insertprio(pcb *in) /*创建优先级队列,规定优先数越小,优先级越低*/ pcb *fst,*nxt; fst = nxt = ready; if(ready = null) /*如果队列为空,则为第一个元素*/ in-next = ready; ready = in; else /*查到合适的位置进行插入*/ if(in
8、 -prio = fst -prio) /*比第一个还要大,则插入到队头*/ in-next = ready; ready = in; else while(fst-next != null) /*移动指针查找第一个别它小的元素的位置进行插入*/ nxt = fst; fst = fst-next; if(fst -next = null) /*已经搜索到队尾,则其优先级数最小,将其插入到队尾即可*/ in -next = fst -next; fst -next = in; else /*插入到队列中*/ nxt = in; in -next = fst; void insertfinish
9、(pcb *in) /*将进程插入到完成队列尾部*/ pcb *fst; fst = finish; if(finish = null) in-next = finish; finish = in; else while(fst-next != null) fst = fst-next; in -next = fst -next; fst -next = in; void priocreate() /*优先级调度输入函数*/ pcb *tmp; int i; printf(输入进程名字,进程所需时间和优先级数:n); for(i = 0;i name); getchar(); /*吸收回车符号
10、*/ scanf(%d,&(tmp-needtime); getchar();scanf(%d,&(tmp-prio); / tmp -cputime = 0; tmp -state =w; /tmp -prio = 20 - tmp-needtime; /*设置其优先级,需要的时间越多,优先级越低*/ insertprio(tmp); /*按照优先级从高到低,插入到就绪队列*/ void priority() /*按照优先级调度,每次执行一个时间片*/ int flag = 1; getfirst(); while(run != null) /*当就绪队列不为空时,则调度进程如执行队列执行*/ output(); /*输出每次调度过程中各个节点的状态*/ while(flag) run-prio -= 3; /*优先级减去三*/ /run-cputime+; /*cpu时间片加一*/ run-needtime-;/*进程执行完成的剩余时间减一*/ if(run-needtime = 0)/*如果进程执行完毕,将进程状态置为f,将其插入到完成队列*/ run -state = f; / run-count+; /*进程执行的次数加一*/ insertfinish(run); flag
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司两年团建活动方案
- 公司中秋定制活动方案
- 公司中秋节汉服活动方案
- 公司举办中秋活动方案
- 公司举办插花活动方案
- 公司举办远足活动方案
- 公司举行羽毛球活动方案
- 公司乔迁搞活动方案
- 公司二季度活动方案
- 公司五一线上活动方案
- 40篇英语短文搞定3500个单词 正文
- 尿培养的健康宣教
- 《钢铁是怎样炼成的》选择题(含答案)
- 2024年中国融通文化教育集团有限公司招聘笔试参考题库含答案解析
- 煤矿井下安全避险六大系统 课件 项目五供水施救系统建设
- 局灶性大脑挫伤伴出血查房
- 医院外包业务保洁评估报告
- 运动健康:科学减脂方案
- 河南省天一大联考2024届高一物理第二学期期末综合测试模拟试题含解析
- 血液灌流患者护理查房
- 上海开放大学《集装箱班轮运输业务与法律》终结性考试复习题库(附答案)
评论
0/150
提交评论