




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
进程调度模拟设计——最高响应比优先调度算法实验报告一、实验题目与规定1、实验题目:加深对作业概念的理解。进一步了解批解决系统如何组织作业、管理作业和调度作业。2、实验规定:编写程序完毕批解决系统中的作业调度,规定采用响应比高者优先的作业调度算法。实现具体涉及:一方面拟定作业控制块的内容和组成方式;然后完毕作业调度;最后编写主函数,对所做工作进行测试。二、总的设计思想及语言环境、工具1、总的设计思想:最高响应比优先法(HRRN)是对FCFS方式和SJF方式的一种综合平衡。HRRN调度策略同时考虑每个作业的等待时间长短和估计需要的执行时间长短,从中选出响应比最高的作业投入执行。响应比R定义如下:R=(W+T)/T=1+W/T其中T为该作业估计需要的执行时间,W为作业在后备状态队列中的等待时间。每当要进行作业调度时,系记录算每个作业的响应比,选择其中R最大者投入执行。这样,即使是长作业,随着它等待时间的增长,W/T也就随着增长,也就有机会获得调度执行。这种算法是介于FCFS和SJF之间的一种折中算法。由于长作业也有机会投入运营,在同一时间内解决的作业数显然要少于SJF法,从而采用HRRN方式时其吞吐量将小于采用SJF法时的吞吐量。此外,由于每次调度前要计算响应比,系统开销也要相应增长。2、语言环境:计算机基本配置规定:操作系统:WIN98/2023/XP/2023等Windows平台内存:256MB及以上主存64KB(Memory)(以KB为单位分派)开发语言:VisualC++6.03、工具:Windows平台+VisualC++6.0三、数据结构与模块说明(功能与框图)作业调度的实现重要有两个问题:一个是如何将系统中的作业组织起来;另一个是如何进行作业调度。为了将系统中的作业组织起来,需要为每个进入系统的作业建立档案以记录和作业相关的信息,例如,作业名、作业所需资源、作业执行时间、作业进入系统的时间、作业信息在存储器中的位置、指向下一个作业控制块的指针等信息。这个记录作业相关信息的数据块称为作业控制块(JCB),并将系统中档待作业调度的作业控制块组织成一个队列,这个队列称为后备队列。当进行作业调度时,从后备队列中查找选择作业。由于实验中没有实际作业,作业控制块中的信息内容只使用了实验中需要的数据。作业控制块中一方面应当涉及作业名;另一方面是作业所需资源(内存大小、打印机的数量和磁带机的数量);采用响应比高者优先作业调度算法,为了计算响应比,还需要有作业的估计执行时间、作业在系统中的等待时间;此外,指向下一个作业控制块的指针必不可少。实验中,作业控制块及队列的数据结构定义如下:structtask{ stringname;/*作业号*/ intarrTime;/*作业到达时间*/ﻩintserTime;/*作业规定服务时间*/ intwaiTime;/*等待时间*/ intbegTime;/*开始运营时间*/ intfinTime;/*结束运营时间*/ﻩintturTime;/*周转时间*/ intwTuTime;/*带权周转时间*/ﻩintpriority;/*优先权*/ intfinish;/*是否已经完毕*/}JCB[10];存放作业控制块的区域:#definen10JCBjobtable[10];intjobcount;将作业控制块组织成一个队列,实验中采用静态链表的方式模拟作业的后备队列,作业队列头指针定义为:int*head;实验中,内存采用可移动的动态分区管理方法,即只要内存空闲区总和比作业大就可以满足作业对内存的需求;对打印机和磁带机这两种独占设备采用静态分派法,即作业执行前必须获得所需资源,并且执行完才归还。采用响应比高者优先调度算法进行调度时,必须计算出系统中所有满足必要条件作业的响应比,从中选择响应比最高的一个作业装入主存储器分派资源。由于是实验,所以就将作业控制块出队,并输出作业名代替装入处存储器,同时修改系统的资源数量。最高响应比优先调度算法的作业调度程序流程图(如下)四、参考源程序:#include<dos.h>#include<time.h>#include<stdlib.h>#include<stdio.h>#include<conio.h>#include<string.h>typedefcharstring[10];/*//定义string为具有10个字符元素的字符数组类型*/structtask{ﻩstringname;/*作业号*/ﻩintarrTime;/*作业到达时间*/ﻩintserTime;/*作业规定服务时间*/ intwaiTime;/*等待时间*/ intbegTime;/*开始运营时间*/ﻩintfinTime;/*结束运营时间*/ﻩintturTime;/*周转时间*/ intwTuTime;/*带权周转时间*/ intpriority;/*优先权*/ intfinish;/*是否已经完毕*/}JCB[10];intnum;voidinput(){ﻩinti;system("cls");ﻩprintf("\n请输入作业数量:");ﻩscanf("%d",&num);ﻩfor(i=0;i<num;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;ﻩ}}intHRN(intpre){ intcurrent=1,i,j;/*优先权=(等待时间+服务时间)/服务时间*/ for(i=0;i<num;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<num;i++) { if(!JCB[i].finish)ﻩﻩ{ ﻩ current=i;/*找到第一个还没完毕的作业*/ ﻩﻩbreak; }ﻩ}ﻩfor(j=i;j<num;j++)/*和后面的作业比较*/ {ﻩ if(!JCB[j].finish)/*还没完毕(运营)*/ﻩﻩ{ ﻩﻩif(JCB[current].arrTime<=JCB[pre].finTime)/*假如作业在上一个作业完毕之前到达*/ﻩﻩﻩ{ﻩﻩ if(JCB[j].arrTime<=JCB[pre].finTime&&JCB[j].priority>JCB[current].priority)ﻩﻩﻩ ﻩcurrent=j;/*找出到达时间在上一个作业完毕之前,优先权高的作业*/ﻩ ﻩ}ﻩﻩﻩelse/*假如作业是在上一个作业完毕之后到达*/ﻩﻩﻩ{ ﻩ ﻩif(JCB[j].arrTime<JCB[current].arrTime) ﻩﻩ ﻩcurrent=j;/*找出比较早到达的一个*/ ﻩif(JCB[j].arrTime==JCB[current].arrTime)/*假如同时到达*/ ﻩif(JCB[j].priority>JCB[current].priority) ﻩ ﻩﻩcurrent=j;/*找出服务时间比较短的一个*/ﻩ } } }ﻩreturncurrent;/*返回当前作业*/}voidruning(inti,inttimes,intpre,intstaTime,intendTime){ if(times==0)ﻩ{ JCB[i].begTime=JCB[i].arrTime;ﻩ ﻩ ﻩ ﻩJCB[i].finTime=JCB[i].begTime+JCB[i].serTime; ﻩJCB[i].turTime=JCB[i].serTime; ﻩ ﻩ ﻩJCB[i].wTuTime=1.0; ﻩ ﻩ ﻩﻩ ﻩﻩ staTime=JCB[i].begTime;ﻩ}ﻩelseﻩ{ if(JCB[i].arrTime>JCB[pre].finTime)ﻩ ﻩJCB[i].begTime=JCB[i].arrTime; else JCB[i].begTime=JCB[pre].finTime;ﻩ JCB[i].finTime=JCB[i].begTime+JCB[i].serTime;ﻩ JCB[i].turTime=JCB[i].finTime-JCB[i].arrTime; JCB[i].wTuTime=JCB[i].turTime/JCB[i].serTime;ﻩﻩ}ﻩif(times==num-1)ﻩﻩendTime=JCB[i].finTime; JCB[i].finish=1;ﻩ}voidprint(inti,inttimes){ﻩif(times==0) {ﻩﻩprintf("名称到达时间服务时间开始时间完毕时间周转时间带权周转时间\n"); }ﻩprintf("%9s%9d%9d%9d%9d%9d%9d\n", ﻩJCB[i].name,JCB[i].arrTime,JCB[i].serTime,ﻩ JCB[i].begTime,JCB[i].finTime,JCB[i].turTime,JCB[i].wTuTime);}voidcheck(){ inti;ﻩintstaTime,endTime,sumTurTime=0.0,sumWTuTime=0.0,aveTurTime,aveWTuTime; intcurrent=0,times=0,pre=0;ﻩJCB[pre].finTime=0; for(i=0;i<num;i++) {ﻩﻩJCB[i].finish=0; }ﻩstaTime,endTime,sumTurTime=0.0,sumWTuTime=0.0,aveTurTime,aveWTuTime; current=0;times=0;pre=0; JCB[pre].finTime=0; printf("-------------------------------------------------------------------------\n"); for(i=0;i<num;i++)ﻩ{ JCB[i].finish=0; ﻩ}ﻩstaTime,endTime,sumTurTime=0.0,sumWTuTime=0.0,aveTurTime,aveWTuTime; current=0;times=0;pre=0; JCB[pre].finTime=0;ﻩprintf("\n--HRRN-----------------------------------------------------------------\n"); for(times=0;times<num;times++)ﻩ{ﻩﻩcurrent=HRN(pre); ﻩruning(current,times,pre,staTime,endTime);ﻩﻩprint(current,times);ﻩ pre=current; } for(i=0;i<num;i++) {ﻩﻩ sumTurTime+=JCB[i].turTime; ﻩﻩsumWTuTime+=JCB[i].wTuTime; }ﻩaveTurTime=sumTurTime/num;ﻩaveWTuTime=sumWTuTime/num;ﻩprintf("(计与平均值)%9d%9d%9d%9d\n",NULL,sumTurTime,aveTurTime,aveWTuTime);ﻩprintf("-------------------------------------------------------------------------\n");}voidmain(){ﻩcharagain; do{ ﻩsystem("cls");/*清屏*/ ﻩprintf("pleaseinput4groupsofdatas:\n");ﻩ input();ﻩﻩcheck();ﻩﻩprintf("Continu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度短期劳务合同(社区服务工作者)
- Unit 3 Writing Home Lesson 18 Little Zeke Sends an Email同步练习(含答案含听力原文无音频)
- 二零二五年度酒店管理分公司合作经营合同
- 二零二五年度海外网络安全与数据科学留学合同
- 二零二五年度制造业生产线劳务派遣服务协议
- 低油价发言稿
- 2025年梅州货物运输驾驶员从业资格考试系统
- 2025年成都货运从业资格证模拟考试题库
- 哪吒开学心理调适(初三)课件
- 农业产业化技术支持方案
- 2025年湖北幼儿师范高等专科学校单招职业技能测试题库含答案
- 2025年广东生态工程职业学院单招职业适应性测试题库完美版
- 模具转移合同协议书
- 政治-贵州省贵阳市2025年高三年级适应性考试(一)(贵阳一模)试题和答案
- 公司副总经理英文简历
- DeepSeek学习科普专题
- 2025浙江杭州地铁运营分公司校园招聘665人易考易错模拟试题(共500题)试卷后附参考答案
- 2025四川省小金县事业单位招聘362人历年高频重点模拟试卷提升(共500题附带答案详解)
- 2022泛海三江消防ZX900液晶手动控制盘使用手册
- 广西壮族自治区柳州市2025年中考物理模拟考试卷三套附答案
- 第11课《山地回忆》说课稿 2024-2025学年统编版语文七年级下册
评论
0/150
提交评论