操作系统通用处理器调度演示程序课程设计总结报告

上传人:一*** 文档编号:152327663 上传时间:2022-09-15 格式:DOC 页数:39 大小:928.83KB
收藏 版权申诉 举报 下载
操作系统通用处理器调度演示程序课程设计总结报告_第1页
第1页 / 共39页
操作系统通用处理器调度演示程序课程设计总结报告_第2页
第2页 / 共39页
操作系统通用处理器调度演示程序课程设计总结报告_第3页
第3页 / 共39页
资源描述:

《操作系统通用处理器调度演示程序课程设计总结报告》由会员分享,可在线阅读,更多相关《操作系统通用处理器调度演示程序课程设计总结报告(39页珍藏版)》请在装配图网上搜索。

1、湖南大学信息科学与工程学院操作系统课程设计总结报告题 目: 通用处理器调度演示实验专 业: 软件工程班 级: 软件3班、软件4班 姓 名: 朱文喆、黄强 学 号:201426010306、201426010421 设计时间: 2017/6/26-2017/7/7 一、课程设计目的 操作系统课程设计是软件工程专业的主要实践性教学环节。在进行了专业基础课和操作系统课程的学习基础上,设计或分析一个实际的操作系统旨在加深对计算机硬件结构和系统软件的认识,初步掌握操作系统组成模块和应用接口的使用方法,提高进行工程设计和系统分析的能力,为毕业设计和以后的工程实践打下良好的基础。二、课程设计内容与要求2.1

2、设计目的在多道程序和多任务系统中,系统内同时处于就绪状态的进程可能有若干个,也就是能运行的进程数大于处理机个数,为了使系统中的进程有条不紊地工作,必须选用某种调度策略,在一定的时机选择一个进程占有处理机。要求学生设计一个模拟处理机调度算法,以巩固和加深处理机调度的概念。2.2设计要求(多道、单处理机)1) 进程调度算法包括:时间片轮转算法、先来先服务算法、短作业优先算法、静态优先权优先调度算法、高响应比调度算法。2) 每一个进程有一个PCB,其内容可以根据具体情况设定。3) 进程数、进入内存时间、要求服务时间、作业大小、优先级等均可以在界面上设定。4) 可读取样例数据(要求存放在外部文件中)进

3、行进程数、进入内存时间、时间片长度、作业大小、进程优先级的初始化。5) 可以在运行中显示各进程的状态:就绪、执行(由于不要求设置互斥资源与进程间同步关系,故只有两种状态)。6) 采用可视化界面,可在进程调度过程中随时暂停调度,查看当前进程的状态以及相应的阻塞队列。7) 有能比较的功能,可比较同一组数据在不同调度算法下的平均周转时间。8) 具有一定的数据容错性。三、功能模拟系统分析与设计3.1系统分析 本课程设计的目的就是模拟一种通用处理器的五种调度算法来实现进程调度的过程,加深对进程调度的理解,输出采用采用可视化界面,可在进程调度过程中随时暂停调度,查看当前进程的状态以及相应的阻塞队列,进程控

4、制块(PCB)是这个程序设计的核心,PCB包含了到达时间,运行时间,优先级等关键数据,要求可以用五种调度算法演示,我们可以用策略模式把五个算法打包通过一个接口连接CPU,实现算法和CPU的分离,算法有5五种,分别实现不同的调度演示(时间片轮转算法、先来先服务算法、短作业优先算法、静态优先权优先调度算法、高响应比调度算法)我们采用MVC(模型-视图-控制器)的设计方法,输入方式的采用界面直接输入和文件读取输入两种方法,视图主要展示进程的进程名、到达时间、运行时间、优先级、时间片、响应时间、结束时间、周转时间,表示方法我们采用Java图形界面输出,动态演示调度算法的实现过程,以加深对操作系统进程调

