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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(短作业优先的作业调度操作系统课程设计报告书.docx)为本站会员(b****8)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

短作业优先的作业调度操作系统课程设计报告书.docx

1、短作业优先的作业调度操作系统课程设计报告书摘要 作业调度是对成批进入系统的用户作业,根据作业控制块的信息,按一定的策略选取若干个作业使它们可以去获得处理器运行的一项工作。而对每个用户来说总希望自己的作业的周转时间是最小的,短作业优先(SJF)便是其中一种调度方法。 本设计是为了加深对作业概念的理解,掌握短作业优先(SJF)算法,深入了解批处理系统如何组织作业、管理作业和调度作业,了解作业控制块的作用,以与作业控制块的容和组织方式。为了将系统中的作业组织起来,需要为每个进入系统的作业建立档案以记录和作业相关的信息,例如作业名、作业所需资源、作业执行时间、作业进入系统的时间、作业信息在存储器中的位

2、置、指向下一个作业控制块的指针等信息。这个记录作业相关信息的数据块称为作业控制块(JCB),并将系统中等待作业调度的作业控制块组织成一个队列,这个队列称为后备队列。一个作业全部信息进入系统后,就为其建立作业控制块,并挂入后备队列。当进行作业调度时,从后备队列中查找选择作业。在从后备队列中查找选择作业是,先根据作业控制块中的信息,选中一个短作业,也就是执行时间最短的作业,将它们调入存运行。关键词 :作业; 调度; 短作业优先; SJF; JCBAbstractBatch job scheduling problem is to enter the system according to the

3、user, the job control block of information, according to certain strategy selection several assignments that they can go to obtain a processor runs. For each user is always hope their job cycle time is the smallest, short j (SJF) which is the preferred method of a kind of scheduling.This design is t

4、o deepen the understanding of the concept of job assignments, short job first (SJF) algorithm is, in-depth understanding of how the system of batch management and organization, scheduling, understand the job assignments, as well as the job control blocks of content and organization.In order to organ

5、ize the assignment system for everyone to enter the system to establish archives of job assignments and related information recorded, for example, job assignments, resources, work into execution time of time, information system in memory of job assignments, pointing to a position job control block e

6、tc. The record of the information data block job assignments job control blocks (called), and the system JCB waiting in the job assignments scheduling job control block into a queue, the queue as backup queue. A full information into a system for its establishment, operation job control block, and h

7、ung the backup queue. When scheduling problem, from the backlog queue for choice.From the backlog queue for job first choice, according to the information and job control block a short assignment, and select the shortest time is executed, they would run into memory.Keywords :Job;Scheduling;Short job

8、 first; SJF;JCB第一章 课题概述.11.1 设计背景.11.2 目的与要求.11.3 基本理论依据.1第二章 设计简介与设计方案论述. 22.1 设计简介 .22.2 设计容.2第三章 详细设计. 33.1 设计流程图 .33.2 主要程序代码 .4第四章 设计结果与分析. 74.1 运行结果截图 . 74.2 运行结果分析 . 8总 结. 9致 .10参考文献.11附录 程序代码.12第一章课题概述1.1设计背景在多道程序环境下,主存中有着多个进程,其数目往往多于处理机数目。这就要求系统能按某种算法,动态地把处理机分配给就绪队列中的一个进程,使之执行。分配处理机的任务是由处理机

9、调度程序完成的。由于处理机是最重要的计算机资源,提高处理机的利用率与改善系统性能(吞吐量、响应时间),在很大程度上取决于处理机调度性能的好坏,因而,处理机调度便成为操作系统设计的中心问题之一。在多道程序系统中,一个作业被提交后必须经过处理机调度后,方能获得处理机执行。对于批量型作业而言,通常需要经历作业调度和进程调度两个过程后方能获得处理机。本次设计就是模拟作业调度和短作业优先的设计。1.2目的与要求1.2.1目的加深对作业概念的理解;深入了解批处理系统如何组织作业、管理作业和调度作业;1.2.2设计要求1.加深对作业概念地理解。2.掌握短作业优先调度算法。3.深入了解批处理系统如何组织作业、

10、管理作业和调度作业。4.了解作业控制块的作用,以与作业控制块的容和组织方式。1.3基本理论依据根据作业控制块中的信息,审查系统能否满足用户作业的资源需求,以与按照一定的算法,从外存的后备队列中选取某些作业调入存,并为它们创建进程、分配必要的资源。短作业优先调度算法,从后备队列中选择一个或若干个估计运行时间最短的作业,将它们调入存运行。第二章设计简介与设计方案论述2.1 设计简介在多道程序环境下,将系统中的作业组织起来,为每个进入系统的作业建立档案以记录和作业相关的信息,按要求输入作业名、到达时间和服务时间,并为其建立作业控制块(JCB)挂入后备队列。进行作业调度时,在其后计算出各个作业的开始执

