欢迎来到天天文库
浏览记录
ID:55305979
大小:42.50 KB
页数:6页
时间:2020-05-09
《操作系统实验报告-批处理系统的作业调度.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实验一批处理系统的作业调度一.实验目的(1)加深对作业概念的理解。(2)深入了解批处理系统如何组织作业、管理作业和调度作业。二.实验内容编写程序完成批处理系统的作业调度,要求采用响应比优先调度算法。三.实验原理最高响应比优先法(HRRN)是对FCFS方式和SJF方式的一种综合平衡。HRRN调度策略同时考虑每个作业的等待时间长短和估计需要的执行时间长短,从中选出响应比最高的作业投入执行。响应比R定义如下:R=(W+T)/T=1+W/T其中T为该作业估计需要的执行时间,W为作业在后备状态队列中的等待时间。每当要进行作业调度时,系统计算每个作业的响应比,选择其中R最大者
2、投入执行。这样,即使是长作业,随着它等待时间的增加,W/T也就随着增加,也就有机会获得调度执行。这种算法是介于FCFS和SJF之间的一种折中算法。由于长作业也有机会投入运行,在同一时间内处理的作业数显然要少于SJF法,从而采用HRRN方式时其吞吐量将小于采用SJF法时的吞吐量。另外,由于每次调度前要计算响应比,系统开销也要相应增加。四.实验部分源程序实验中,作业控制块及队列的数据结构定义如下:structtask{stringname;/*作业号*/intarrTime;/*作业到达时间*/intserTime;/*作业要求服务时间*/intwaiTime;/*等
3、待时间*/intbegTime;/*开始运行时间*/intfinTime;/*结束运行时间*/intturTime;/*周转时间*/intwTuTime;/*带权周转时间*/intpriority;/*优先权*/intfinish;/*是否已经完成*/}JCB[10];存放作业控制块的区域:#definen10JCBjobtable[10];intjobcount;将作业控制块组织成一个队列,实验中采用静态链表的方式模拟作业的后备队列,作业队列头指针定义为:int*head;主程序为:#include#include#include<
4、stdlib.h>#include#include#includetypedefcharstring[10];/*//定义string为含有10个字符元素的字符数组类型*/structtask{stringname;/*作业号*/intarrTime;/*作业到达时间*/intserTime;/*作业要求服务时间*/intwaiTime;/*等待时间*/intbegTime;/*开始运行时间*/intfinTime;/*结束运行时间*/intturTime;/*周转时间*/intwTuTime;/*带权周转时
5、间*/intpriority;/*优先权*/intfinish;/*是否已经完成*/}JCB[10];intnum;voidinput(){inti;system("cls");printf("请输入作业数量:");scanf("%d",&num);for(i=0;i6、&JCB[i].serTime);JCB[i].priority=0;JCB[i].finish=0;}}intHRN(intpre){intcurrent=1,i,j;/*优先权=(等待时间+服务时间)/服务时间*/for(i=0;i7、!JCB[i].finish){current=i;/*找到第一个还没完成的作业*/break;}}for(j=i;jJCB[current].priority)current=j;/*找出到达时间在上一个作业完成之前,优先权高的作8、业*/}e
6、&JCB[i].serTime);JCB[i].priority=0;JCB[i].finish=0;}}intHRN(intpre){intcurrent=1,i,j;/*优先权=(等待时间+服务时间)/服务时间*/for(i=0;i7、!JCB[i].finish){current=i;/*找到第一个还没完成的作业*/break;}}for(j=i;jJCB[current].priority)current=j;/*找出到达时间在上一个作业完成之前,优先权高的作8、业*/}e
7、!JCB[i].finish){current=i;/*找到第一个还没完成的作业*/break;}}for(j=i;jJCB[current].priority)current=j;/*找出到达时间在上一个作业完成之前,优先权高的作
8、业*/}e
此文档下载收益归作者所有