5、度的理解。3.2系统设计3.2.1设计思想 图3-1 进程控制块(PCB)图3-2 进程状态图1、每个进程有一个进程控制块(PCB)表示。进程控制块可以包含如下信息:进程名、优先级数、到达时间、需要运行时间等等。 2、进程的信息,包括到达时间,优先数及需要的运行时间等都是事先人为地指定。 3、每个进程的状态可以是就绪 W(Wait)、运行R(Run)、或完成F(Finish)三种状态之一。3.2.2算法分析 (一) 先来先服务调度算法 FCFS:First Come First Serve。总是把当前处于就绪队列之首的那个进程调度到运行状态。也就说,它只考虑进程进入就绪队列的先后,而不考虑它的

6、下一个CPU周期的长短及其他因素。FCFS算法简单易行,但性能却不大好。(二) 最短短作业(进程)优先调度算法SJF:Shortest Job First。称为“短进程优先”SPN(Shortest Process Next);这是对FCFS算法的改进,其目标是减少平均周转时间。(三) 高优先权优先调度算法HPF:Highest Priority First。多级队列算法的改进,平衡各进程对响应时间的要求。适用于作业调度和进程调度,可分成抢先式和非抢先式。(四)最高响应比优先调度算法HRN:Highest Response Ratio Next。 最高响应比优先法(HRN,Highest Re

7、sponse_ratio Next)是对FCFS方式和SJF方式的一种综合平衡。FCFS方式只考虑每个作业的等待时间而未考虑执行时间的长短,而SJF方式只考虑执行时间而未考虑等待时间的长短。因此,这两种调度算法在某些极端情况下会带来某些不便。HRN调度策略同时考虑每个作业的等待时间长短和估计需要的执行时间长短,从中选出响应比最高的作业投入执行。(五)基于时间片的轮调度算法(RR)。将系统中所有的就绪进程按照FCFS原则,排成一个队列。每次调度时将CPU分派给队首进程,让其执行一个时间片。时间片的长度从几个ms到几百ms。在一个时间片结束时,发生时钟中断。调度程序据此暂停当前进程的执行,将其送到

8、就绪队列的末尾,并通过上下文切换执行当前的队首进程。进程可以未使用完一个时间片,就出让CPU(如阻塞)。3.2.3模块设计1)输入模块能够满足输入进程基本信息的功能,尽可能提供友好的交互界面。给用户很好的提示,使用户能够方便的操作。可读取样例数据(要求存放在外部文件中)进行进程数、进入内存时间、时间片长度、作业大小、进程优先级的初始化。2) 算法模块可以根据需求选择五种算法中的一种运行:(一)先来先服务调度算法 FCFS:First Come First Serve。1基本思想:按作业(进程)到达时间先后顺序依次使用CPU。2适用于作业/进程调度。3非抢占调度方式。4优缺点。优点:实现简单。缺

9、点:未考虑进程的优先级或紧急性,不利于短作业(进程)的运行,利于CPU繁忙型作业,而不利于I/O繁忙型作业。很少单独使用,常与其他算法结合使用(辅助算法)。(二)短作业(进程)优先调度算法SJF:Shortest Job First。1 基本思想:选择就绪(后备)队列中估计运行时间最短的进程(作业)投入运行。2适用于作业/进程调度。3非抢占调度方式最短剩余时间优先算法或 抢占调度方式。4优缺点。优点:有效缩短作业的平均周转时间,从而提高系统吞吐量。缺点:不利于长作业和紧迫作业的运行(无法满足公平性,估计有主观性)(三)高优先权优先调度算法HPF:Highest Priority First。

10、引入:为照顾紧迫型作业优先处理,“急事急办”,“重要事先办”。1基本思想:选择优先级最高的进程或作业投入运行。2适用于作业/进程调度。3调度方式。非抢占调度方式批处理系统:“等你打完我再打”。抢占调度方式实时系统:“不等你打完电话,抢过话筒就打”。4优先权(优先级):即优先数,是由系统或用户按某种原则指定的,一般用整数表示。(1) 静态优先权“一定终身”是在创建进程/作业时确定的,且在整个运行期间保持不变。优先级的确定依据:用户要求、进程/作业类型、对资源的要求不同系统有不同的确定原则,及表求方法。优点:简单易行,系统开销小。缺点:不够精确,可能出现某些低优先级的进程永不能被执行。(2)动态优