11、行时间、完成时间、周转时间和平均周转时间,利用短作业优先算法进行作业调度,并按照由小到大的顺序显示出来。2.2 设计容编写程序完成批处理系统中的作业调度,要求采用短作业优先的作业调度算法。实验具体包括:首先确定作业控制块的容,作业控制块的组成方式;然后完成作业调度;最后编写主函数对所作工作进程测试。2.2.1 创建JCB作业控制块创建作业控制块JCB,定义为结构体,为进入系统的作业建立档案,其中定义了作业名,作业到达时间,作业服务时间,作业开始执行时间,作业完成时间,作业周转时间,作业平均周转时间。2.2.2 控制显示信息输出文字提醒用户操作步骤;设定输入数据的格式与数量;运行完程序后显示输出

12、实验结果。2.2.3 实现短作业优先选择首先按各个作业完成时间由小到大排序。再用输入的到达时间与服务时间按一定算法算出各个作业的开始执行时间、完成时间、周转时间和作业平均周转时间。第三章详细设计3.1 设计流程图 是 否 否 是图3-13.2 主要程序代码3.2.1采用数据结构定义作业控制块struct jcb char name10; /作业名 float arrivetime; /作业到达时间 float servicetime;/作业服务时间 float starttime; /作业开始执行时间 float finishtime; /作业完成时间 float zztime; /作业周转时

13、间 float avezztime; /作业平均周转时间;jcb调度算法void jcbf(jcb *p,int N)floatarrivetime=0,servicetime=0,starttime=0,finishtime=0,zztime=0,avezztime=0; sort(p,N); /以到达时间从小到大排序 for(int m=0;mN-1;m+) if(m=0) pm.finishtime=pm.arrivetime+pm.servicetime; else pm.finishtime=pm-1.finishtime+pm.servicetime; int i=0; for(i

14、nt n=m+1;n=N-1;n+) if(pn.arrivetime=pm.finishtime) /查找下标m+1以后的作业中:服务时间=pm.finishtime的作业个数 i+; float min=pm+1.servicetime; int next=m+1;/m+1=n for(int k=m+1;km+i;k+) /循环查找服务时间最小的作业 if(pk+1.servicetimeMAX) printf(t!输入的作业数目太大,请输入不大于%d的整数n,MAX); printf(按Q或者q退出程序,按其他任意键继续测试.); ch = getch(); if(ch=Q|ch=q)

15、 break; else continue; input(a,N); jcb *b=a; jcbf(b,N); printf(按Q或者q退出程序,按其他任意键继续测试.); ch = getch(); if(ch=Q|ch=q) break; return 0;第四章设计结果与分析4.1 运行结果截图4.1.1 初始化界面图4-1 初始化4.1.2 输入要调度的作业数目图4-2 输入作业数目4.1.3 输入作业名、到达时间、服务时间图4-3 输入各作业信息4.1.4 运行出的结果图4-4 运行结果4.2运行结果分析调度顺序为:A-D-B-E-C运行结果如表所示:Name作业名Arrive到达时

16、间Service服务时间Start开始时间Finish完成时间Zz周转时间Avezz平均周转时间A0.004.000.004.004.001.00D3.002.004.006.003.001.50B1.003.006.009.008.002.67E4.004.009.0013.009.002.25C2.005.0013.0018.0016.003.20表4-2 结果分析可知:短作业优先法先由到达时间排序,执行作业,然后对后来进入系统的作业和系统中等待执行的作业进行计算、比较,以服务时间有小到大排序,并按此顺序进行调度。总 结课程设计是培养学生综合运用所学知识,发现、提出、分析和解决实际问题,锻

17、炼实践能力的重要环节,是对我们的实际工作能力的具体训练和考察过程。我做的是作业调度模拟,一开始拿到题目时,实在不知道操作系统和c+如何联系在一起,经过翻阅资料、网上查询、讨论,最后终于完成了本次课程设计。短作业优先调度算法易于实现,并且效率很高,但是短作业只考虑到短作业的利益,而不顾长作业,这样就可能会使得长作业一直处于等待状态而不能运行。所以,短作业优先算法适用于系统中短作业较多的情况。通过这次课程设计,我对操作系统中的作业调度模拟和短作业优先算法有了更深的认识。并且发现,只看课本上的知识远远不够,只一味学习也根本没用,必须要动手亲自实践,才能真正掌握所学的东西。致 本次课程设计能顺利完成,

