操作系统通用处理器调度演示程序课程设计报告总结报告_第1页
操作系统通用处理器调度演示程序课程设计报告总结报告_第2页
操作系统通用处理器调度演示程序课程设计报告总结报告_第3页
操作系统通用处理器调度演示程序课程设计报告总结报告_第4页
操作系统通用处理器调度演示程序课程设计报告总结报告_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

-.z.**大学信息科学与工程学院《操作系统课程设计》总结报告题目:通用处理器调度演示实验专业:软件工程班级:软件3班、软件4班**:朱文喆、黄强**:6、1设计时间:2017/6/26-2017/7/7一、课程设计目的操作系统课程设计是软件工程专业的主要实践性教学环节。在进行了专业基础课和《操作系统》课程的学习基础上,设计或分析一个实际的操作系统旨在加深对计算机硬件结构和系统软件的认识,初步掌握操作系统组成模块和应用接口的使用方法,提高进行工程设计和系统分析的能力,为毕业设计和以后的工程实践打下良好的基础。二、课程设计内容与要求2.1设计目的在多道程序和多任务系统中,系统内同时处于就绪状态的进程可能有若干个,也就是能运行的进程数大于处理机个数,为了使系统中的进程有条不紊地工作,必须选用*种调度策略,在一定的时机选择一个进程占有处理机。要求学生设计一个模拟处理机调度算法,以巩固和加深处理机调度的概念。2.2设计要求(多道、单处理机)1)进程调度算法包括:时间片轮转算法、先来先服务算法、短作业优先算法、静态优先权优先调度算法、高响应比调度算法。2)每一个进程有一个PCB,其内容可以根据具体情况设定。3)进程数、进入内存时间、要求服务时间、作业大小、优先级等均可以在界面上设定。4)可读取样例数据(要求存放在外部文件中)进行进程数、进入内存时间、时间片长度、作业大小、进程优先级的初始化。5)可以在运行中显示各进程的状态:就绪、执行(由于不要求设置互斥资源与进程间同步关系,故只有两种状态)。6)采用可视化界面,可在进程调度过程中随时暂停调度,查看当前进程的状态以及相应的阻塞队列。7)有能比较的功能,可比较同一组数据在不同调度算法下的平均周转时间。8)具有一定的数据容错性。三、功能模拟系统分析与设计3.1系统分析本课程设计的目的就是模拟一种通用处理器的五种调度算法来实现进程调度的过程,加深对进程调度的理解,输出采用采用可视化界面,可在进程调度过程中随时暂停调度,查看当前进程的状态以及相应的阻塞队列,进程控制块(PCB)是这个程序设计的核心,PCB包含了到达时间,运行时间,优先级等关键数据,要求可以用五种调度算法演示,我们可以用策略模式把五个算法打包通过一个接口连接CPU,实现算法和CPU的分离,算法有5五种,分别实现不同的调度演示(时间片轮转算法、先来先服务算法、短作业优先算法、静态优先权优先调度算法、高响应比调度算法)我们采用MVC(模型-视图-控制器)的设计方法,输入方式的采用界面直接输入和文件读取输入两种方法,视图主要展示进程的进程名、到达时间、运行时间、优先级、时间片、响应时间、结束时间、周转时间,表示方法我们采用Java图形界面输出,动态演示调度算法的实现过程,以加深对操作系统进程调度的理解。3.2系统设计设计思想图3-1进程控制块(PCB)图3-2进程状态图1、每个进程有一个进程控制块(PCB)表示。进程控制块可以包含如下信息:进程名、优先级数、到达时间、需要运行时间等等。2、进程的信息,包括到达时间,优先数及需要的运行时间等都是事先人为地指定。3、每个进程的状态可以是就绪W(Wait)、运行R(Run)、或完成F(Finish)三种状态之一。算法分析先"先服""度算法FCFS:FirsteFirstServe。"是把"前"于就""列之首的那""程"度到运行""。也就",它只考""程"入就""列的先后,而不考"它的下一"CPU周期的"短及其他因素。FCFS算法""易行,但性能"不大好。最短短作"("程)优先"度算法SJF:ShortestJobFirst。""“短"程优先”SPN(ShortestProcessNe*t);"是"FCFS算法的改",其目"是"少平均周"""。高优先"优先"度算法HPF:HighestPriorityFirst。多""列算法的改",平衡各"程"""""的要求。适用于作""度和"程"度,可分成"先式和非"先式。(四)最高""比优先"度算法HRN:HighestResponseRatioNe*t。最高响应比优先法(HRN,HighestResponse_ratioNe*t)是"FCFS方式和SJF方式的一种"合平衡。FCFS方式只考"每"作"的等待""而未考""行""的"短,而SJF方式只考""行""而未考"等待""的"短。因此,""种"度算法在*些极端情"下"""*些不便。HRN"度策略同"考"每"作"的等待"""短和估"需要的"行"""短,"中"出响应比最高的作"投入"行。(五)基于""片的""度算法(RR)。"系"中所有的就""程按照FCFS原",排成一"队列。每次"度""CPU分派""首"程,"其"行一"""片。""片的"度"几"ms到几百ms。在一"""片"束","生时钟中断。"度程序据此"停"前"程的"行,"其送到就"队列的末尾,并通"上下文切换"行"前的"首"程。"程可以未使用完一"""片,就出"CPU(如阻塞)。模"""1)"入模"能""足"入"程基本信息的功能,"可能提供友好的交互界面。"用"很好的提示,使用"能"方便的操作。可"取"例"据(要求存放在外部文件中)"行"程"、"入"存""、""片"度、作"大小、"程优先"的初始化。算法模"可以根据需求""五种算法中的一种"行:(一)先"先服""度算法FCFS:FirsteFirstServe。1.基本思想:按作"("程)到"""先后"序依次使用CPU。2.适用于作"/"程"度。3.非"占"度方式。4.优缺"。优":""""。缺":未考""程的优先"或"急性,不利于短作"("程)的"行,利于CPU繁忙型作",而不利于I/O繁忙型作"。很少""使用,常与其他算法"合使用("助算法)。(二)短作"("程)优先"度算法SJF:ShortestJobFirst。基本思想:""就"(后")"列中估""行""最短的"程(作")投入"行。2.适用于作"/"程"度。3.非"占"度方式——>最短剩余""优先算法或"占"度方式。4.优缺"。优":有效"短作"的平均周""","而提高系"吞吐量。缺":不利于"作"和"迫作"的"行("法"足公平性,估"有主"性)(三)高优先"优先"度算法HPF:HighestPriorityFirst。引入:"照""迫型作"优先"理,!§急事急"!‥,!§重要事先"!‥。1.基本思想:""优先"最高的"程或作"投入"行。2.适用于作"/"程"度。3."度方式。非"占"度方式——批"理系":!§等你打完我再打!‥。"占"度方式——""系":!§不等你打完"","""筒就打!‥。4.优先"(优先"):即优先",是由系"或用"按*种原"指定的,一般用整"表示。""优先" !§一定"身!‥是在"建"程/作""确定的,且在整""行期"保持不"。优先"的确定依据:用"要求、"程/作""型、""源的要求不同系"有不同的确定原",及表求方法。优":""易行,系"""小。缺":不"精确,可能出"*些低优先"的"程永不能被"行。(2)""优先"是在"建"程/作"""予的优先",可"""程的推"而改"。"定/""改"因素:等待""、已使用"理机的""、其他"源的使用情"等。特":可防止低优先"的"程/作""""得不到"度。(四)最高""比优先"度算法HRN:HighestResponseRatioNe*t。引入:""上是一种""优先""度算法。1.""比R=""""/要求服""" =(等待""+"行"")/"行"" =1+(等待""/"行"")2.基本思想:同"兼"每"作"等待""和"行"""方面因素,""""比最高的作"/"程投入"行。3.优缺"。优":利于短作",利于"作"。缺":系"""大。(五)基于""片的""度算法(RR)1.基本思想:""法(RoundRobin)是"每""程在就"队列中的等待""与享受服"的""成正比例。2.""片大小的确定:固定""片可"""片系"""""正比就""程""反比CPU能力"程切"""q ""片t"q/t不大于*"值3.""片t大小的""影":太大,"——>FCFS;太小,"系"""增大("繁切")。t=R/Nma* R""""",Nma*允"的最大就""。3)"出模"根据""的"度算法"出"程的"""","束"",周""",平均周""",采用可"化界面,可在"程"度"程中"""停"度,查看"前"程的""以及相"的阻塞"列。3.2.4"据"构"明ADT"明:ADTADT-Name{

Data://"据"明"据元素之""""系的描述Operations://操作"明Operation1://操作1,它通常可用C或C﹢﹢的函"原型"描述Input:""入"据的"明Preconditions:"行本操作前系"""足的""//可看作初始"件Process:""据"行的操作Output:"返回"据的"明Postconditions:"行本操作后系"的""//"系""可看作*""据"构Operation2://操作2

……}//ADT

程序"":"3-3程序""算法流程""理器"度程序活"":在采用多道程序""的系"中,往往有若干""程同""于就"""。"就""""程""大于"理器"",就必"依照*种策略""定哪些"程优先占用"理器。本""模"在""理器情"下"理器"度,"助"生加深了解"理器"度的工作。"3-4"理器"度程序活""1.先"先服":"度算法(FCFS:FirsteFirstServe)。"3-5先到先服"算法活""2.短作"("程)优先"度算法(SJF:ShortestJobFirst)。"3-6最短作"优先算法活""3.高优先"优先"度算法(HPF:HighestPriorityFirst)。"3-7优先"度算法活""4.最高""比优先"度算法(HRN:HighestResponseRatioNe*t)。"3-8最高""比"度算法活""5.基于""片的""度算法(RR)。"3-9""片""法算法活""四、系"""与""分析4.1系"""4.1.1"入模"(1)""在界面上直接手""入。(2)""在文件中直接"取。算法模"""可以在界面上""需要的算法(""片""算法、先"先服"算法、短作"优先算法、""优先"优先"度算法、高""比"度算法)"行。4.1.3"出模"可以根据""的算法,得到正确的"出"果。4.2""用例表4-1""用例表"程名到""""行""优先"""片P10553P21113P31433P42333P542234.3"""果先到先服"算法"4-1先到先服"算法"""果最短作"优先算法"4-2最短作"优先算法"""果4.3.3""优先"算法"4-3优先"算法"""果最高""比算法"4-4最高""比算法"""果4.3.5""片""法"4-5""片""法"""果4.4手""算"果"比4.4.1""优先"P1p3p4p5p20710151920先"先服"P1p2p3p4p5078111620最短作"优先P1p2p3p5p4078111520最高""比P1p2p3p4p50781116204.4.5""片算法P1p2p3p4p1p5p4p1p50347101316181920"4-6手""算截"1"4-7手""算截"24.5""表4-2""表"""明""名"通用"理器"度演示""""目的""程序"于模""理器"度算法的"理流程""技""元""""方法黑盒""法""用例"""容"取"据-程序"行-"出"果""步""入"取"据文件的路"名分"""不同的"度算法"行"出"果"""据src/data.t*t""片""算法、先"先服"算法、短作"优先算法、""优先"优先"度算法、高""比"度算法"程名到""""行""优先"""片P1 0 7 5 3P2 1 1 1 3P3 1 3 4 3P4 2 5 3 3P5 4 4 2 3"期"果正常"入"据算法正常"行"出""""、"束""、平均周""""""果与"期相符与"期相符与"期相符4.6""分析在我""程序功能已"基本""并且正常的情"之后,"在主要完成"据的"",在"""程中,主要""老""的"据,我先手"的分""五种算法算出答案,再分""入程序"行,与手"算出的"果"行反复"比,在""中我"""了""片""法的算法有"小小的"",与"期的"果不符合,在"行了反复""之后得到了正确的"果,程序正确。用"手"1."入文件包"4-8"入程序包2."行"入"据(手""入或者文件"取)"4-9"入"据3."""度算法""Start"始"行,可以""pause""停,""甘特"可以查看"程甘特""4-10算法""4."出"果"4-11"果"出六、程序清"FCFS.javapackagelab1;importjava.util.Vector;publicclassFCFSe*tendsDispatchMethod{OverridepublicPCBgetNe*t(Vector<PCB>q){//TODOAuto-generatedmethodstubPCBp;if(q.size()>0)p=q.remove(0);elsep=null;returnp; }Overridepublicinthandle(PCBp,Vector<PCB>q){//TODOAuto-generatedmethodstubinttime=p.getServeTime();try{Thread.sleep(time*1000);System.out.println("sleepfor"+time); }catch(InterruptedE*ceptione){//TODOAuto-generatedcatchblocke.printStackTrace(); }p.setTime(p.getEnterTime(),0,p.getPriority());returntime; }}SJF.javapackagelab1;importjava.util.Vector;publicclassSJFe*tendsDispatchMethod{OverridepublicPCBgetNe*t(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=p.getServeTime();try{Thread.sleep(time*1000); }catch(InterruptedE*ceptione){//TODOAuto-generatedcatchblocke.printStackTrace(); }p.setTime(p.getEnterTime(),0,p.getPriority());returntime; }}StaticPriority.javapackagelab1;importjava.util.Vector;publicclassStaticPrioritye*tendsDispatchMethod{OverridepublicPCBgetNe*t(Vector<PCB>q){//TODOAuto-generatedmethodstubPCBp;if(q.size()==0)p=null;else{intma*=0;for(inti=0;i<q.size();i++){if(q.get(i).getPriority()>q.get(ma*).getPriority())ma*=i; }System.out.println("ma*:"+ma*);p=q.get(ma*);q.remove(ma*); }returnp; }Overridepublicinthandle(PCBp,Vector<PCB>q){//TODOAuto-generatedmethodstubinttime=p.getServeTime();try{Thread.sleep(time*1000); }catch(InterruptedE*ceptione){//TODOAuto-generatedcatchblocke.printStackTrace(); }p.setTime(p.getEnterTime(),0,p.getPriority());returntime; }}HRRF.javapackagelab1;importjava.util.Vector;publicclassHRRFe*tendsDispatchMethod{publicvoidcalculate(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);System.out.println("time:"+this.getTime()+"calculatepriority:"+((double)(this.getTime()-temp.getEnterTime()+0.0)/temp.getServeTime()+1));temp.refresh(); } }OverridepublicPCBgetNe*t(Vector<PCB>q){calculate(q);//TODOAuto-generatedmethodstubif(q.size()==0)returnnull;intma*=0;for(inti=0;i<q.size();i++){if(q.get(i).getPriority()>q.get(ma*).getPriority())ma*=i; }PCBtemp=q.get(ma*);q.remove(ma*);returntemp; }Overridepublicinthandle(PCBp,Vector<PCB>q){//TODOAuto-generatedmethodstubinttime=p.getServeTime();try{Thread.sleep(time*1000); }catch(InterruptedE*ceptione){//TODOAuto-generatedcatchblocke.printStackTrace(); }p.setTime(p.getEnterTime(),0,p.getPriority());returntime; }}Timeslicepackagelab1;importjava.util.Vector;publicclassTimeSlicee*tendsDispatchMethod{intslice=1;publicTimeSlice(){this.needConfig=true; }voidsetSlice(intslice){this.slice=slice; }OverridepublicPCBgetNe*t(Vector<PCB>q){//TODOAuto-generatedmethodstubPCBp;if(q.size()>0)p=q.remove(0);elsep=null;returnp; }publicvoidsetConfig(Objecto){this.slice=((MainUI)o).getSlice(); }Overridepublicinthandle(PCBp,Vector<PCB>q){//TODOAuto-generatedmethodstubtry{Thread.sleep(slice); }catch(InterruptedE*ceptione){//TODOAuto-generatedcatchblocke.printStackTrace(); }if(p.getServeTime()-slice>0){try{Thread.sleep(slice*1000); }catch(InterruptedE*ceptione){//TODOAuto-generatedcatchblocke.printStackTrace(); }p.setTime(p.getEnterTime(),p.getServeTime()-slice,p.getPriority());q.addElement(p);returnslice; }else{try{Thread.sleep(p.getServeTime()*1000); }catch(InterruptedE*ceptione){//TODOAuto-generatedcatchblocke.printStackTrace(); }inttime=p.getServeTime();p.setTime(p.getEnterTime(),0,p.getPriority());returntime; } }}七、体"与自我"价在"次"程""中,""主要""文"的"",和"解PPT的制作,包括前期的""文"和PPT,后期的"""告,"有就是系"的""工作,,朱文"""系"的""和代"的""部分,在深入地"行程序的""和,""工作,我""""期中""的""模式有了新的"",在本次的程序"""中,我""用了MVC【Model

温馨提示

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

评论

0/150

提交评论