11、先权是在创建进程/作业时赋予的优先级,可随着进程的推进而改变。决定/动态改变因素:等待时间、已使用处理机的时间、其他资源的使用情况等。特点:可防止低优先级的进程/作业长时间得不到调度。(四)最高响应比优先调度算法HRN:Highest Response Ratio Next。 引入:实际上是一种动态优先权调度算法。1响应比R = 响应时间 / 要求服务时间 =(等待时间 + 运行时间)/ 运行时间 = 1 +(等待时间 / 运行时间)2基本思想:同时兼顾每个作业等待时间和运行时间两方面因素,选择响应比最高的作业/进程投入运行。3优缺点。优点:利于短作业,利于长作业。缺点:系统开销大。(五)基于

12、时间片的轮调度算法(RR)1基本思想:轮转法(Round Robin)是让每个进程在就绪队列中的等待时间与享受服务的时间成正比例。2时间片大小的确定:固定时间片 可变时间片系统响应时间 正比就绪进程个数 反比 CPU能力进程切换时间q时间片t 则q/t不大于某个值3时间片t大小的选择影响:太大,则FCFS;太小,则系统开销增大(频繁切换)。t = R / NmaxR为响应时间,Nmax允许的最大就绪数。 3)输出模块根据选择的调度算法输出进程的响应时间,结束时间,周转时间,平均周转时间,采用可视化界面,可在进程调度过程中随时暂停调度,查看当前进程的状态以及相应的阻塞队列。3.2.4数据结构说明

13、ADT说明:ADT ADT-Name Data:/数据说明数据元素之间逻辑关系的描述 Operations:/操作说明Operation1:/操作1,它通常可用C或C的函数原型来描述Input:对输入数据的说明Preconditions:执行本操作前系统应满足的状态/可看作初始条件Process:对数据执行的操作Output:对返回数据的说明Postconditions:执行本操作后系统的状态/系统可看作某个数据结构 Operation2:/操作2 /ADT程序类图:图3-3 程序类图3.2.5算法流程图处理器调度程序活动图:在采用多道程序设计的系统中,往往有若干个进程同时处于就绪状态。当就绪

14、状态进程个数大于处理器数时,就必须依照某种策略来决定哪些进程优先占用处理器。本实验模拟在单处理器情况下处理器调度,帮助学生加深了解处理器调度的工作。图3-4 处理器调度程序活动图1.先来先服务:调度算法 (FCFS:First Come First Serve)。 图3-5 先到先服务算法活动图2.短作业(进程)优先调度算法(SJF:Shortest Job First)。 图3-6 最短作业优先算法活动图3.高优先权优先调度算法(HPF:Highest Priority First)。 图3-7 优先调度算法活动图4.最高响应比优先调度算法(HRN:Highest Response Rati

15、o Next)。 图3-8 最高响应比调度算法活动图5.基于时间片的轮调度算法(RR)。 图3-9 时间片轮转法算法活动图四、系统测试与调试分析4.1 系统测试4.1.1输入模块(1)实现在界面上直接手动输入。(2)实现在文件中直接读取。4.1.2算法模块实现可以在界面上选择需要的算法(时间片轮转算法、先来先服务算法、短作业优先算法、静态优先权优先调度算法、高响应比调度算法)运行。4.1.3输出模块可以根据选择的算法,得到正确的输出结果。4.2测试用例 表4-1 测试用例表进程名到达时间运行时间优先级时间片P10553P21113P31433P42333P542234.3测试结果4.3.1先到

16、先服务算法图4-1 先到先服务算法测试结果4.3.2最短作业优先算法图4-2 最短作业优先算法测试结果4.3.3静态优先级算法图4-3 优先级算法测试结果4.3.4最高响应比算法图4-4 最高响应比算法测试结果4.3.5时间片轮转法图4-5 时间片轮转法测试结果4.4手动运算结果对比4.4.1静态优先级 P1 p3 p4 p5 p2 0 7 10 15 19 204.4.2先来先服务 P1 p2p3 p4 p5 0 7 8 11 16 204.4.3最短作业优先 P1 p2 p3 p5 p40 7 8 11 15 20 4.4.4最高响应比 P1 p2 p3 p4 p50 7 8 11 16

