ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:161.64KB ,
资源ID:11274063      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11274063.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(实验二作业调度模拟程序.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

实验二作业调度模拟程序.docx

1、实验二作业调度模拟程序实验二 作业调度模拟程序 专业:08信息管理与信息系统姓名:黄赞润 学号:200806054113一、 实验目的 (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 (*)用曲线图或柱形图表示出以上数据,分析算法的优点和缺点。四、

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

5、针*/,调用相关功能的子函数,实现程序!流程图: void start()/输入作业数和选择作业方式,调用input和run子函数void input()/子程序-输入作业数据void 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) / 调用jisuan

6、r,计算权值,然后对作业优先权值进行由小到大排序,返回*minvoid jisuanr()/ 计算作业优先权值。running(WN *p,int m)/ 将FCFS的*p或者SJF 和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(); 算法实现:存储结构为带指针的结

7、构体,关键函数:包括三种作业调度方式。与关于作业数的总循环。主要算法实现:通过dowhile();函数做关于指针的遍历循环,通过子函数调用,实现程序逻辑。 3. 主要程序段及其解释:首先通过struct jcb ;定义带指针结构体,主函数只有main() start(); last(); printf(结束);其他由子函数相互调用实现。通过 for(i=0;istatut=u&p-artimestatut=a; p=p-link; iden=0; else p=p-link ; while(p!=NULL);对已经到达的作业进行从U(未到达)到A(到达)状态转化,其中iden为标记是否有作业到

8、达,为1的话则表示无作业到达,执行 if(iden) i-; time+; 直到有作业到达,iden变为0通过 switch(m) case 1: p=fcfs(m);/*running*/ running(p,m); break; case 2: min=sjf(m);/*running*/ running(min,m); break; case 3: min=hrn(m);/*running*/ running(min,m); break; 实现选择调度方式,并通过running子函数运行作业,其中min皆为由子函数调回的最短作业指针和最小权值指针。 通过void jisuanr()/*计

9、算优先权值*/ WN *s; s=head; do if(s-statut=a) s-r=(float)(time-s-artime+s-rqtime)/s-rqtime ; s=s-link ; while(s!=NULL);通过running(WN *p,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-ta

10、w; 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;/*完成*/ 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-s

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

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1