进程调度模拟设计_第1页
进程调度模拟设计_第2页
进程调度模拟设计_第3页
进程调度模拟设计_第4页
进程调度模拟设计_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、附件1:学号:0120810340课程设计题目进程调度模拟设一优先级法、最高响应比优先调度算法学院计算机科学与技术专业计算机科学与技术一班级计算机科学与技术一姓名指导教师2011年 01月18日课程设计任务书学生姓名:专业班级:指导教师: 工作单位:计算机科学与技术学院题目:进程调度模拟设计一 优先级法、最高响应比优先调度算法初始条件:预备内容:阅读操作系统的处理机管理章节内容,对进程调度的功能以及进程 调度算法有深入的理解。实践准备:掌握一种计算机高级语言的使用。要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)模拟进程调度,能够处理以下的情形:能够选择不同的调

2、度算法(要求中给出的调度算法);能够输入进程的基本信息,如进程名、优先级、到达时间和运行时间等;根据选择的调度算法显示进程调度队列;根据选择的调度算法计算平均周转时间和平均带权周转时间。设计报告内容应说明:课程设计目的与功能;需求分析,数据结构或模块说明(功能与框图);源程序的主要部分;测试用例,运行结果与运行情况分析;自我评价与总结:i)你认为你完成的设计哪些地方做得比较好或比较出色;ii)什么地方做得不太好,以后如何改正;iii)从本设计得到的收获(在编写,调试,执行过程中的经验和教训);iv)完成本题是否有其他方法(如果有,简要说明该方法);v)对实验题的评价和改进意见,请你推荐设计题目

3、。时间安排:设计安排一周:周1、周2:完成程序分析及设计。周2、周3:完成程序调试及测试。周4、周5:验收、撰写课程设计报告。(注意事项:严禁抄袭,一旦发现,抄与被抄的一律按0分记)指导教师签名:年月日系主任(或责任教师)签名:年月日进程调度模拟设计(优先级法、最高响应比优先调度算法)1设计目的与实现功能模拟进程调度,使程序能够完成:选择不同的调度算法(优先级法或者最高响应比法), 选毕算法,能够输入若干进程,包括进程的一些基本信息,如进程名、优先级、到达时间和 运行时间等;根据选择的调度算法显示进程调度队列;根据选择的调度算法计算平均周转时 间和平均带权周转时间。2需求分析2.1实验原理最高

4、响应比优先算法(HRN):最高响应比是对先来先服务和最短进程优先 法德一种综合平衡。HRN调度策略同时考虑每个进程的等待时间长短和估计 需要的执行时间长短,从中选出响应比最高的进程投入执行。响应比R定义如下:R=(W+T)/T=1+W/T其中T为该进程的估计需要的执行时间,W为进程在后备状态队列的等待时 间。每当要进行进程调度是,系统计算每个进程的响应比,选择其中R最大者 投入执行。优先级法:系统和用户按某种原则为进程制定一个优先级来表示该进程所享有 的调度优先权。根据优先级的高低来对进程加以调度。3.数据结构3.1主要结构及函数struct elment进程的名称进程提交的时间(小时)进程提

5、交(分钟)进程的名称进程提交的时间(小时)进程提交(分钟)/进程运行需要的时间记录进程开始运行的时间/进程是否在等待的判断位记录进程优先级或者响应比char name10;prigle pri;int hour;int min;int time;int time1;int test;struct priglefloat prii;int num;行作用一:定位进程,作用二,标记进程是否运;void input()void Getpriorder()void HRN()void Getorder()/输入进程信息按优先级从大小排列进程最高响应比算法/与void Getpriorder()连用,完

6、成优先级算法最高响应比算法思路: 参数自己按照提示输入;中断时机,某进程执行完成;调度算法思路:系统时间取的第一个进程的提交时间,并执行第一个进程;当 某进程执行完成时,系统时间加上该完成进程的运行时间,并删除该节点。3.2流程图4.源程序的主要部分4.1,输入函数void input()/输入进程信息while(1)int d=0;cout请输入第all+1个进程的名称,;if(or=1)cout”优先级,;cout到达时间,运行时间eall.pri.prii;else eall.pri.prii=0;fflush(stdin);char t5;scanf(%s”,&t);d=(t0-48)

7、*10+(t1-48);if(d24|d0)cout输入有误(24小时形式),请重新输入eall.time;eall.time1=eall.hour*60+eall.min;all+;int test1;coutendl;couttest1;if(test1!=1)break;4.2,最高响应比void HRN()最高响应比算法elment temp=e0;for(int i=1;iei.time1)temp=ei;a10=temp.pri.num;ea10.pri.num=-1;for(int j=0;jall-1;j+)for(int k=0;kall;k+)if(ek.pri.num=-

8、1)continue;if(ek.time1temp.time1+temp.time)ek.time1=temp.time1+temp.time;for(int t=0;tall;t+)if(et.pri.num=-1)continue;et.pri.prii=(et.time1-et.hour*60-et.min)/et.time;for(int h=0;hall;h+)if(eh.pri.num=-1)continue;if(temp.pri.priieh.pri.prii)temp=eh;a1j+1=temp.pri.num;ea1j+1.pri.num=-1;4.3优先级算法void