18、是在老师的精心指导和同学的互相帮助下完成的,无论从学习上还是实践上都使我受益匪浅。感院系为我们提供实练的机会,感老师的细心指导,也感组员们的互相帮助互相探讨。在本次设计中,自己动手,亲身经历了从学习、探讨、编写、调试的过程。不仅使对书本上的知识点和理论有了更深一层的了解,使我学会如何利用所学知识,把理论结合于实践,更重要的是让我发散思路,提高实践动手能力。此次的课程设计收获很多,虽然过程磕磕绊绊,但是最终还是完成了。但是,单单完成还远远不够,还有许许多多的问题,自己仍然不懂,是在老师、同学的帮助下完成的,在这里再次对他们的帮助表示衷心的感。参考文献1 汤小丹 梁红兵 哲凤屏等计算机操作系统(第

19、三版)M电子科技大学,2007年出版91-95页2任爱华 鹏 方毅 编著. 操作系统实验指导M . 清华大学,2004年出版.134-157页.3吕凤翥 编著.C+语言基础教程M.清华大学,2007年出版.4 谭浩强著.C程序设计(第三版)M .清华大学,2005年出版.附录 程序代码#include#include#include#define MAX 100 /最多能管理的作业数目struct jcb /作业控制块JCB,定义为结构体char name10; /作业名 float arrivetime; /作业到达时间 float servicetime;/作业服务时间 float sta

20、rttime; /作业开始执行时间 float finishtime; /作业完成时间 float zztime; /作业周转时间 float avezztime; /作业平均周转时间;jcb aMAX; void input(jcb *p,int N) int i; printf(请分别输入:nt作业名,到达时间,服务时间(如:JOB1 5 10)nn); for(i=0;i=N-1;i+) printf(请输入第%d个作业信息:,i+1); scanf(%s%f%f,&pi.name,&pi.arrivetime,&pi.servicetime); printf(n); void Prin

21、t(jcb *p,float arrivetime,float servicetime,float starttime,float finishtime,float zztime,float avezztime,int N) int k; printf(调度顺序:); printf(%s,p0.name); for(k=1;k%s,pk.name); printf(nn); printf(ttt作业信息:n); printf(nnametarrivetservicetstarttfinishtzztavezzn); for(k=0;k=N-1;k+) printf(%st%-.2ft%-.2f

22、t%-.2ft%-.2ft%-.2ft%-.2ftn,pk.name,pk.arrivetime,pk.servicetime,pk.starttime,pk.finishtime,pk.zztime,pk.avezztime); void sort(jcb *p,int N) for(int i=0;i=N-1;i+) for(int j=0;j=i;j+) if(pi.arrivetimepj.arrivetime) jcb temp; temp=pi; pi=pj; pj=temp; void deal(jcb *p, float arrivetime,float servicetime

23、,float starttime,float finishtime,float &zztime,float &avezztime,int N) int k; for(k=0;k=N-1;k+) if(k=0) pk.starttime=pk.arrivetime; pk.finishtime=pk.arrivetime+pk.servicetime; else pk.starttime=pk-1.finishtime; pk.finishtime=pk-1.finishtime+pk.servicetime; for(k=0;k=N-1;k+) pk.zztime=pk.finishtime-

24、pk.arrivetime; pk.avezztime=pk.zztime/pk.servicetime; void jcbf(jcb *p,int N) float arrivetime=0,servicetime=0,starttime=0,finishtime=0,zztime=0,avezztime=0;sort(p,N); for(int m=0;mN-1;m+) if(m=0) pm.finishtime=pm.arrivetime+pm.servicetime; else pm.finishtime=pm-1.finishtime+pm.servicetime; int i=0;

25、 for(int n=m+1;n=N-1;n+) if(pn.arrivetime=pm.finishtime) i+; float min=pm+1.servicetime; int next=m+1;/m+1=n for(int k=m+1;km+i;k+) if(pk+1.servicetimeMAX) printf(t!输入的作业数目太大,请输入不大于%d的整数n,MAX); printf(按Q或者q退出程序,按其他任意键继续测试.); ch = getch(); if(ch=Q|ch=q) break; else continue; input(a,N); jcb *b=a; jcbf(b,N); printf(按Q或者q退出程序,按其他任意键继续测试.); ch = getch(); if(ch=Q|ch=q) break; return 0;

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2