操作系统实验报告-批处理系统的作业调度

上传人:ji****72 文档编号:37727971 上传时间:2018-04-21 格式:DOC 页数:6 大小:49KB
返回 下载 相关 举报
操作系统实验报告-批处理系统的作业调度_第1页
第1页 / 共6页
操作系统实验报告-批处理系统的作业调度_第2页
第2页 / 共6页
操作系统实验报告-批处理系统的作业调度_第3页
第3页 / 共6页
操作系统实验报告-批处理系统的作业调度_第4页
第4页 / 共6页
操作系统实验报告-批处理系统的作业调度_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《操作系统实验报告-批处理系统的作业调度》由会员分享,可在线阅读,更多相关《操作系统实验报告-批处理系统的作业调度(6页珍藏版)》请在金锄头文库上搜索。

1、实验一实验一 批处理系统的作业调度批处理系统的作业调度一实验目的一实验目的 (1)加深对作业概念的理解。 (2)深入了解批处理系统如何组织作业、管理作业和调度作业。二实验内容二实验内容 编写程序完成批处理系统的作业调度,要求采用响应比优先调度算法。三实验原理三实验原理最高响应比优先法(HRRN)是对 FCFS 方式和 SJF 方式的一种综合平衡。HRRN 调度策 略同时考虑每个作业的等待时间长短和估计需要的执行时间长短,从中选出响应比最高的 作业投入执行。 响应比 R 定义如下: R=(W+T)/T=1+W/T 其中 T 为该作业估计需要的执行时间,W 为作业在后备状态队列中的等待时间。每当要

2、进行作业调度时,系统计算每个作业的响应比,选择其中 R 最大者投入执行。这样, 即使是长作业,随着它等待时间的增加,W/T 也就随着增加,也就有机会获得调度执行。 这种算法是介于 FCFS 和 SJF 之间的一种折中算法。由于长作业也有机会投入运行,在同 一时间内处理的作业数显然要少于 SJF 法,从而采用 HRRN 方式时其吞吐量将小于采用 SJF 法时的吞吐量。另外,由于每次调度前要计算响应比,系统开销也要相应增加。四实验部分源程序四实验部分源程序 实验中,作业控制块及队列的数据结构定义如下: struct task string name; /*作业号*/ int arrTime; /*

3、 作业到达时间*/ int serTime; /*作业要求服务时间*/ int waiTime; /*等待时间*/ int begTime; /*开始运行时间*/ int finTime; /*结束运行时间*/ int turTime; /*周转时间*/ int wTuTime; /*带权周转时间*/ int priority;/*优先权*/ int finish;/*是否已经完成*/ JCB10;存放作业控制块的区域: #define n 10 JCB jobtable10; int jobcount;将作业控制块组织成一个队列,实验中采用静态链表的方式模拟作业的后备队列,作 业队列头指针定

4、义为:int *head; 主程序为:主程序为: #include #include #include #include #include #include typedef char string10; /* /定义 string 为含有 10 个字符元素的字符数组类型*/ struct task string name; /*作业号*/ int arrTime; /* 作业到达时间*/ int serTime; /*作业要求服务时间*/ int waiTime; /*等待时间*/ int begTime; /*开始运行时间*/ int finTime; /*结束运行时间*/ int turT

5、ime; /*周转时间*/ int wTuTime; /*带权周转时间*/ int priority;/*优先权*/ int finish;/*是否已经完成*/ JCB10;int num; void input() int i;system(“cls“); printf(“n 请输入作业数量: “); scanf(“%d“, for(i=0;iJCBcurrent.priority ) current=j;/* 找出到达时间在上一个作业完成之前,优先权高的作业*/ else /* 如果作业是在上一个作业完成之后到达*/ if(JCBj.arrTimeJCBcurrent.priority)

6、current=j; /*找出服务时间比较短的一个*/ return current;/*返回当前作业*/ void runing(int i, int times, int pre, int staTime, int endTime) if(times=0) JCBi.begTime=JCBi.arrTime;JCBi.finTime=JCBi.begTime+JCBi.serTime; JCBi.turTime=JCBi.serTime; JCBi.wTuTime=1.0; staTime=JCBi.begTime; else if(JCBi.arrTimeJCBpre.finTime)

7、JCBi.begTime=JCBi.arrTime; else JCBi.begTime=JCBpre.finTime; JCBi.finTime=JCBi.begTime+JCBi.serTime; JCBi.turTime=JCBi.finTime-JCBi.arrTime; JCBi.wTuTime=JCBi.turTime/JCBi.serTime; if(times=num-1) endTime=JCBi.finTime; JCBi.finish=1; void print(int i,int times) if(times=0) printf(“ 名称 到达时间 服务时间 开始时间

8、 完成时间 周转时间 带权 周转时间n“); printf(“%9s%9d%9d%9d%9d%9d%9dn“, JCBi.name,JCBi.arrTime,JCBi.serTime, JCBi.begTime,JCBi.finTime,JCBi.turTime,JCBi.wTuTime); void check( ) int i; int staTime, endTime, sumTurTime=0.0, sumWTuTime=0.0, aveTurTime, aveWTuTime; int current=0, times=0, pre=0; JCBpre.finTime=0; for(i

9、=0; inum; i+) JCBi.finish=0; staTime, endTime,sumTurTime=0.0, sumWTuTime=0.0, aveTurTime, aveWTuTime; current=0; times=0; pre=0; JCBpre.finTime=0; printf(“-n“);for(i=0; inum; i+) JCBi.finish=0; staTime, endTime,sumTurTime=0.0, sumWTuTime=0.0, aveTurTime, aveWTuTime; current=0; times=0; pre=0; JCBpre

10、.finTime=0; printf(“n- HRRN -n“); for(times=0; timesnum; times+) current=HRN(pre); runing(current, times, pre, staTime, endTime); print(current, times); pre=current; for(i=0; inum; i+) sumTurTime+=JCBi.turTime; sumWTuTime+=JCBi.wTuTime; aveTurTime=sumTurTime/num; aveWTuTime=sumWTuTime/num; printf(“(

11、计与平均值) %9d%9d%9d%9dn“,NULL,sumTurTime,aveTurTime,aveWTuTime); printf(“-n“); void main() char again; do system(“cls“); /*清屏*/ printf(“please input 4 groups of datas:n“); input(); check(); printf(“Continue.(Y/N): “); do again = getch(); while(again!=Y while(again=Y | again=y); 五实验结果与体会五实验结果与体会从运行结果得到调度序列结果为:X1X2X3 X1 到达时间最早,服务时间也最短,其响应比最高; X2 到达时间为 22,但 X1 早到达,所以开始时间为 22,服务时间为 12,所以响应比 X1 小;X3 到达时间最迟,其响应比最小,所以在最后。我的体会:我的体会:

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号