9、Getorder()与 void Getpriorder()连用,完成优先级算法elment temp=e0;/temp19;int n=0;for(int i=0;iei.time1)temp=ei;n=0;a10=temp.pri.num;ea10.pri.num=-1;for(int k=0;kall;k+)if(k=a10)continue;if(ek.time1(ea10.time1+ea10.time)ek.test=1;ek.time1=ea10.time1+ea10.time;n=0;for(int h=0;hall-1;h+)for(int count=0;countall;

10、count+)if(ecount.hour*60+ecount.min)(temp.time1+temp.time)ecount.test=1;for(int t=0;tall;t+)if(eat.pri.num=-1)continue;if(eat.test=1)temp=eat;a1+n=temp.pri.num;eat.pri.num=-1;break;for(int r=0;rall;r+)if(er.pri.num=-1)continue;if(er.time1(temp.time1+temp.time)er.time1=temp.time1+temp.time;int p=0;fo

11、r(int l=0;lall-1;l+)p+=a1l;a1+n=all*(all-1)/2-p;4.4输出函数void output()cout*endl;cout进程调度详情如下所示endl;cout进程名称;if(or=1)cout”优先级 ;cout到达时间开始时间结束时间运行时间 周转时间带周转时间endl;float etime=0.0;float etime1=0.0;for(int i=0;iall;i+) TOC o 1-5 h z cout t;if(or=1)coutea1i.pri.priit”;if(ea1i.hour10)cout0”ea1i.hou

12、r”:ea1i.min”else coutea1i.hour”:ea1i.min”;if(ea1i.time1/6010)cout0ea1i.time1/60:;else coutea1i.time1/60:;if(ea1i.time1%6010)cout0ea1i.time1%60t;else coutea1i.time1%60t;if(ea1i.time1/60+ea1i.time)10)cout0”(ea1i.time1+ea1i.time )/60:;else cout(ea1i.time1+ea1i.time)/60”:;if(ea1i.time1+ea1i.time)%6010)c

13、out0”(ea1i.time1+ea1i.tim e)%60t;else cout(ea1i.time1+ea1i.time)%60t”;coutea1i.timet”;int zhou=ea1i.time1-ea1i.hour*60-ea1i.min+ea1i.time;coutzhou t;float zhou1=float(zhou)/float(ea1i.time);etime1+=zhou1;coutzhou1endl;etime+=float(ea1i.time1-ea1i.hour*60-ea1i.min+ea1i.time);cout”平均周转时间:etime/all”(mi

14、nute)endl;cout”平均带权周转时间:etime1/all”(minute)endl;cout*endl;5测试1=1 回可 .1 H -T其时 按达可-T 键, 其时 按达1=1 回可 .1 H -T其时 按达可-T 键, 其时 按达1.优先级算法 输入测试用例:名称优先级到达时间运行时间(分)Li212:3030Ji312:3525Ha412:3920An112:2515分析:输入了四个进程;首先找出最先到达的进程,虽然an进程优先级最 低,但来的最早,进程an运行完毕后,找出就绪的进程,在就绪的进程中, 选出优先级高的,经分析,进程运行的先后顺序为an ha ji li经计算,

15、运算 结果合乎程序的运行情况。2.最高响应比测试用例名称到达时间运行时间(分)Li08:3030An08:3525Ji08:4019分析:首先找出最先到达的进程,本例为:li 然后计算相应比:R(ji)=1+20/19R(an)=1+25/25显然R(ji)R(an),所以先运行ji,再运行an,尽管进程an到达的时间 比进程ji到达的时间早。6.自我评价与总结6.1自我认为出色的地方本次课程设计,我的题目是:进程的模拟调度,用优先级算法和最高响应比 实现。我的程序采用数组形式实现,并且定义了结构体,用结构体来记录存储进 程的具体信息:struct elment进程的名称进程的名称char n

16、ame10;prigle pri;进程提交的时间(小时)进程提交(分钟)进程提交的时间(小时)进程提交(分钟)进程运行需要的时间记录进程开始运行的时间/进程是否在等待的判断位int min;int time;int time1;int test;struct prigle记录进程优先级或者响应比作用一:定位进程,作用二,标记进程记录进程优先级或者响应比作用一:定位进程,作用二,标记进程int num;是否运行;对struct prigle中的num,对struct prigle中的num,prii的运用比较充分,满 num的值置为-1以表示该进程已经运行过。Prii在最高响应比算法中用于存储计

17、算得来的响应比,在优先 级算法中用于存储进程的优先级。整个结构体的运用都很充分。6.2不足与完成本题的其它方法本题采用数组形式实现的,这也就决定了程序不能动态的实现,即,输入的 进程的个数是有限的,本程序使用大量的for循环,如果输入的进程的数量较大 的话,势必会影响程序的运行速度。对此类问题,以后要仔细观察,进行代码优 化。另一种方法当时用链表实现进程的模拟调度,定义一个结构体,用该结构体 的变量作为节点,其他方法类似于数组形式实现。63总结本次课程设计,收获不小,但暴露的问题也不少,首当其冲的是考虑问题不 严谨,对程序的大体进程能做到熟练掌握,但是在小的地方容易疏忽,本次实验 给我影响留下最深刻的是temp变量,只注意使用它,结

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论