《2022年操作系统学习课程设计方案之进程调度.docx》由会员分享,可在线阅读,更多相关《2022年操作系统学习课程设计方案之进程调度.docx(19页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、目录一 成果评定表二 任务书三计目的意义、设计内容四计方案(软硬件环境,开发工具或语言挑选及思路) 五程序功能模块设计(程序功能模块划分及层次等) 六程序总控流程图七数据结构设计八程序代码结构(函数调用关系或类层次关系) 九程序主要代码解读十测试数据及测试结果十一设计过程中遇到的问题及解决方法十二结论(系统实现情形、系统特点、设计体会及收成等)十三. 目前资料收集情形(含指定参考资料)二任务书:课程设计题目模拟进程调度功能的设计与实现学院 运算机学院专业运算机科学与技术专业年2006 级级已知参数和设计要求:运用课堂学习的操作系统理论学问,参考操作系统课程里叙述的文件系统有关算法,用 C、 C
2、+或 JAVA 语言编程,模拟实现一般操作系统的进程调度功能;本课程设计目的如下:1) 编程实现模拟操作系统进程调度子系统的基本功能;懂得进程调度的概念,通过课程设计深化明白进程掌握块的功能、进程的创建、删除以及进程各个状态间的转换过程;实现先来先服务、时间片轮转、多级反馈轮转法对进程进行的调度过程;通过观看有关的队列结构的内容的动态变化过程深化体会各个调度算法的特点;从而能够更好的巩固从书本上学到的学问;2) 编程过程中需要建立队列等结构进行各种操作,通过该次试验,可以督促同学从有用的角度对数据结构课程内容进行更深化懂得和更娴熟的应 用;3) 试验编程语言要求使用java 语言或 C+语言;
3、通过对调度功能的编程实现,不但能有效训练同学对编程语言的娴熟使用,仍能促进同学独立摸索 解决问题、以及独立查新猎取学问的才能;操作系统课程设计报告要求:按要求格式和纸张写出设计报告,报告正文 内容如下:1、 设计目的意义、设计内容2、 设计方案(软硬件环境,开发工具或语言挑选及思路等)3、程序功能模块设计(程序功能模块划分及层次等)4、程序总控流程图4、数据结构设计6、程序代码结构(函数调用关系或类层次关系)7、程序主要代码解读8、测试数据及测试结果9、设计过程中遇到的问题及解决方法10、结论(系统实现情形、系统特点、设计体会及收成等;) 报告字数要求: 3000评分标准( 1)设计报告情形;
4、( 2)、运行演示情形;( 3)老师质疑回答情形;( 4)、算法难易程度;( 5)、协作协作情形同学应完成的工作:实现进程调度子系统如下功能模块:1) 实现进程相关数据结构(如进程掌握块task_struct )的创建和查看功能;2) 实现多种进程调度算法:先来先服务算法、优先级调度算法、时间片轮转法、多级反馈轮转法等;3) 实现对执行进程的堵塞,对等待进程的唤醒等功能;4) 实现相关队列在进程调度中的动态变化过程;分组要求: 可按班级自由组合小组成员,一组2-3 人组成;留意:期望同组同学分工明确,团结协作;每位同学需交课程设计报告(主要写自己负责部分) ;小组成员及分工情形 :由同学填写目
5、前资料收集情形(含指定参考资料):著作: 1张尧学 , 史美林 . 运算机操作系统教程第2 版. 清华高校出版社 2000 年著作: 2张尧学 . 运算机操作系统教程第2 版 习题与试验指导 .2000 年课程设计的工作方案:课程设计的时间为一周,上机时间共20 学时;工作方案如下:星期一:预备工作,懂得、分析设计要求;总体方案设计,确定组内分工;星期二:程序模块结构设计,模块层次调用关系、模块之间接口商定;星期三:程序设计、模块测试;星期四:程序设计、模块集成;总体测试;写课程设计报告;星期五:完善程序和报告;向老师提交课程设计报告和程序;任务下达日期 2021 年 6 月 20日完成日期
6、2021年 6 月 26 日指导老师(签名)同学(签名)三设计目的意义、设计内容1. 编程实现模拟操作系统进程调度子系统的基本功能;懂得进程调度的概念,通过课程设计深化明白进程掌握块的功能、进程的创建、删除以及进程各个状态间的转换过程;实现先来先服务、时间片轮转、多级反馈轮转法对进程进行的调度过程;通过观看有关的队列结构的内容的动态变化过程深化体会各个调度算法的特点;从而能够更好的巩固从书本上学到的学问;2. 编程过程中需要建立队列等结构进行各种操作,通过该次试验,可以督促同学从有用的角度对数据结构课程内容进行更深化懂得和更娴熟的应用;3. 试验编程语言要求使用 java 语言或 C+语言;通
7、过对调度功能的编程实现,不但能有效训练同学对编程语言的娴熟使用,仍能促进同学独立摸索解决问题、以及独立查新猎取学问的才能;四设计方案(软硬件环境,开发工具或语言挑选及思路等)设计环境平台 : 该软件在 Windows XP,JDK1.6开发工具 :eclipse+designer设计思路 :1、 进程概念:进程是被独立安排资源的最小单位;进程是动态概念,必需程序运行才有进程的产生;2、 进程的状态模型:( 1)运行:进程已获得处理机,当前处于运行状态;( 2)就绪:进程已经预备好,一旦有处理器就可运行;( 3)堵塞:进程由于发生某大事而暂停执行,亦即进程的执行受到堵塞;3、处理机调度:在多道程
8、序设计系统中,内存中有多道程序运行,他们相互争夺处理机这一重要的资源;处理机调度就是从就绪队列中,依据肯定的算法挑选一个进程并将处理机安排给它运行,以实现进程并发地执行;4、 进程调度算法的功能记录系统中全部进程的执行情形挑选占有处理机的进程进行进程的上下文切换5、进程调度的算法:( 1)先来先服务算法:最先进入等待队列的进程先执行,进程终止后执行下一个进程;这是最简洁的处理机调度算法,其基本思想是依据进程进入就绪队列的先后次序调度并安排处理机执行;先来先服务调度算法是一种不行抢占的算法,先进入就绪队列的进程,先费培处理机运行;一旦一个进程占有了处理机,它就始终运行下去,知道该进程完成工作或者
9、由于等待某大事而不能连续运行时才释放处理机( 2)优先数算法:即进程的执行次序由高优先级到低优先级;系统或用户按某种原就为进程指定一个优先级来表示该进程所享有的确调度优先权;该算法核心是确定进程的优先级;( 3)时间片轮转算法:固定时间片,每个进程在执行一个时间片后,轮到下一进程执行,知道全部的进程执行完毕;处理器同一个时间只能处理一个任务;处理器在处理多任务的时候,就要看恳求的时间次序,假如时间一样,就要进行猜测;挑到一个任务后,需要如干步骤才能做完,这些步骤中有些需要处理器参加,有些不需要(如磁盘掌握器的储备过程);不需要处理器处理的时候,这部分时间就要安排给其他的进程;原先的进程就要处于
10、等待的时间段上;经过周密安排时间,宏观上就象是多个任务一起运行一样,但微观上是有先后的,就是时间片轮换;4多级反馈轮转法 : 把系统中的全部进程分成如干个具有不同优先级别的组,同一组的进程都具有与所在组同样的优先级别,并且把每组进程组织成一个先 进先出的队列;在设计时,按优先级别越高的组中的进程应得时间片越短的 原就安排时间片;在调度时,调度器每次都从优先级别高的就绪队列中队首 挑选就绪进程;当在高优先级别的队列中找不到就绪进程时,才到低优先级 别的就绪进程队列中选取;注: 优先数算法时间片轮转法先来优先时间先服数算片轮务算法模转算法模块块法模块多级反馈队列调度法五程序功能模块设计1模拟进程调
11、度算法模块界面模块进程调度模块大事模块多级反馈队列调度法模块六程序总控流程图开头创 建 进 程 及 属性挑选算法先 来 先 服务算法优先数算法时 闾 片 轮 转法多 级 反 馈 队列调度法显 示 进 程执行状态终止七数据结构设计本组在实现进程调度算法时采纳了一个有特色的模拟方式线程模拟进程;数据结构设计如下:创建 JAVA中的 thread 对象,并将创建好的各个对象放入数据容器Vector () 中,各个调度算法对个进程的排序,其实就是对vector中的 thread对象排序,打算其执行次序;八程序代码结构(函数调用关系或类层次关系)开头执行 : public class MainThrea
12、d 弹出程序运行窗口 挑选进程调度算法comboBox.getSelectedItem=Pri; comboBox.getSelectedItem = T_Slice; comboBox.getSelectedItem = M_FB_Slice 创建进程:从窗体控件猎取相应参数创建进程 new RefreshListlist_3, list_1, list_2, textField_3.run 对进程进行掌握:堵塞(第一判定有无进程在执行: JOptionPane.showMessageDialognull, 已经无进程处于运行状态,请创建进程! ,如有,就终止执,行将执行进程从就绪队列调入等
13、待队列 : v1 .addElementv2 .get0;v11 .addElementv0 .get0v2 .remove0;v0 .remove0;list_2.setListDatav11; ;list_1.setListDatav0 ;);唤醒:将等待队列中的进程重新调入就绪队列的对尾九程序主要代码解读publicvoidrun ifMainForm.algorithm.equalsT_Slice / System.out.printlnT_Slice;execute_T_Slice;refresh;elseifMainForm.algorithm.equalsM_FB_Slice /
14、System.out.printlnM_FB_Slice;executeM_T_Slice;refresh;elseexecute;refresh;publicvoidrefresh/刷新列表,并且执行下一个进程MainForm.list_1.setListDataMainForm.v0 ;ifMainForm.v0 .size 0 MainForm.textField_3.setTextString MainForm.v0 .get0;elseMainForm.textField_3.setText 无进程 ;ifk MainForm.n ShowInfo show =new ShowInf
15、o;show.setVisibletrue ;Thread t =new Threadshow;t.start;/进程执行过程publicvoidexecute /FCFS和优先级调度算法intmaximum =progressBar.getMaximum;progress= CrtProcess MainForm.v2 .get0.getProgress;/ System.out.printlnprogress+sfsdf+MainForm.v2.size;label_3.setTextCrtProcessMainForm.v2 .get0.getProcessName;label_4.se
16、tTextCrtProcessMainForm.v2 .get0.getUserName;inti =progress;whilei MainForm.cpuTime_Slice percent = MainForm.cpuTime_Slice/ time; /进度条的比例whileprogress maximum & i percent*maximum tryintvalue =progressBar.getValue;source= MainForm.resource;ifMainForm.resource=true progress= value + 1;progressBar.setV
17、alueprogress ;CrtProcessMainForm.v2 .get0.setProgressprogress ;Thread.sleep DELAY * time;i+ ;elsethis.setVisiblefalse ;MainForm.resource=true;break;catchInterruptedException ignoredException ifsource=true& percent = 1.0 / MainForm.v1.addElementMainForm.v2.get0;MainForm.v2 .remove0;MainForm.v0 .remov
18、e0; k + ; /记录已经执行终止的进程this.setVisiblefalse ;ifsource=true& percent .= 1.0 CrtProcess process = CrtProcess MainForm.v2 .get0;process.setTime_Slicetime - int MainForm.cpuTime_Slice ;MainForm.v2 .remove0;MainForm.v0 .remove0;MainForm.v2 .addElementprocess;MainForm.v0 .addElementprocess.getProcessName;k
19、 + ;MainForm.n + ;this.setVisiblefalse ;ifsource=false k + ;source=true;publicvoidexecuteM_T_Slice forinti = 0; i MainForm.cpuTime_Slice percent = MainForm.cpuTime_Slice/time; /进度条的比例whileprogress maximum & i percent*maximum tryintvalue =progressBar.getValue;source= MainForm.resource;ifMainForm.reso
20、urce=true progress= value + 1;progressBar.setValueprogress ;CrtProcessMainForm.v2 .get0.setProgressprogress ;Thread.sleep DELAY * time;i+ ;elsethis.setVisiblefalse ;MainForm.resource=true;break;catchInterruptedException ignoredException ifsource=true& percent = 1.0 MainForm.v2 .remove0;MainForm.v0 .
21、remove0;k + ; /记录已经执行终止的进程this.setVisiblefalse ;ifsource=true& percent .= 1.0 ifk n - 1 CrtProcess process = CrtProcess MainForm.v2 .get0;process.setTime_Slicetime - int MainForm.cpuTime_Slice ;MainForm.v2 .remove0;MainForm.v0 .remove0;fori = 0; i MainForm.vector_Num; i+ sum1 +=sizei;/ System.out.pr
22、intlnsum1:+sum1;ifk = sum1 sum2 =sum1 +sizei + 1;MainForm.v2 .addsum2 - k , process;MainForm.v0 .addsum2 - k , process.getProcessName;break;k + ;MainForm.n + ;this.setVisiblefalse ;/if k = n - MainForm.vQueueMainForm.vector_Num - 1.size - 1&MainForm.vQueueMainForm.vector_Num-1.size.=1 /CrtProcess pr
23、ocess1 = CrtProcessMainForm.v2.get0/;process1.setTime_Slicetime - intMainForm.cpuTime_Slice/;MainForm.v2.remove0;/MainForm.v0.remove0;/MainForm.v2.addElementprocess1;/System.out.printlnCrtProcessMainForm.v2.get0.getProcessName;/MainForm.v0.addElementprocess1.getProcessName;/k = 0;/MainForm.n = MainF
24、orm.v2.size;/this.setVisiblefalse;/ifsource=false k + ;source=true;十测试数据及测试结果时间片算法创建进程进程名 5 4 3 2 1时间 6 4 3 7 1执行时间片算法调度执行时,先执行进程5,而进程 5 的执行时间为 6,比时间片 5(程序设定)大,先执行时间 5,再执行下一个进程4,而进程 5 放入就绪队列末尾,依次执行;执行过程为5 4 3 2 1 5 2十二. 结论从一开头的设计思想到后面的不断精简,无疑面对的是一个重要的问题:”用线程模拟进程的掌握难度 ”;说到这里,不得不承认本课程设计的最重要的特色之处就是通过每创
25、建一个进程,就对应一个线程来掌握其执行状态;鉴于执行态采纳的是通过另外一个窗体中的进度条实现程序的执行状态,通过设置优先级只能保证执行的先后次序,却不能保证前一线程在是否终止时才能连续执行下一个线程,这样表达出的是”并发执行”,而模拟进程呈现在我们面前的的确进程的”并行执行 ”中的同时性;所以采纳了另外一种实现机制,即依据进程的调度算法,来实现进程的执行次序;采纳串行执行,即呈现出在同一时刻只能有一个进程占用处理机资源,对于FCFS算法,仅仅是简洁的次序执行;对于优先级算法,就是依据优先级的高低进行排序,然后次序执行,留意不论是何种算法,应当先执行第一个被创建的进程,先到达进程,处理机资源处于
26、空现状态,所以先执行,后面的就依据相应的算法,进行排序后调度,至于轮转法就比较简洁处理,就是依据进程所需的时间片与CPU 安排给每一个进程的时间片的大小进行比较,如时间片大于CPU 的时间片,就执行完CPU 时间片后进入就绪队列尾部,等待下一个CPU 时间片的到来,反之,就执行完毕,从就绪队列中删除;多级轮转法,就是采纳的多个队列来掌握他的执行次序;本课程设计动态创建n个队列后,默认为下标小的优先级高,就依据输入的进程的优先级加入到相应的队列,然后每个队列分 配一个 CPU 时间片,假如高优先级队列即下标小的队列中的进程未执行完毕,就加入到下标增一得队列尾部,连续执行,始终执行到尾部时,假如正在执行的进程安排的 时间片不足以让其执行完毕,就直接进入该队列的尾部,即轮转法的规章相同;不管 怎样,第一个第一创建一个显示进程执行状态的线程,进行执行;等执行完毕后,接 着依据以通过调度算法排好序的队列次序创建线程,即次序执行,这样就可实现通过 线程掌握进程的串行执行;十三 . 目前资料收集情形(含指定参考资料)著作: 1张尧学 , 史美林 . 运算机操作系统教程第2 版. 清华高校出版社 2000 年著作: 2张尧学 . 运算机操作系统教程第2 版 习题与试验指导 .2000 年