操作系统课程设计进程调度模拟设计_第1页
操作系统课程设计进程调度模拟设计_第2页
操作系统课程设计进程调度模拟设计_第3页
操作系统课程设计进程调度模拟设计_第4页
操作系统课程设计进程调度模拟设计_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、武汉理工大学操作系统课程设计说明书课程设计任务书 题 目: 进程调度模拟设计先来先服务、非强占式短进程优先算法 初始条件:1预备内容:阅读操作系统的处理机管理章节内容,对进程调度的功能以及进程调度算法有深入的理解。2实践准备:掌握一种计算机高级语言的使用。要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1模拟进程调度,能够处理以下的情形: 能够选择不同的调度算法(要求中给出的调度算法); 能够输入进程的基本信息,如进程名、到达时间和运行时间等; 根据选择的调度算法显示进程调度队列; 根据选择的调度算法计算平均周转时间和平均带权周转时间。2设计报告内容应说明:

2、课程设计目的与功能; 需求分析,数据结构或模块说明(功能与框图); 源程序的主要部分; 测试用例,运行结果与运行情况分析; 自我评价与总结:i)你认为你完成的设计哪些地方做得比较好或比较出色;ii)什么地方做得不太好,以后如何改正;iii)从本设计得到的收获(在编写,调试,执行过程中的经验和教训);iv)完成本题是否有其他方法(如果有,简要说明该方法);v)对实验题的评价和改进意见,请你推荐设计题目。时间安排:设计安排一周:周1、周2:完成程序分析及设计。周2、周3:完成程序调试及测试。周4、周5:验收、撰写课程设计报告。(注意事项:严禁抄袭,一旦发现,抄与被抄的一律按0分记)指导教师签名:

3、年 月 日系主任(或责任教师)签名: 年 月 日目录课程设计目的与功能3实验目的3开发平台3需求分析,数据结构或模块说明3 问题描述.3 实验要求.3 功能描述.4程序框图.5源程序的主要部分6 结构体的创建.6 主函数.6 sjf调度算法的函数7 fcfs调度算法的函数.9测试用例,运行结果与运行情况分析10自我评价与总结11实验优点11实验不足11收货与体会12实验改进方面12参考文献12进程调度模拟设计先来先服务、非强占式短进程优先算法一、课程设计目的与功能1实验目的模拟进程调度,能够处理以下的情形: 能够选择不同的调度算法(要求中给出的调度算法); 能够输入进程的基本信息,如进程名、到

4、达时间和运行时间等; 根据选择的调度算法显示进程调度队列; 根据选择的调度算法计算平均周转时间和平均带权周转时间。2开发平台visual c+ 6.0、windows xp二、需求分析,数据结构或模块说明1.问题描述:设计程序模拟进程的先来先服务fcfs和短作业优先sjf调度过程。假设有n个进程分别在t1, ,tn时刻到达系统,它们需要的服务时间分别为s1, ,sn。分别采用先来先服务fcfs和短作业优先sjf进程调度算法进行调度,计算每个进程的完成时间,周转时间和带权周转时间,并且统计n个进程的平均周转时间和平均带权周转时间。2.实验要求:1)进程个数n;每个进程的到达时间t1, ,tn和服

5、务时间s1, ,sn;选择算法1-fcfs,2-sjf。2)要求采用先来先服务fcfs和短作业优先sjf分别调度进程运行,计算每个进程的周转时间,带权周转时间,并且计算所有进程的平均周转时间,带权平均周转时间;3)输出:要求模拟整个调度过程,输出每个时刻的进程运行状态,如“时刻3:进程b开始运行”等等;4)输出:要求输出计算出来的每个进程的周转时间,带权周转时间,所有进程的平均周转时间,带权平均周转时间。3.功能描述1)先来先服务(fcfs)调度算法 将用户作业和就绪进程按提交顺序或变为就绪状态的先后排成队列,并按照先来先服务的方式进行调度处理,是一种最普遍和最简单的方法。在没有特殊理由要优先