17、204.4.5时间片算法 P1 p2 p3 p4 p1 p5 p4 p1 p5 0 3 4 7 10 13 16 18 19 20 图4-6 手动计算截图1图4-7 手动计算截图24.5测试表4-2 测试表测试说明测试名称通用处理器调度演示实验 测试目的验证程序对于模拟处理器调度算法的处理流程测试技术单元测试测试方法黑盒测试法测试用例测试内容读取数据-程序运行-输出结果测试步骤输入读取数据文件的路径名分别选择不同的调度算法运行输出结果测试数据src/data.txt时间片轮转算法、先来先服务算法、短作业优先算法、静态优先权优先调度算法、高响应比调度算法进程名到达时间 运行时间 优先级 时间片P

18、10753P21113P31343P42533P54423预期结果正常读入数据算法正常运行输出响应时间、结束时间、平均周转时间测试结果与预期相符与预期相符与预期相符4.6 调试分析在我们组程序功能已经基本实现并且正常的情况之后,现在主要完成数据的测试,在测试过程中,主要针对老师给的数据,我先手动的分别对五种算法算出答案,再分别读入程序运行,与手动算出的结果进行反复对比,在测试中我们发现了时间片轮转法的算法有点小小的问题,与预期的结果不符合,在进行了反复调试之后得到了正确的结果,程序正确。 五、 用户手册1.导入文件包图4-8 读入程序包2.运行读入数据(手动输入或者文件读取)图4-9 读入数据

19、3.选择调度算法点击Start开始运行,可以点击pause来暂停,点击甘特图可以查看进程甘特图图4-10 算法选择4.输出结果图4-11 结果输出六、程序清单FCFS.javapackage lab1;import java.util.Vector;public class FCFS extends DispatchMethodOverridepublic PCB getNext(Vector q) / TODO Auto-generated method stubPCB p;if(q.size()0)p=q.remove(0);elsep=null;return p;Overridepubl

