




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录一 成绩评定表二 任务书三 计目的意义、设计内容 四 计方案(软硬件环境,开发工具或语言选择及思路) 五 程序功能模块设计(程序功能模块划分及层次等)六 程序总控流程图七 数据结构设计八 程序代码结构(函数调用关系或类层次关系)九 程序主要代码解析十 测试数据及测试结果十一设计过程中遇到的问题及解决方法十二结论(系统实现情况、系统特点、设计体会及收获等)十三. 目前资料收集情况(含指定参考资料)二任务书:课程设计题目模拟进程调度功能的设计与实现学院计算机学院专业计算机科学与技术专业年级2006级已知参数和设计要求:运用课堂学习的操作系统理论知识,参考操作系统课程里讲述的文件系统有关算法,用C、C+或JAVA语言编程,模拟实现普通操作系统的进程调度功能。本课程设计目的如下: 1)编程实现模拟操作系统进程调度子系统的基本功能;理解进程调度的概念,通过课程设计深入了解进程控制块的功能、进程的创建、删除以及进程各个状态间的转换过程;实现先来先服务、时间片轮转、多级反馈轮转法对进程进行的调度过程;通过观察有关的队列结构的内容的动态变化过程深入体会各个调度算法的特点;从而能够更好的巩固从书本上学到的知识。 2)编程过程中需要建立队列等结构进行各种操作,通过该次试验,可以督促学生从实用的角度对数据结构课程内容进行更深入理解和更熟练的应用。3)实验编程语言要求使用java语言或C+语言。通过对调度功能的编程实现,不但能有效训练学生对编程语言的熟练使用,还能促进学生独立思考解决问题、以及独立查新获取知识的能力。操作系统课程设计报告要求: 按要求格式和纸张写出设计报告,报告正文内容如下:1、 设计目的意义、设计内容 2、 设计方案(软硬件环境,开发工具或语言选择及思路等) 3、程序功能模块设计(程序功能模块划分及层次等)4、程序总控流程图4、数据结构设计6、程序代码结构(函数调用关系或类层次关系)7、程序主要代码解析8、测试数据及测试结果9、设计过程中遇到的问题及解决方法10、结论(系统实现情况、系统特点、设计体会及收获等。)报告字数要求:3000评分标准(1)设计报告情况; (2)、运行演示情况;(3)教师质疑回答情况; (4)、算法难易程度; (5)、协作配合情况学生应完成的工作:实现进程调度子系统如下功能模块:1)实现进程相关数据结构(如进程控制块task_struct)的创建和查看功能。2)实现多种进程调度算法:先来先服务算法、优先级调度算法、时间片轮转法、多级反馈轮转法等。3)实现对执行进程的阻塞,对等待进程的唤醒等功能。4)实现相关队列在进程调度中的动态变化过程。分组要求:可按班级自由组合小组成员,一组2-3人组成。 注意: 希望同组同学分工明确,团结协作。每位同学需交课程设计报告(主要写自己负责部分)。小组成员及分工情况:由学生填写目前资料收集情况(含指定参考资料):著作:1 张尧学,史美林.计算机操作系统教程第2版.清华大学出版社2000年著作:2 张尧学.计算机操作系统教程第2版 习题与实验指导.2000年课程设计的工作计划:课程设计的时间为一周,上机时间共20学时。工作计划如下:星期一:准备工作,理解、分析设计要求。总体方案设计,确定组内分工。星期二:程序模块结构设计,模块层次调用关系、模块之间接口约定。星期三:程序设计、模块测试。星期四:程序设计、模块集成;总体测试;写课程设计报告。星期五:完善程序和报告。向老师提交课程设计报告和程序。任务下达日期 2009年 6月 20 日完成日期 2009 年 6月 26 日指导教师 (签名)学 生 (签名)三设计目的意义、设计内容1 编程实现模拟操作系统进程调度子系统的基本功能;理解进程调度的概念,通过课程设计深入了解进程控制块的功能、进程的创建、删除以及进程各个状态间的转换过程;实现先来先服务、时间片轮转、多级反馈轮转法对进程进行的调度过程;通过观察有关的队列结构的内容的动态变化过程深入体会各个调度算法的特点;从而能够更好的巩固从书本上学到的知识。2 编程过程中需要建立队列等结构进行各种操作,通过该次试验,可以督促学生从实用的角度对数据结构课程内容进行更深入理解和更熟练的应用。3 实验编程语言要求使用java语言或C+语言。通过对调度功能的编程实现,不但能有效训练学生对编程语言的熟练使用,还能促进学生独立思考解决问题、以及独立查新获取知识的能力。四设计方案(软硬件环境,开发工具或语言选择及思路等)设计环境平台:该软件在Windows XP,JDK1.6开发工具: eclipse+designer设计思路 :1、 进程概念:进程是被独立分配资源的最小单位。进程是动态概念,必须程序运行才有进程的产生。2、 进程的状态模型: (1)运行:进程已获得处理机,当前处于运行状态。(2)就绪:进程已经准备好,一旦有处理器就可运行。(3)阻塞:进程因为发生某事件而暂停执行,亦即进程的执行受到阻塞。3、处理机调度:在多道程序设计系统中,内存中有多道程序运行,他们相互争夺处理机这一重要的资源。处理机调度就是从就绪队列中,按照一定的算法选择一个进程并将处理机分配给它运行,以实现进程并发地执行。4、 进程调度算法的功能记录系统中所有进程的执行情况选择占有处理机的进程进行进程的上下文切换5、进程调度的算法:(1)先来先服务算法:最先进入等待队列的进程先执行,进程结束后执行下一个进程。这是最简单的处理机调度算法,其基本思想是按照进程进入就绪队列的先后顺序调度并分配处理机执行。先来先服务调度算法是一种不可抢占的算法,先进入就绪队列的进程,先费培处理机运行。一旦一个进程占有了处理机,它就一直运行下去,知道该进程完成工作或者因为等待某事件而不能继续运行时才释放处理机(2)优先数算法:即进程的执行顺序由高优先级到低优先级。系统或用户按某种原则为进程指定一个优先级来表示该进程所享有的确调度优先权。该算法核心是确定进程的优先级。(3)时间片轮转算法:固定时间片,每个进程在执行一个时间片后,轮到下一进程执行,知道所有的进程执行完毕。处理器同一个时间只能处理一个任务。处理器在处理多任务的时候,就要看请求的时间顺序,如果时间一致,就要进行预测。挑到一个任务后,需要若干步骤才能做完,这些步骤中有些需要处理器参与,有些不需要(如磁盘控制器的存储过程)。不需要处理器处理的时候,这部分时间就要分配给其他的进程。原来的进程就要处于等待的时间段上。经过周密分配时间,宏观上就象是多个任务一起运行一样,但微观上是有先后的,就是时间片轮换。 (4) 多级反馈轮转法: 把系统中的所有进程分成若干个具有不同优先级别的组,同一组的进程都具有与所在组同样的优先级别,并且把每组进程组织成一个先进先出的队列。在设计时,按优先级别越高的组中的进程应得时间片越短的原则分配时间片。在调度时,调度器每次都从优先级别高的就绪队列中队首选择就绪进程。当在高优先级别的队列中找不到就绪进程时,才到低优先级别的就绪进程队列中选取。 注:优先数算法 时间片轮转法 多级反馈队列调度法 五程序功能模块设计1模拟进程调度算法模块界面模块进程调度模块事件模块先来先服务算法模块优先数算法模块时间片轮转算法模块多级反馈队列调度法模块六程序总控流程图开始创建进程及属性选择算法 先来先服务算法优先数算法时闾片轮转法多级反馈队列调度法显示进程执行状态结束七数据结构设计 本组在实现进程调度算法时采用了一个有特色的模拟方式线程模拟进程。 数据结构设计如下:创建JAVA中的thread对象,并将创建好的各个对象放入数据容器Vector()中,各个调度算法对个进程的排序,其实就是对vector中的thread对象排序,决定其执行顺序。八程序代码结构(函数调用关系或类层次关系)开始执行:public class MainThread弹出程序运行窗口选择进程调度算法comboBox.getSelectedItem()=Pri;comboBox.getSelectedItem() = T_Slice;comboBox.getSelectedItem() = M_FB_Slice创建进程:从窗体控件获取相应参数创建进程new RefreshList(list_3, list_1, list_2, textField_3).run()对进程进行控制:阻塞(首先判断有无进程在执行:JOptionPane.showMessageDialog(null, 已经无进程处于运行状态,请创建进程!),若有,则终止执,行将执行进程从就绪队列调入等待队列: v1.addElement(v2.get(0);v11.addElement(v0.get(0);v2.remove(0);v0.remove(0);list_2.setListData(v11);list_1.setListData(v0););唤醒:将等待队列中的进程重新调入就绪队列的对尾九程序主要代码解析public void run() if (MainForm.algorithm.equals(T_Slice) / System.out.println(T_Slice);execute_T_Slice();refresh(); else if (MainForm.algorithm.equals(M_FB_Slice) /System.out.println(M_FB_Slice);executeM_T_Slice();refresh(); else execute();refresh();public void refresh() / 刷新列表,并且执行下一个进程MainForm.list_1.setListData(MainForm.v0);if (MainForm.v0.size() 0) MainForm.textField_3.setText(String) MainForm.v0.get(0); elseMainForm.textField_3.setText(无进程);if (k MainForm.n) ShowInfo show = new ShowInfo();show.setVisible(true);Thread t = new Thread(show);t.start(); / 进程执行过程 public void execute() /FCFS和优先级调度算法int maximum = progressBar.getMaximum();progress = (CrtProcess) MainForm.v2.get(0).getProgress();/ System.out.println(progress+sfsdf+MainForm.v2.size(); label_3.setText(CrtProcess)MainForm.v2.get(0).getProcessName();label_4.setText(CrtProcess)MainForm.v2.get(0).getUserName();int i = progress;while (i MainForm.cpuTime_Slice) percent = MainForm.cpuTime_Slice / time; / 进度条的比例while (progress maximum & i percent*maximum) try int value = progressBar.getValue();source = MainForm.resource;if (MainForm.resource = true) progress = value + 1;progressBar.setValue(progress);(CrtProcess)MainForm.v2.get(0).setProgress(progress);Thread.sleep(DELAY * time);i+; else this.setVisible(false);MainForm.resource = true;break; catch (InterruptedException ignoredException) if (source = true & percent = 1.0) / MainForm.v1.addElement(MainForm.v2.get(0);MainForm.v2.remove(0);MainForm.v0.remove(0);k+; / 记录已经执行结束的进程this.setVisible(false);if (source = true & percent != 1.0) CrtProcess process = (CrtProcess) MainForm.v2.get(0);process.setTime_Slice(time - (int) MainForm.cpuTime_Slice);MainForm.v2.remove(0);MainForm.v0.remove(0);MainForm.v2.addElement(process);MainForm.v0.addElement(process.getProcessName();k+;MainForm.n+;this.setVisible(false);if (source = false)k+;source = true;public void executeM_T_Slice() for (int i = 0; i MainForm.cpuTime_Slice) percent = MainForm.cpuTime_Slice/time; / 进度条的比例while (progress maximum & i percent*maximum) try int value = progressBar.getValue();source = MainForm.resource;if (MainForm.resource = true) progress = value + 1;progressBar.setValue(progress);(CrtProcess)MainForm.v2.get(0).setProgress(progress);Thread.sleep(DELAY * time);i+; else this.setVisible(false);MainForm.resource = true;break; catch (InterruptedException ignoredException) if (source = true & percent = 1.0) MainForm.v2.remove(0);MainForm.v0.remove(0);k+; / 记录已经执行结束的进程this.setVisible(false);if (source = true & percent != 1.0) if (k n - 1) CrtProcess process = (CrtProcess) MainForm.v2.get(0);process.setTime_Slice(time - (int) MainForm.cpuTime_Slice);MainForm.v2.remove(0);MainForm.v0.remove(0);for (i = 0; i MainForm.vector_Num ; i+) sum1 += sizei;/ System.out.println(sum1:+sum1);if (k =sum1) sum2 = sum1 + sizei + 1;MainForm.v2.add(sum2-k, process);MainForm.v0.add(sum2-k, process.getProcessName();break;k+;MainForm.n+;this.setVisible(false);/if (k = n - MainForm.vQueueMainForm.vector_Num - 1.size() - 1&MainForm.vQueueMainForm.vector_Num-1.size()!=1) /CrtProcess process1 = (CrtProcess) MainForm.v2.get(0);/process1.setTime_Slice(time - (int) MainForm.cpuTime_Slice);/MainForm.v2.remove(0);/MainForm.v0.remove(0);/MainForm.v2.addElement(process1);/System.out.println(CrtProcess) MainForm.v2.get(0).getProcessName();/MainForm.v0.addElement(process1.getProcessName();/k = 0;/MainForm.n = MainForm.v2.size();/this.setVisible(false);/if (source = 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十二.结论 从一开始的设计思想到后面的不断精简,无疑面对的是一个重要的问题:”用线程模拟进程的控制难度”。说到这里,不得不承认本课程设计的最重要的特色之处就是
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 双流区劳务派遣合同范本
- 原油天然气销售合同范本
- 加盟店品牌转让合同范本
- 劳动合同的变更补充协议
- 喷粉设备转让合同协议书
- 商铺搬迁补偿协议书范本
- 交通赔偿死亡协议书范本
- 健康行业调理协议书范本
- 亚马逊卖家转让合同范本
- 双方约定房产价格协议书
- 2025年职业技能鉴定-劳动关系协调员-劳动关系协调员高级(三级)历年参考题库含答案解析(5套)
- 消防系统工程施工技术全流程攻略
- 2025年玻璃钢行业当前发展趋势与投资机遇洞察报告
- (新教材)2025年秋期部编人教版三年级上册小学语文全册教案(教学设计)(新课标核心素养教案)
- Welcome Unit 开学第一课(课件)高中英语人教版必修第一册
- (高清版)DZT 0208-2020 矿产地质勘查规范 金属砂矿类
- 安宁疗护服务流程
- 肿瘤科实习生入科培训课件
- 热分析DSC培训new
- 注塑机安全操作规程
- 运动处方(课堂PPT)
评论
0/150
提交评论