6、调度某类作业或进程时,从处理的角度来看,fcfs方式是一种最合适的方法,因为无论是追加还是取出一个队列元素在操作上都是最简单的。先来先服务(fcfs)调度算法直观看,该算法在一般意义下是公平的。即每个作业或进程都按照它们在队列中等待时间长短来决定它们是否有限享受服务。先来先服务(fcfs)调度算法不过对于那些执行时间较短的作业或进程来说,如果它们在某些执行时间很长的作业或进程之后到达,则它们将等待很长时间。 在实际操作系统中,尽管很少单独使用fcfs算法,但和其他一些算法配合起来,fcfs算法还是使用的相当多的。例如基于优先级的调度算法就是对具有同样优先级的作业或进程采用的fcfs方式。2)最

7、短作业优先法(sjf) 在批处理为主的系统中,如果采用fcfs的方式进程作业调度,虽然系统开销小,算法简单,但是,如果估计执行时间很多的作业实在那些长作业的后面到达系统的话,则必须等待长作业执行完成之后才有机会获得执行。这就造成不必要的等待和某种不公平。最短作业优先发(sjf)就是选择那些估计需要执行时间最短的作业投入执行,为他们创建进程和分配资源。最短作业优先法优势:直观上说,采用最短作业有限的调度方法,可使得系统在同一时间内处理的作业个数最多,从而吞吐量也就大于其他的调度方式。但是,对于一个不断有作业进入的批处理系统来说。最短作业优先法缺点:最短作业优先法有可能使得那些长作业永远得不到调度

8、执行的机会。4.程序框图预定义fcfs调度方法sjf调度方法主函数输出注释:预定义:包括程序结构体等,程序结构体设计到后面函数所用的作业号、提交时间、运行时间、开始时间、结束时间、周转时间、带权周转时间、执行顺序等内容fcfs调度方法:程序重要的组成函数,将输入的n个程序结构体用链表的方式重新排序,按照函数给定的计算方法,列出作业从新计算过的作业号、提交时间、运行时间、开始时间、结束时间、周转时间、带权周转时间、执行顺序等内容sjf调度方法:采用最短优先法,将输入的n个程序结构体用链表的方式重新排序,列出作业从新计算过的作业号、提交时间、运行时间、开始时间、结束时间、周转时间、带权周转时间、执

9、行顺序等内容主函数:先进行输入操作,将输入的pro结构体存储起来,再调用两个算法函数,将fcfs调度方法所列出的作业结构体和sjf调度方法所列出的结构体整合表示出来,最后方便输出。三、源程序的主要部分1、结构体的创建struct prodouble handtime;double asktime;double starttime;double endtime;double usetime;double right;int runorder;int num;pro *next;2、主函数 int main()pro p20;coutpronum;cout按时间先后顺序输入进程的提交时间和运行时间

10、endl;for(int i=0;ipronum;i+)pi.num=i+1; cout第i+1pi.handtimepi.asktime;while(pi.handtimepi-1.handtime)cout请从新输入第i+1pi.handtimepi.asktime; fcfs(p,pronum); sjf(p,pronum); return 0; /couthandtime asktimeendl;3、sjf调度算法的函数void sjf(pro p,int n)int i,order=1;pro *now=&p0;pro *temp,*nextrun;p0.starttime=p0.h

11、andtime;p0.endtime=p0.handtime+p0.asktime;p0.usetime=p0.asktime;p0.right=1.0;p0.runorder=order;+order;for(i=0;in-1;i+)pi.next=&pi+1;/coutnext-numendl;pn-1.next=null;/*while(now!=null)coutnumthandtimenext;*/while(now-next!=null)nextrun=now-next;/couthandtimetasktimeasdfafdsahandtime=now-endtime)nextr

