实验二作业调度模拟程序(共13页).doc

上传人:飞****2 文档编号:27093982 上传时间:2022-07-22 格式:DOC 页数:13 大小:130.50KB
返回 下载 相关 举报
实验二作业调度模拟程序(共13页).doc_第1页
第1页 / 共13页
实验二作业调度模拟程序(共13页).doc_第2页
第2页 / 共13页
点击查看更多>>
资源描述

《实验二作业调度模拟程序(共13页).doc》由会员分享,可在线阅读,更多相关《实验二作业调度模拟程序(共13页).doc(13页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、精选优质文档-倾情为你奉上实验二 作业调度模拟程序 专业:08信息管理与信息系统姓名:黄赞润 学号:3一、 实验目的 (1)加深对作业调度算法的理解;(2)进行程序设计的训练。二、 实验内容和要求 用高级语言编写一个或多个作业调度的模拟程序。单道批处理系统的作业调度程序。作业一投入运行,它就占有计算机的一切资源直到作业完成为止,因此调度作业时不必考虑它所需要的资源是否得到满足,它所运行的时间等因素。 作业调度算法:采用先来先服务(FCFS)调度算法,即按作业到达的先后次序进行调度。总是首先调度在系统中等待时间最长的作业。每个作业由一个作业控制块JCB表示,JCB可以包含以下信息:作业名、提交(

2、到达)时间、所需的运行时间、所需的资源、作业状态、链指针等等。 作业的状态可以是等待W(Wait)、运行R(Run)和完成F(Finish)三种之一。每个作业的最初状态都是等待W。一、 模拟数据的生成1 允许用户指定作业的个数(2-24),默认值为5。2 允许用户选择输入每个作业的到达时间和所需运行时间。3 (*)从文件中读入以上数据。4 (*)也允许用户选择通过伪随机数指定每个作业的到达时间(0-30)和所需运行时间(1-8)。二、 模拟程序的功能1 按照模拟数据的到达时间和所需运行时间,执行FCFS, SJF和HRRN调度算法,程序计算各作业的开始执行时间,各作业的完成时间,周转时间和带权

3、周转时间。2 动态演示每调度一次,更新现在系统时刻,处于运行状态和等待各作业的相应信息(作业名、到达时间、所需的运行时间等)对于HRRN算法,能在每次调度时显示各作业的响应比R情况。3 (*)允许用户在模拟过程中提交新作业。4 (*)编写并调度一个多道程序系统的作业调度模拟程序。 只要求作业调度算法:采用基于先来先服务的调度算法。 对于多道程序系统,要假定系统中具有的各种资源及数量、调度作业时必须考虑到每个作业的资源要求。三、 模拟数据结果分析1 对同一个模拟数据各算法的平均周转时间,平均带权周转时间比较。2 (*)用曲线图或柱形图表示出以上数据,分析算法的优点和缺点。四、 其他要求1 完成报

4、告书,内容完整,规格规范。三、 实验方法、步骤及结果测试1. 源程序名:压缩包文件(zip)中源程序名 run.c可执行程序名:run.exe2. 原理分析及流程图程序主要为带指针的结构体存储struct jcbchar name10;int artime;/*到达shijian*/int rqtime;/*服务*/int sttime;/*调度*/int fntime;/*完成*/float tat;/*周转*/float taw;/*带权*/float r;/*优先权*/ char statut;/*状态*/struct jcb *link;/*结构体指针*/,调用相关功能的子函数,实现程

5、序!流程图:开始初始化所有作业,并选择进行作业的方式。时间为0输入作业数,作业到达时间等时间time+1未到达状态且已到达?是否switch选择作业方式FSFC工作方式SJF工作方式HRN工作方式123排序,输出排序后工作顺序按时间长短排序状态到达计算优先权值,并按值排序状态到达否作业数不为0否计算调度时间 完成时间 周转时间 带权周转时间Time=rqtime+time输出状态分别为U,A,R,F的作业。输出全部完成作业,并计算带全周转时间和平均带权周转时间。结束void start()/输入作业数和选择作业方式,调用input和run子函数void input()/子程序-输入作业数据vo

6、id run(int m)/ 开始运算,通过for(i=0;in;i+)循环,其中n为作业数。判断到达且状态为未到达的作业。并把状态转为到达,然后通过switch对M进行判断选择,m1调用fcfs,m2为sjf,m3调用hrn。WN* fcfs(int m)/ 对作业进行排序。返回指针*tWN* sjf(int m)/ /对作业要求时间进行由小到大排序,返回*minWN* hrn(int m) / 调用jisuanr,计算权值,然后对作业优先权值进行由小到大排序,返回*minvoid jisuanr()/ 计算作业优先权值。running(WN *p,int m)/ 将FCFS的*p或者SJF

7、 和HRN的*min传递到running,然后进行A状态转换到R状态,计算调用时间等。void print(int m)/ 输出各状态作业。void print2(WN *pr,int m)/ 输出最后结果void last()/ 计算平均TAT 平均TAWmain()/ 主函数start();last();printf(n结束n);getchar();getchar(); 算法实现:存储结构为带指针的结构体,关键函数:包括三种作业调度方式。与关于作业数的总循环。主要算法实现:通过dowhile();函数做关于指针的遍历循环,通过子函数调用,实现程序逻辑。 3. 主要程序段及其解释:首先通过s

8、truct jcb ;定义带指针结构体,主函数只有main()start();last();printf(结束);其他由子函数相互调用实现。通过for(i=0;istatut=u&p-artimestatut=a;p=p-link;iden=0;elsep=p-link ;while(p!=NULL);对已经到达的作业进行从U(未到达)到A(到达)状态转化,其中iden为标记是否有作业到达,为1的话则表示无作业到达,执行if(iden)i-;time+;直到有作业到达,iden变为0通过switch(m)case 1:p=fcfs(m);/*running*/running(p,m);brea

9、k;case 2:min=sjf(m);/*running*/running(min,m);break;case 3:min=hrn(m);/*running*/running(min,m);break;实现选择调度方式,并通过running子函数运行作业,其中min皆为由子函数调回的最短作业指针和最小权值指针。 通过void jisuanr()/*计算优先权值*/WN *s;s=head;doif(s-statut=a)s-r=(float)(time-s-artime+s-rqtime)/s-rqtime ;s=s-link ;while(s!=NULL);通过running(WN *p,

10、int m) 运行作业并计算p-sttime=time;p-statut=r;/*a-r*/p-fntime=p-sttime+p-rqtime;p-tat=(float)p-fntime-p-artime;p-taw=(float)p-tat/p-rqtime;atat=atat+p-tat;ataw=ataw+p-taw;print(p,m);p-statut=f;/*r-f*/time = p-rqtime+time;printf(按回车继续);getch(); 其中有A到R(运行中)和R到F(完成)的状态转化。通过void print2(WN *pr,int m)p = head;/*

11、完成*/printf(nn系统时间为=%d, time);printf(n全部作业已经完成:n); do if(p-statut = f) if(m = 3) printf(%st%dt%dt%dt%dt%4.2ft%4.2ft%fn, p-name, p-artime , p-rqtime , p-sttime , p-fntime, p-tat, p-taw, p-r); else printf(%st%dt%dt%dt%dt%4.2ft%4.2ft%fn, p-name, p-artime , p-rqtime , p-sttime , p-fntime, p-tat, p-taw);

12、p = p-link; while( p != NULL );输出全部作业!4. 运行结果及分析测试1:调度方式的选择!FCFS的结果(与SJF一样)测试2方式为FCFS结果为方式为SJF结果为方式为HRN结果为自测:数据如上,方式为FCFS结果为数据如上,方式为SJF结果为数据如上,方式为HRN结果为 结果与预想符合,结论:程序能正常运行,且结果正确! 四、 实验总结这次实验让我从所未有的累,这是一个几乎结合了之前关于C语言知识,可以说是第一次用很多零碎的知识拼凑成一个程序,一个月的时间让我懂得如何去编程,事先有正确的逻辑,流程图和伪代码成为必须的工具,之前那种想到什么编什么的方式已经不适用。虽然这次实验有参照有关程序,但还是靠自己一步一步探索做出来了,也克服了对指针和子函数迷漫,也克服了长程序无从下手的恐惧感,实验最后顺利完成!专心-专注-专业

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com