文档详情

课程设计--最高响应比优先调度算法.doc

发布:2018-05-11约5.49千字共9页下载文档
文本预览下载声明
课程设计任务书 学 院 信息科学与工程学院 专 业 计算机科学与技术 学 生 姓 名 学 号 题 目 最高响应比优先调度算法 内容及要求: 内容: 编写程序完成批处理系统中的作业调度,要求采用响应比高者优先的作业调度算法。实现具体包括:首先确定作业控制块的内容和组成方式;然后完成作业调度;最后编写主函数,对所做工作进行测试。 要求: 最高响应比优先法(HRRN)是对FCFS方式和SJF 方式的一种综合平衡。HRRN调度策略同时考虑每个作业的等待时间长短和估计需要的执行时间长短,从中选出响应比最高的作业投入执行。 任务交付: 程序源代码; 课程设计论文及电子文档。 进度安排: 第18周:布置课程设计任务,完成详细设计。实验室组装、调试 第20周:验收和答辩,收取课程设计报告,上交给老师,逾期不收。 指导教师(签字): 年 月 日 学院院长(签字): 年 月 日 目  录 1 题目内容及要求 2 1.1 题目名称 2 1.2 题目描述 2 1.3 解题思路 2 1.4 程序清单 2 1.5 提交结果框图 7 2 总结 7 3 参考文献 8 1 题目内容及要求 题目名称 最高响应比优先调度算法 题目描述 编写程序完成批处理系统中的作业调度,要求采用响应比高者优先的作业调度算法。实现具体包括:首先确定作业控制块的内容和组成方式;然后完成作业调度;最后编写主函数,对所做工作进行测试。 解题思路 最高响应比优先法(HRRN)是对FCFS方式和SJF 方式的一种综合平衡。HRRN调度策略同时考虑每个作业的等待时间长短和估计需要的执行时间长短,从中选出响应比最高的作业投入执行。 响应比R定义如下: R=(W+T)/T=1+W/T 其中T为该作业估计需要的执行时间,W为作业在后备状态队列中的等待时间。 每当要进行作业调度时,系统计算每个作业的响应比,选择其中R最大者投入执行。这样,即使是长作业,随着它等待时间的增加,W/T也就随着增加,也就有机会获得调度执行。这种算法是介于FCFS和SJF 之间的一种折中算法。由于长作业也有机会投入运行,在同一时间内处理的作业数显然要少于SJF 法,从而采用HRRN 方式时其吞吐量将小于采用SJF 法时的吞吐量。另外,由于每次调度前要计算响应比,系统开销也要相应增加。 程序清单 #includedos.h #includetime.h #includestdlib.h #includestdio.h #includeconio.h #includestring.h typedef char string[10]; /* //定义string为含有10个字符元素的字符数组类型*/ struct task { string name; /*作业号*/ int arrTime; /* 作业到达时间*/ int serTime; /*作业要求服务时间*/ int waiTime; /*等待时间*/ int begTime; /*开始运行时间*/ int finTime; /*结束运行时间*/ int turTime; /*周转时间*/ int wTuTime; /*带权周转时间*/ int priority;/*优先权*/ int finish;/*是否已经完成*/ }JCB[10]; int num; void input() { int i; system(cls); printf(\n请输入作业数量: ); scanf(%d, num); for(i=0;inum;i++) { printf(\n请输入作业 NO.%d:\n,i); printf( 作业名称: ); scanf(%s,JCB[i].name); printf( 到达时间: ); scanf(%d,JCB[i].arrTime); printf( 服务时间: ); scanf(%d,JCB[i].serTime); JCB[i].priority = 0; JCB[i].finish =0; } } int HRN(int pre) { int current=1,i,j;/* 优先权 =(等待时间+服务时间)/服务时间*/ for(i=0; inum; i++) { JCB[i].waiTime=JCB[pre].finTime-JCB[i].arrTime; /*等待时间 =上一个作业的完成时间-到达时间*/ JCB[i].priority=(JCB[i].waiTime+JCB[i].serTime)/JCB[i].serTime; } for(i=0; i
显示全部
相似文档