20、ic int handle(PCB p,Vector q) / TODO Auto-generated method stubint time=p.getServeTime();try Thread.sleep(time*1000);System.out.println(sleep for +time); catch (InterruptedException e) / TODO Auto-generated catch blocke.printStackTrace();p.setTime(p.getEnterTime(),0,p.getPriority();return time;SJF.j

21、avapackage lab1;import java.util.Vector;public class SJF extends DispatchMethodOverridepublic PCB getNext(Vector q) / TODO Auto-generated method stubif(q.size()=0)return null;int min=0;for(int i=0;iq.size();i+)if(q.get(i).getServeTime()q.get(min).getServeTime()min=i;PCB temp=q.remove(min);return tem

22、p;Overridepublic int handle(PCB p,Vector q) / TODO Auto-generated method stubint time=p.getServeTime();try Thread.sleep(time*1000); catch (InterruptedException e) / TODO Auto-generated catch blocke.printStackTrace();p.setTime(p.getEnterTime(),0,p.getPriority();return time;StaticPriority.javapackage

23、lab1;import java.util.Vector;public class StaticPriority extends DispatchMethodOverridepublic PCB getNext(Vector q) / TODO Auto-generated method stubPCB p;if(q.size()=0)p=null;elseint max=0;for(int i=0;iq.get(max).getPriority()max=i;System.out.println(max: +max);p=q.get(max);q.remove(max);return p;O

24、verridepublic int handle(PCB p,Vector q) / TODO Auto-generated method stubint time=p.getServeTime();try Thread.sleep(time*1000); catch (InterruptedException e) / TODO Auto-generated catch blocke.printStackTrace();p.setTime(p.getEnterTime(),0,p.getPriority();return time;HRRF.java package lab1;import

25、java.util.Vector;public class HRRF extends DispatchMethodpublic void calculate(Vector q)for(int i=0;iq.size();i+)PCB temp=q.get(i);temp.setPriority(this.getTime()-temp.getEnterTime()+0.0)/temp.getServeTime()+1);System.out.println(time: +this.getTime()+ calculate priority:+(double)(this.getTime()-tem

26、p.getEnterTime()+0.0)/temp.getServeTime()+1);temp.refresh();Overridepublic PCB getNext(Vector q) calculate(q);/ TODO Auto-generated method stubif(q.size()=0)return null;int max=0;for(int i=0;iq.get(max).getPriority()max=i;PCB temp=q.get(max);q.remove(max);return temp;Overridepublic int handle(PCB p,

27、Vector q) / TODO Auto-generated method stubint time=p.getServeTime();try Thread.sleep(time*1000); catch (InterruptedException e) / TODO Auto-generated catch blocke.printStackTrace();p.setTime(p.getEnterTime(),0,p.getPriority();return time;Timeslicepackage lab1;import java.util.Vector;public class Ti

28、meSlice extends DispatchMethodint slice=1;public TimeSlice()this.needConfig=true;void setSlice(int slice)this.slice=slice;Overridepublic PCB getNext(Vector q) / TODO Auto-generated method stubPCB p;if(q.size()0)p=q.remove(0);elsep=null;return p;public void setConfig(Object o)this.slice=(MainUI)o).ge

29、tSlice();Overridepublic int handle(PCB p,Vector q) / TODO Auto-generated method stubtry Thread.sleep(slice); catch (InterruptedException e) / TODO Auto-generated catch blocke.printStackTrace();if(p.getServeTime()-slice0)try Thread.sleep(slice*1000); catch (InterruptedException e) / TODO Auto-generat

30、ed catch blocke.printStackTrace();p.setTime(p.getEnterTime(), p.getServeTime()-slice,p.getPriority();q.addElement(p);return slice;elsetry Thread.sleep(p.getServeTime()*1000); catch (InterruptedException e) / TODO Auto-generated catch blocke.printStackTrace();int time=p.getServeTime();p.setTime(p.get

31、EnterTime(),0,p.getPriority();return time;七、体会与自我评价在这次课程设计中,黄强主要负责文档的编写,和讲解PPT的制作,包括前期的设计文档和PPT,后期的总结报告,还有就是系统的测试工作,朱文喆负责系统的设计和代码的实现部分,在深入地进行程序的设计和,编写工作,我对这个学期中学习的设计模式有了新的认识,在本次的程序设计当中,我们应用了MVC【Model View Controller】(模型-视图-控制器)的设计模式,实现逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻

32、辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式:Model(模型)表示应用程序核心(比如数据库记录列表)。View(视图)显示数据(数据库记录)。Controller(控制器)处理输入(写入数据库记录)。MVC 模式同时提供了对 HTML、CSS 和 JavaScript 的完全控制。Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。View(视图)是应用程序中处理数据显示的

33、部分。通常视图是依据模型数据创建的。Controller(控制器)是应用程序中处理用户交互的部分。通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。MVC 分层有助于管理复杂的应用程序,因为您可以在一个时间内专门关注一个方面。例如,您可以在不依赖业务逻辑的情况下专注于视图设计。同时也让应用程序的测试更加容易。MVC 分层同时也简化了分组开发。不同的开发人员可同时开发视图、控制器逻辑和业务逻辑。加深了对MVC设计模式的理解,对Java语言更加熟悉了,这是技术层面的事情,在文档编写方面我也学到了很多东西,比如如何让文档设计得更加正式,美观,对word的操作也更加熟练了。通过本次模拟CP

34、U调度算法,加深了我对操作系统的理解和认识,更加熟悉了调度算法和操作系统的功能结构,对以后深入学习计算机我相信会有很大的帮助。八、参考文献1(美)西尔伯查茨,(美)高尔文,(美)加根 著 译者:郑扣根Operating System Concepts Seventh, Edition操作系统概念第七版(中文版).高等教育出版社.2010(01).2 杭诚方,谈宏编.操作系统课程设计教程.上海交通大学出版社,2008.3(美)Bruce Eckel 著 译者:陈昊鹏 Thinking in Java Java编程思想.机械工业出版社.01-2006-3149.4严蔚敏 吴伟明 著.数据结构(C语言版).清华大学出版社.2007.5(美)Clifford A.Shaffer 著.张铭 刘晓丹 等译.数据结构与算法分析(C+班)(第二版).电子工业出版社.2012-2(3).

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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