12、un-starttime=nextrun-handtime; elseif(nextrun-next!=null)temp=nextrun-next; while(temp-handtimeendtime) /用来确定nextrun是否改变 if(temp-asktimeasktime)nextrun=temp; if(temp-next!=null)temp=temp-next;else break; nextrun-starttime=now-endtime; /确定nextrun完毕 if(nextrun!=now-next)temp=now; /修改链表while(temp-next!

13、=nextrun)temp=temp-next;temp-next=nextrun-next;temp=now-next; now-next=nextrun;nextrun-next=temp; /链表修改完毕 nextrun-endtime=nextrun-starttime+nextrun-asktime;nextrun-usetime=nextrun-endtime-nextrun-handtime;nextrun-right=nextrun-usetime/nextrun-asktime;nextrun-runorder=order;+order; /进程信息修改完毕 now=next

14、run;double sumtime=0,sumright=0;coutsjfendl;cout作业号t提交t运行t开始t结束t周转t带权t执行endl;for(i=0;in;i+)sumtime+=pi.usetime;sumright+=pi.right;coutpi.numtpi.handtimetpi.asktimetpi.starttimetpi.endtimetpi.usetimetpi.righttpi.runorderendl;cout平均tttttsumtime/ntsumright/nendl;4、fcfs调度算法的函数void fcfs(pro p,int n)int i

15、;p0.starttime=p0.handtime;p0.endtime=p0.handtime+p0.asktime;p0.usetime=p0.asktime;p0.right=1.0;p0.runorder=1;for(i=1;in;i+)if(pi.handtimepi-1.endtime) pi.starttime=pi-1.endtime;elsepi.starttime=pi.handtime;pi.endtime=pi.starttime+pi.asktime;pi.usetime=pi.endtime-pi.handtime;pi.right=pi.usetime/pi.as

16、ktime;pi.runorder=i+1;double sumtime=0,sumright=0;coutfcfsendl;cout作业号t提交t运行t开始t结束t周转t带权t执行endl;for(i=0;in;i+)sumtime+=pi.usetime;sumright+=pi.right;coutpi.numtpi.handtimetpi.asktimetpi.starttimetp i.endtimetpi.usetimetpi.righttpi.runorderendl;cout平均tttttsumtime/ntsumright/nendlendl;四、测试用例,运行结果与运行情况

17、分析(图1:运行3个进程数的情况下程序结果)(图2:运行5个进程数的情况下程序结果)(图3:提交时间错误的情况下,程序自动纠正的运行结果)五、自我评价与总结1. 实验优点我认为我的实验重在进程调度的算法,使用到最常用的fcfs调度算法和sjf最短作业优先法,在程序编辑上,程序比较简明,使观看者能一眼分析出整个程序的脉络和构架,方便阅读。在程序结果显示上,也非常简明扼要,通过输入作业的提交时间和运行时间,可以用fcfs调度算法和sjf最短作业优先法分辨显示出,开始时间,结束时间,周转时间和带权周转时间,和执行次序。平均周转时间和平均带权周转时间,整体看上去符合课程设计题目要求,又非常详细。2.

18、实验不足我认为还有不足,在于如果第一个作业和第二个作业同时提交,无论二者所用的时间如何,都是先完成第一个作业,默认第一个作业先运行,对于后面的作业才会比较运行时间和提交时间,这在程序设计上出现了逻辑问题,虽然不影响使用,但是这还是算是美中不足,是在sjf函数的时间运算比较中出现问题,在链表的表头以后应该要改正。3. 收货与体会本次课程设计可以说是对操作系统课程本学期所学内容的一次综合应用,虽然称不上一个完整的操作系统进程调度程序,但已经展现了一个完整作业调度的雏形。通过本次课程设计,不仅进一步熟悉了操作系统所涉及的各方面知识,更掌握了一个进程调度的整体架构方式以及作业调度构造的整体流程。并且,从中认识到,进程调度模块化(先来先服务、轮转法、优先级法、最短作业优先法、最高响应比优先法)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论