付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、题目:通用处理器调度演示实验专业:软件工程班级:软件3班、软件4班姓名:朱文吉吉、黄强学号:202126010306、202126010421设计时间:2021/6/26-2021/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 设计思想就先教心地场修整区一指示同孑优雷迸程的战瓯'其他工EbJ送货化翱库的苍耳
5、丙容图3-1进程限制块PCB1、每个进程有一个进程限制块PCB表示.进程限制块可以包含如下信息:进程名、优先级数、到达时间、需要运行时间等等.2、进程的信息,包括到达时间,优先数及需要的运行时间等都是事先人为地指定.3、每个进程的状态可以是就绪WWait运行RRun、或完成FFinish三种状态之一.3.2.2 算法分析一先来先效劳调度算法FCFS:FirstComeFirstServe总是把当前处于就绪队列之首的那个进程调度到运行状态.也就说,它只考虑进程进入就绪队列的先后,而不考虑它的下一个CPU周期的长短及其他因素.FCFS算法简单易行,但性能却不大好.二最短短作业进程优先调度算法SJF
6、:ShortestJobFirst.称为“短进程优先"SPNShortestProcessNext;这是对FCFS算法的改良,其目标是减少平均周转时间.三高优先权优先调度算法HPF:HighestPriorityFirst.多级队列算法的改良,平衡各进程对响应时间的要求.适用于作业调度和进程调度,可分成抢先式和非抢先式.四最高响应比优先调度算法HRN:HighestResponseRatioNext最高响应比优先法HRN,HighestResponse_ratioNex耻对FCFS方式和SJF方式的一种综合平衡.FCFS方式只考虑每个作业的等待时间而未考虑执行时间的长短,而SJF方式
7、只考虑执行时间而未考虑等待时间的长短.因此,这两种调度算法在某些极端情况下会带来某些不便.HRN调度策略同时考虑每个作业的等待时间长短和估计需要的执行时间长短,从中选出响应比最高的作业投入执行.五基于时间片的轮调度算法RR.将系统中所有的就绪进程根据FCFS原那么,排成一个队列.每次调度时将CPU分派给队首进程,让其执行一个时间片.时间片的长度从几个ms到几百ms.在一个时间片结束时,发生时钟中断.调度程序据此暂停当前进程的执行,将其送到就绪队列的末尾,并通过上下文切换执行当前的队首进程.进程可以未使用完一个时问片,就出让CPU如阻塞.3.2.3 模块设计1输入模块能够满足输入进程根本信息的功
8、能,尽可能提供友好的交互界面.给用户很好的提示,使用户能够方便的操作.可读取样例数据要求存放在外部文件中进行进程数、进入内存时间、时间片长度、作业大小、进程优先级的初始化.2算法模块可以根据需求选择五种算法中的一种运行:一先来先效劳调度算法FCFS:FirstComeFirstServa1 .根本思想:按作业进程到达时间先后顺序依次使用CPU.2 .适用于作业/进程调度.3 .非抢占调度方式.4 .优缺点.优点:实现简单.缺点:未考虑进程的优先级或紧急性,不利于短作业进程的运行,利于CPU繁忙型作业,而不利于I/O繁忙型作业.很少单独使用,常与其他算法结合使用辅助算法.二短作业进程优先调度算法
9、SJF:ShortestJobFirst1 .根本思想:选择就绪后备队列中估计运行时间最短的进程作业投入运行.2 .适用于作业/进程调度.3 .非抢占调度方式一一最短剩余时间优先算法或抢占调度方式.4 .优缺点.优点:有效缩短作业的平均周转时间,从而提升系统吞吐量.缺点:不利于长作业和紧迫作业的运行无法满足公平性,估计有主观性三高优先权优先调度算法HPF:HighestPriorityFirst.引入:为照顾紧迫型作业优先处理,急事急办,重要事先办.1 .根本思想:选择优先级最高的进程或作业投入运行.2 .适用于作业/进程调度.3 .调度方式.非抢占调度方式一一批处理系统:等你打完我再打.抢占
10、调度方式一一实时系统:不等你打完 ,抢过话筒就打4 .优先权优先级:即优先数,是由系统或用户按某种原那么指定的,一般用整数表示.1静态优先权幺定终身是在创立进程/作业时确定的,且在整个运行期间保持不变.优先级确实定依据:用户要求、进程/作业类型、对资源的要求不同系统有不同确实定原那么,及表求方法.优点:简单易行,系统开销小.缺点:不够精确,可能出现某些低优先级的进程永不能被执行.2动态优先权是在创立进程/作业时赋予的优先级,可随着进程的推进而改变.决定/动态改变因素:等待时间、已使用处理机的时间、其他资源的使用情况等.特点:可预防低优先级的进程/作业长时间得不到调度.四最高响应比优先调度算法H
11、RN:HighestResponseRatioNext引入:实际上是一种动态优先权调度算法.1 .响应比R=响应时间/要求效劳时间=等待时间+运行时间/运行时间=1+等待时间/运行时间2 .根本思想:同时兼顾每个作业等待时间和运行时间两方面因素,选择响应比最高的作业/进程投入运行.3,优缺点.优点:利于短作业,利于长作业.缺点:系统开销大.五基于时间片的轮调度算法RR1 .根本思想:轮转法RoundRobin是让每个进程在就绪队列中的等待时间与享受效劳的时间成正比例.2 .时间片大小确实定:固定时间片可变时间片系统响应时间正比就绪进程个数反比CPU水平进程切换时间q时间片t那么q/t不大于某个
12、值3 .时间片t大小的选择影响:太大,M>FCFS;太小,那么系统开销增大频繁切换.t=R/NmaxR为响应时间,Nmax允许的最大就绪数.3)输出模块根据选择的调度算法输出进程的响应时间,结束时间,周转时间,平均周转时问,采用可视化界面,可在进程调度过程中随时暂停调度,查看当前进程的状态以及相应的阻塞队列.3.2.4 数据结构说明ADT说明:ADTADT-Name(Data:/数据说明数据元素之间逻辑关系的描述Operations:/腴作说明Operationl:/臊作1,它通常可用C或C十十的函数原型来描述Input:对输入数据的说明Preconditions执行本操作前系统应满足的
13、状态/可看作初始条件Process对数据执行的操作Output对返回数据的说明Postconditions执行本操作后系统的状态/"系统可看作某个数据结构Operation2:/臊作2/ADT程序类图:图3-3程序类图3.2.5 算法流程图处理器调度程序活动图:在采用多道程序设计的系统中,往往有假设干个进程同时处于就绪状态.当就绪状态进程个数大于处理器数时,就必须依照某种策略来决定哪些进程优先占用处理器.本实验模拟在单处理器情况下处理器调度,帮助学生加深了解处理器调度的工作.图3-4处理器调度程序活动图1.先来先效劳:调度算法(FCFS:FirstComeFirstServe'
14、;图3-5先到先效劳算法活动图2 .短作业进程优先调度算法SJF:ShortestJobFirst图3-6最短作业优先算法活动图3 .高优先权优先调度算法HPF:HighestPriorityFirst图3-7优先调度算法活动图4.最高响应比优先调度算法HRN:HighestResponseRatioNext图3-8最高响应比调度算法活动图5.基于时间片的轮调度算法RR.图3-9时间片轮转法算法活动图四、系统测试与调试分析4.1 系统测试4.1.1 输入模块(1)实现在界面上直接手动输入.(2)实现在文件中直接读取.4.1.2 算法模块实现可以在界面上选择需要的算法(时间片轮转算法、先来先效劳
15、算法、短作业优先算法、静态优先权优先调度算法、高响应比调度算法)运行.4.1.3 输出模块可以根据选择的算法,得到正确的输出结果4.2 测试用例表4-1测试用例表进程名到达时间运行时间优先级时间片P11°553P21113P31433P4I?333P542234.3 测试结果4.3.1 先到先效劳算法图4-1先到先效劳算法测试结果4.3.2 最短作业优先算法图4-2最短作业优先算法测试结果4.3.3静态优先级算法图4-3优先级算法测试结果4.3.4最高响应比算法图4-4最高响应比算法测试结果图4-5时间片轮转法测试结果4.4手动运算结果比照4.4.1 静态优先级P1p3p4p5p27
16、101519204.4.2 先来先效劳P1,p2p3p4p5078111620P14.4.3 最短作业优先p2p3p5.p4781115204.4.4 最高响应比4.4.5时间片算法P1p2p3P4plp5p4plp50347101316181920图4-6手动计算截图1图4-7手动计算截图24.5测试表4-2测试表测试说测试名称通用处理器调度演示实验测试目的验证程序对于模拟处理器调度算法的处理流程明测试技术单元测试测试方法黑盒测试法测试内容读取数据-程序运行-输出结果测试用例测试步骤输入读取数据文件的路径名分别选择不同的调度算法运行输出结果测试数据src/data.txt时间片轮转算法、先来
17、先效劳算法、短作业优先算法、静态优先权优先调度算法、高响应比调度算法进程名行时间片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.010346.011321.0123450I时初总轮转Istartpaiisg11甘相肉时间竟:1时间片轮转先来光雕带运行就错三帝ri高响应比场理优先静叁优先镒图4-10算法选择4 .输出结果图4-1
19、1结果输出六、程序清单FCFS.javapackagelabl;importjava.util.Vector;publicclassFCFSextendsDispatchMethodOverridepublicPCBgetNext(Vector<PCB>q)/TODOAuto-generatedmethodstubPCBp;p=q.remove(0);elsep=null;returnp;)Overridepublicinthandle(PCBp,Vector<PCB>q)/TODOAuto-generatedmethodstubinttime=p.getServeTi
20、me();tryThreadsleep(time*1000);Systemout.println("sleepfor"+time);catch(InterruptedExceptione)/TODOAuto-generatedcatchblocke.printStackTrace();p.setTime(p.getEnterTime(),0,p.getPriority();returntime;SJF.javapackagelab1;importjava.util.Vector;publicclassSJFextendsDispatchMethodOverridepubli
21、cPCBgetNext(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(min);returntemp;Overridepublicinthandle(PCBp,Vector<PCB>q)/TODOAuto-generatedmethodstubinttime
22、=p.getServeTime();tryThreadsleep(time*1000);catch(InterruptedExceptione)/TODOAuto-generatedcatchblocke.printStackTrace();p.setTime(p.getEnterTime(),0,p.getPriority();returntime;StaticPriority.javapackagelabl;importjava.util.Vector;publicclasStaticPrioAtyextendsDispatchMethodOverridepublicPCBgetNext(
23、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("max:"+max);p=q.get(max);q.remove(max);)returnp;Overridepublicinthandle(PCBp,Vector<PCB>q)/
24、TODOAuto-generatedmethodstubinttime=p.getServeTime();tryThreadsleep(time*1000);catch(InterruptedExceptione)/TODOAuto-generatedcatchblocke.printStackTrace();p.setTime(p.getEnterTime(),0,p.getPriority();returntime;HRRF.javapackagelab1;importjava.util.Vector;publicclassHRRFextendsDispatchMethodpublicvo
25、idcalculate(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.getTime()+"calculatepriority:"+(double)(this.getTime()-temp.getEnterTime()+0.0)/temp.getServe
26、Time()+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()>q.get(max).getPriority()max=i;PCBtemp=q.get(max);q.remove(max);returntemp;Overridepublicinthandle(
27、PCBp,Vector<PCB>q)/TODOAuto-generatedmethodstubinttime=p.getServeTime();tryThreadsleep(time*1000);catch(InterruptedExceptione)/TODOAuto-generatedcatchblocke.printStackTrace();p.setTime(p.getEnterTime(),0,p.getPriority();returntime;Timeslicepackagelab1;importjava.util.Vector;publicclassTimeSlic
28、eextendsDispatchMethodintslice=1;publicTimeSlice()this.needConfig=true;voidsetSlice(intslice)this.slice=slice;OverridepublicPCBgetNext(Vector<PCB>q)/TODOAuto-generatedmethodstubPCBp;p=q.remove(0);elsep=null;returnp;)publicvoidsetConfig(Objecto)this.slice=(MainUI)o).getSlice();)Overridepublicin
29、thandle(PCBp,Vector<PCB>q)/TODOAuto-generatedmethodstubtryThread.sleep(slice);catch(InterruptedExceptione)/TODOAuto-generatedcatchblocke.printStackTrace();if(p.getServeTime()-slice>0)tryThreadsleep(slice*1000);catch(InterruptedExceptione)/TODOAuto-generatedcatchblocke.printStackTrace();p.se
30、tTime(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,后期的总结报告,还有就是系统的测试工作,朱文吉吉负责系统的设计和代码的实现局部,在深入地进行程序的设计和,编写工作,我对这个学期中学习的设计模式有了新的熟悉,在本次的程序设计当中,我们应用了MVC
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 会员档案信息管理规范
- 特种劳动防护用品管理规范
- 药膳食材搭配禁忌指南
- 三高人群营养指导
- 家庭地暖清洗维护保养服务方案
- 家禽免疫接种操作规程
- 大蒜恒温库储藏温湿度控制方案
- 减脂人群轻食配餐指引
- 特种作业人员安全技术培训考核规定
- 亚健康状态评估问诊手册
- 海南省政务信息化项目投资编制标准(试行)
- ISO9001质量管理体系文件范本
- 烟囱拆除施工方案规范
- 2025年湖北供销集团有限公司出资企业公开招聘28名工作人员模拟试卷附答案
- 合肥网约车考试题80题
- 考叉车证科目一模拟试题
- 串串店加盟易合同范本
- 诚信管理体系知识培训课件
- 戚继光马上作课件
- 临床试验SAE培训课件
- 人工智能应用技术基础 课件 项目七 解码人工智能生成内容AIGC的独特技术
评论
0/150
提交评论