版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、题目:通用处理器调度演示实验专业:软件工程班级:软件3班、软件4班姓名:朱文吉吉、黄强学号:201426010306、201426010421设计时间:2017/6/26-2017/7/7一、课程设计目的操作系统课程设计是软件工程专业的主要实践性教学环节。在进行了专业基础课和操作系统课程的学习基础上,设计或分析一个实际的操作系统旨在加深对计算机硬件结构和系统软件的认识,初步掌握操作系统组成模块和应用接口的使用方法,提高进行工程设计和系统分析的能力,为毕业设计和以后的工程实践打下良好的基础。二、课程设计内容与要求2.1 设计目的在多道程序和多任务系统中,系统内同时处于就绪状态的进程可能有若干个,
2、也就是能运行的进程数大于处理机个数,为了使系统中的进程有条不紊地工作,必须选用某种调度策略,在一定的时机选择一个进程占有处理机。要求学生设计一个模拟处理机调度算法,以巩固和加深处理机调度的概念。2.2 设计要求(多道、单处理机)1)进程调度算法包括:时间片轮转算法、先来先服务算法、短作业优先算法、静态优先权优先调度算法、高响应比调度算法。2)每一个进程有一个PCB,其内容可以根据具体情况设定。3)进程数、进入内存时间、要求服务时间、作业大小、优先级等均可以在界面上设定。4)可读取样例数据(要求存放在外部文件中)进行进程数、进入内存时间、时间片长度、作业大小、进程优先级的初始化。5)可以在运行中
3、显示各进程的状态:就绪、执行(由于不要求设置互斥资源与进程间同步关系,故只有两种状态)。6)采用可视化界面,可在进程调度过程中随时暂停调度,查看当前进程的状态以及相应的阻塞队列。7)有能比较的功能,可比较同一组数据在不同调度算法下的平均周转时间。8)具有一定的数据容错性。三、功能模拟系统分析与设计3.1 系统分析本课程设计的目的就是模拟一种通用处理器的五种调度算法来实现进程调度的过程,加深对进程调度的理解,输出采用采用可视化界面,可在进程调度过程中随时暂停调度,查看当前进程的状态以及相应的阻塞队列,进程控制块(PCB)是这个程序设计的核心,PCB包含了到达时间,运行时间,优先级等关键数据,要求
4、可以用五种调度算法演示,我们可以用策略模式把五个算法打包通过一个接口连接CPU,实现算法和CPU的分离,算法有5五种,分别实现不同的调度演示(时间片轮转算法、先来先服务算法、短作业优先算法、静态优先权优先调度算法、高响应比调度算法)我们采用MVC(模型-视图-控制器)的设计方法,输入方式的采用界面直接输入和文件读取输入两种方法,视图主要展示进程的进程名、到达时间、运行时间、优先级、时间片、响应时间、结束时间、周转时间,表示方法我们采用Jav豳形界面输出,动态演示调度算法的实现过程,以加深对操作系统进程调度的理解。3.2 系统设计3.2.1 设计思想就先教心地场修整区一指示同孑优雷迸程的战瓯
5、39;其他工EbJ送货化翱库的苍耳丙容图3-1进程控制块(PCB)1、每个进程有一个进程控制块(PCB)表示。进程控制块可以包含如下信息:进程名、优先级数、到达时间、需要运行时间等等。2、进程的信息,包括到达时间,优先数及需要的运行时间等都是事先人为地指定。3、每个进程的状态可以是就绪W(Wait)运行R(Run)、或完成F(Finish)三种状态之一。3.2.2 算法分析(一)先来先服务调度算法FCFS:FirstComeFirstServe总是把当前处于就绪队列之首的那个进程调度到运行状态。也就说,它只考虑进程进入就绪队列的先后,而不考虑它的下一个CPU周期的长短及其他因素。FCFS算法简
6、单易行,但性能却不大好。(二)最短短作业(进程)优先调度算法SJF:ShortestJobFirst。称为“短进程优先"SPN(ShortestProcessNext);这是对FCFS算法的改进,其目标是减少平均周转时间。(三)高优先权优先调度算法HPF:HighestPriorityFirst。多级队列算法的改进,平衡各进程对响应时间的要求。适用于作业调度和进程调度,可分成抢先式和非抢先式。(四)最高响应比优先调度算法HRN:HighestResponseRatioNext最高响应比优先法(HRN,HighestResponse_ratioNex耻对FCFS方式和SJF方式的一种综
7、合平衡。FCFS方式只考虑每个作业的等待时间而未考虑执行时间的长短,而SJF方式只考虑执行时间而未考虑等待时间的长短。因此,这两种调度算法在某些极端情况下会带来某些不便。HRN调度策略同时考虑每个作业的等待时间长短和估计需要的执行时间长短,从中选出响应比最高的作业投入执行。(五)基于时间片的轮调度算法(RR)。将系统中所有的就绪进程按照FCFS原则,排成一个队列。每次调度时将CPU分派给队首进程,让其执行一个时间片。时间片的长度从几个ms到几百ms。在一个时间片结束时,发生时钟中断。调度程序据此暂停当前进程的执行,将其送到就绪队列的末尾,并通过上下文切换执行当前的队首进程。进程可以未使用完一个
8、时问片,就出让CPU(如阻塞)。3.2.3 模块设计1)输入模块能够满足输入进程基本信息的功能,尽可能提供友好的交互界面。给用户很好的提示,使用户能够方便的操作。可读取样例数据(要求存放在外部文件中)进行进程数、进入内存时间、时间片长度、作业大小、进程优先级的初始化。2)算法模块可以根据需求选择五种算法中的一种运行:(一)先来先服务调度算法FCFS:FirstComeFirstServa1 .基本思想:按作业(进程)到达时间先后顺序依次使用CPU。2 .适用于作业/进程调度。3 .非抢占调度方式。4 .优缺点。优点:实现简单。缺点:未考虑进程的优先级或紧急性,不利于短作业(进程)的运行,利于C
9、PU繁忙型作业,而不利于I/O繁忙型作业。很少单独使用,常与其他算法结合使用(辅助算法)。(二)短作业(进程)优先调度算法SJF:ShortestJobFirst1 .基本思想:选择就绪(后备)队列中估计运行时间最短的进程(作业)投入运行。2 .适用于作业/进程调度。3 .非抢占调度方式一一最短剩余时间优先算法或抢占调度方式。4 .优缺点。优点:有效缩短作业的平均周转时间,从而提高系统吞吐量。缺点:不利于长作业和紧迫作业的运行(无法满足公平性,估计有主观性)(三)高优先权优先调度算法HPF:HighestPriorityFirst。引入:为照顾紧迫型作业优先处理,急事急办”,重要事先办”。1
10、.基本思想:选择优先级最高的进程或作业投入运行。2 .适用于作业/进程调度。3 .调度方式。非抢占调度方式一一批处理系统:等你打完我再打”。抢占调度方式一一实时系统:不等你打完电话,抢过话筒就打4 .优先权(优先级):即优先数,是由系统或用户按某种原则指定的,一般用整数表示。(1)静态优先权幺定终身”是在创建进程/作业时确定的,且在整个运行期间保持不变。优先级的确定依据:用户要求、进程/作业类型、对资源的要求不同系统有不同的确定原则,及表求方法。优点:简单易行,系统开销小。缺点:不够精确,可能出现某些低优先级的进程永不能被执行。(2)动态优先权是在创建进程/作业时赋予的优先级,可随着进程的推进
11、而改变。决定/动态改变因素:等待时间、已使用处理机的时间、其他资源的使用情况等。特点:可防止低优先级的进程/作业长时间得不到调度。(四)最高响应比优先调度算法HRN:HighestResponseRatioNext引入:实际上是一种动态优先权调度算法。1 .响应比R=响应时间/要求服务时间=(等待时间+运行时间)/运行时间=1+(等待时间/运行时间)2 .基本思想:同时兼顾每个作业等待时间和运行时间两方面因素,选择响应比最高的作业/进程投入运行。3,优缺点。优点:利于短作业,利于长作业。缺点:系统开销大。(五)基于时间片的轮调度算法(RR)1 .基本思想:轮转法(RoundRobin)是让每个
12、进程在就绪队列中的等待时间与享受服务的时间成正比例。2 .时间片大小的确定:固定时间片可变时间片系统响应时间正比就绪进程个数反比CPU能力进程切换时间q时间片t则q/t不大于某个值3 .时间片t大小的选择影响:太大,M>FCFS;太小,则系统开销增大(频繁切换)。t=R/NmaxR为响应时间,Nmax允许的最大就绪数。3)输出模块根据选择的调度算法输出进程的响应时间,结束时间,周转时间,平均周转时问,采用可视化界面,可在进程调度过程中随时暂停调度,查看当前进程的状态以及相应的阻塞队列。3.2.4 数据结构说明ADT说明:ADTADT-Name(Data:/数据说明数据元素之间逻辑关系的描
13、述Operations:/腴作说明Operationl:/臊作1,它通常可用C或C十十的函数原型来描述Input:对输入数据的说明Preconditions执行本操作前系统应满足的状态/可看作初始条件Process对数据执行的操作Output对返回数据的说明Postconditions执行本操作后系统的状态/"系统”可看作某个数据结构Operation2:/臊作2/ADT程序类图:图3-3程序类图3.2.5 算法流程图处理器调度程序活动图:在采用多道程序设计的系统中,往往有若干个进程同时处于就绪状态。当就绪状态进程个数大于处理器数时,就必须依照某种策略来决定哪些进程优先占用处理器。本
14、实验模拟在单处理器情况下处理器调度,帮助学生加深了解处理器调度的工作。图3-4处理器调度程序活动图1.先来先服务:调度算法(FCFS:FirstComeFirstServe'图3-5先到先服务算法活动图2 .短作业(进程)优先调度算法(SJF:ShortestJobFirst图3-6最短作业优先算法活动图3 .高优先权优先调度算法(HPF:HighestPriorityFirst)图3-7优先调度算法活动图4.最高响应比优先调度算法(HRN:HighestResponseRatioNext图3-8最高响应比调度算法活动图5.基于时间片的轮调度算法(RR)。图3-9时间片轮转法算法活动图
15、四、系统测试与调试分析4.1 系统测试4.1.1 输入模块(1)实现在界面上直接手动输入。(2)实现在文件中直接读取。4.1.2 算法模块实现可以在界面上选择需要的算法(时间片轮转算法、先来先服务算法、短作业优先算法、静态优先权优先调度算法、高响应比调度算法)运行。4.1.3 输出模块可以根据选择的算法,得到正确的输出结果4.2 测试用例表4-1测试用例表进程名到达时间运行时间优先级时间片P11°553P21113P31433P4I?333P542234.3 测试结果4.3.1 先到先服务算法图4-1先到先服务算法测试结果4.3.2 最短作业优先算法图4-2最短作业优先算法测试结果4
16、.3.3静态优先级算法图4-3优先级算法测试结果4.3.4最高响应比算法图4-4最高响应比算法测试结果图4-5时间片轮转法测试结果4.4手动运算结果对比4.4.1 静态优先级P1p3p4p5p27101519204.4.2 先来先服务P1,p2p3p4p5078111620P14.4.3 最短作业优先p2p3p5.p4781115204.4.4 最高响应比4.4.5时间片算法P1p2p3P4plp5p4plp50347101316181920图4-6手动计算截图1图4-7手动计算截图24.5测试表4-2测试表测试说测试名称通用处理器调度演示实验测试目的验证程序对于模拟处理器调度算法的处理流程明
17、测试技术单元测试测试方法黑盒测试法测试内容读取数据-程序运行-输出结果测试用例测试步骤输入读取数据文件的路径名分别选择不同的调度算法运行输出结果测试数据src/data.txt时间片轮转算法、先来先服务算法、短作业优先算法、静态优先权优先调度算法、高响应比调度算法进程名行时间片P10到达时间运优先级时间753P21113P31343P42533P54423预期结果正常读入数据算法正常运行输出响应时间、结束时间、平均周转时间测试结果与预期相符与预期相符与预期相符4.6调试分析在我们组程序功能已经基本实现并且正常的情况之后,现在主要完成数据的测试,在测试过程中,主要针对老师给的数据,我先手动的分别
18、对五种算法算出答案,再分别读入程序运行,与手动算出的结果进行反复对比,在测试中我们发现了时间片轮转法的算法有点小小的问题,与预期的结果不符合,在进行了反复调试之后得到了正确的结果,程序正确。五、用户手册1.导入文件包.云二翼,:IL;',-7盛直t&fl?图4-8读入程序包2 .运行读入数据(手动输入或者文件读取)图4-9读入数据3 .选择调度算法点击Start开始运行,可以点击pause来暂停,点击甘特图可以查看进程甘特图逗程号递入内行时间当前优秀筑响应时间结算时间a1075.02plpl1.03FT34.04252.05442.06345.07563.0g2140g146.
19、010346.011321.0123450I时初总轮转Istartpaiisg11甘相肉时间竟:1时间片轮转先来光雕带运行就错三帝ri高响应比场理优先静叁优先镒图4-10算法选择4 .输出结果图4-11结果输出六、程序清单FCFS.javapackagelabl;importjava.util.Vector;publicclassFCFSextendsDispatchMethodOverridepublicPCBgetNext(Vector<PCB>q)/TODOAuto-generatedmethodstubPCBp;p=q.remove(0);elsep=null;return
20、p;)Overridepublicinthandle(PCBp,Vector<PCB>q)/TODOAuto-generatedmethodstubinttime=p.getServeTime();tryThreadsleep(time*1000);Systemout.println("sleepfor"+time);catch(InterruptedExceptione)/TODOAuto-generatedcatchblocke.printStackTrace();p.setTime(p.getEnterTime(),0,p.getPriority();re
21、turntime;SJF.javapackagelab1;importjava.util.Vector;publicclassSJFextendsDispatchMethodOverridepublicPCBgetNext(Vector<PCB>q)/TODOAuto-generatedmethodstubif(q.size()=0)returnnull;intmin=0;for(inti=0;i<q.size();i+)if(q.get(i).getServeTime()<q.get(min).getServeTime()min=i;PCBtemp=q.remove(
22、min);returntemp;Overridepublicinthandle(PCBp,Vector<PCB>q)/TODOAuto-generatedmethodstubinttime=p.getServeTime();tryThreadsleep(time*1000);catch(InterruptedExceptione)/TODOAuto-generatedcatchblocke.printStackTrace();p.setTime(p.getEnterTime(),0,p.getPriority();returntime;StaticPriority.javapack
23、agelabl;importjava.util.Vector;publicclasStaticPrioAtyextendsDispatchMethodOverridepublicPCBgetNext(Vector<PCB>q)/TODOAuto-generatedmethodstubPCBp;if(q.size()=0)p=null;elsWintmax=0;for(inti=0;i<q.size();i+)if(q.get(i).getPriority()>q.get(max).getPriority()max=i;)Systemout.println("m
24、ax:"+max);p=q.get(max);q.remove(max);)returnp;Overridepublicinthandle(PCBp,Vector<PCB>q)/TODOAuto-generatedmethodstubinttime=p.getServeTime();tryThreadsleep(time*1000);catch(InterruptedExceptione)/TODOAuto-generatedcatchblocke.printStackTrace();p.setTime(p.getEnterTime(),0,p.getPriority()
25、;returntime;HRRF.javapackagelab1;importjava.util.Vector;publicclassHRRFextendsDispatchMethodpublicvoidcalculate(Vector<PCB>q)for(inti=0;i<q.size();i+)PCBtemp=q.get(i);temp.setPriority(this.getTime()-temp.getEnterTime()+0.0)/temp.getServeTime()+1);Systemout.println("time:"+this.get
26、Time()+"calculatepriority:"+(double)(this.getTime()-temp.getEnterTime()+0.0)/temp.getServeTime()+1);temp.refresh();OverridepublicPCBgetNext(Vector<PCB>q)calculate(q);/TODOAuto-generatedmethodstubif(q.size()=0)returnnull;intmax=0;for(inti=0;i<q.size();i+)if(q.get(i).getPriority()&g
27、t;q.get(max).getPriority()max=i;PCBtemp=q.get(max);q.remove(max);returntemp;Overridepublicinthandle(PCBp,Vector<PCB>q)/TODOAuto-generatedmethodstubinttime=p.getServeTime();tryThreadsleep(time*1000);catch(InterruptedExceptione)/TODOAuto-generatedcatchblocke.printStackTrace();p.setTime(p.getEnte
28、rTime(),0,p.getPriority();returntime;Timeslicepackagelab1;importjava.util.Vector;publicclassTimeSliceextendsDispatchMethodintslice=1;publicTimeSlice()this.needConfig=true;voidsetSlice(intslice)this.slice=slice;OverridepublicPCBgetNext(Vector<PCB>q)/TODOAuto-generatedmethodstubPCBp;p=q.remove(0
29、);elsep=null;returnp;)publicvoidsetConfig(Objecto)this.slice=(MainUI)o).getSlice();)Overridepublicinthandle(PCBp,Vector<PCB>q)/TODOAuto-generatedmethodstubtryThread.sleep(slice);catch(InterruptedExceptione)/TODOAuto-generatedcatchblocke.printStackTrace();if(p.getServeTime()-slice>0)tryThrea
30、dsleep(slice*1000);catch(InterruptedExceptione)/TODOAuto-generatedcatchblocke.printStackTrace();p.setTime(p.getEnterTime(),p.getServeTime()slice,p.getPriority();q.addElement(p);returnslice;)elsWtry(Threadsleep(p.getServeTime()*1000);catch(InterruptedExceptione)/TODOAuto-generatedcatchblocke.printStackTrace();inttime=p.getServeTime();p.setTime(p.getEnterTime(),0,p.getPriority();returntime;七、体会与自我评价在这次课程设计中,黄强主要负责文档的编写,和讲解PPT的制作,包括前期的设计文档和PPT,后期的总结报告,还有就是系统的测试工作,朱文吉吉负责系统的设计和代码的实现部分,在深入地进行程序的设计和,编写工作,我对这个学期中学习的设计模式有了新的认识,在本次的程序设计当中,我们应用了MVCModelViewController(模型-视图-控制器
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版校车租赁借车安全协议书3篇
- 2025版交通事故后续理赔车辆维修协商合同样本3篇
- 混凝土课程设计感受
- 2025年卫浴柜类项目发展计划
- 文化交流课程设计
- 2025至2030年中国诺宁感冒片行业投资前景及策略咨询研究报告
- 2025年版石油管道搬运与施工协议3篇
- 成课程设计总结
- 2025版劳动合同补充协议:员工股权激励与分红计划3篇
- 2025年高效照明产品项目发展计划
- 2024-2030年中国机械密封行业市场运营现状及投资规划研究建议报告
- 食品快速检测实验室要求
- 劳动教育国内外研究现状综述
- 电能质量试题库
- 奥数试题(试题)-2023-2024学年四年级下册数学人教版
- 中学心理团辅活动方案
- 《昆虫记》感悟心得体会
- 2022-2023学年北京市东城区北京版六年级上册期末测试英语试卷【含答案】
- AQ∕T 7009-2013 机械制造企业安全生产标准化规范
- 人教版(2019)必修第三册Unit 4 Space Exploration 课文语法填空
- 《村镇建筑抗震技术规程》
评论
0/150
提交评论