1、已知参数和设计要求:运用课堂学习的操作系统理论知识,参考操作系统课程里讲述的文件系统有关算法,用C、C+或JAVA语言编程,模拟实现普通操作系统的进程调度功能。本课程设计目的如下: 1)编程实现模拟操作系统进程调度子系统的基本功能;理解进程调度的概念,通过课程设计深入了解进程控制块的功能、进程的创建、删除以及进程各个状态间的转换过程;实现先来先服务、时间片轮转、多级反馈轮转法对进程进行的调度过程;通过观察有关的队列结构的内容的动态变化过程深入体会各个调度算法的特点;从而能够更好的巩固从书本上学到的知识。2)编程过程中需要建立队列等结构进行各种操作,通过该次实验,可以督促学生从实用的角度对数据结
2、构课程内容进行更深入理解和更熟练的应用。3)实验编程语言要求使用java语言或C+语言。通过对调度功能的编程实现,不但能有效训练学生对编程语言的熟练使用,还能促进学生独立思考解决问题、以及独立查新获取知识的能力。操作系统课程设计报告要求:按要求格式和纸张写出设计报告,报告正文内容如下:1、 设计目的意义、设计内容 2、 设计方案(软硬件环境,开发工具或语言选择及思路等) 3、程序功能模块设计(程序功能模块划分及层次等)4、程序总控流程图4、数据结构设计6、程序代码结构(函数调用关系或类层次关系)7、程序主要代码解读8、测试数据及测试结果9、设计过程中遇到的问题及解决方法10、结论(系统实现情况
3、、系统特点、设计体会及收获等。)报告字数要求:3000评分标准(1)设计报告情况; (2)、运行演示情况;(3)教师质疑回答情况; (4)、算法难易程度; (5)、协作配合情况学生应完成的工作:实现进程调度子系统如下功能模块:1)实现进程相关数据结构(如进程控制块task_struct)的创建和查看功能。2)实现多种进程调度算法:先来先服务算法、优先级调度算法、时间片轮转法、多级反馈轮转法等。3)实现对执行进程的阻塞,对等待进程的唤醒等功能。4)实现相关队列在进程调度中的动态变化过程。分组要求:可按班级自由组合小组成员,一组2-3人组成。 注意: 希望同组同学分工明确,团结协作。每位同学需交课
4、程设计报告(主要写自己负责部分)。小组成员及分工情况:由学生填写目前资料收集情况(含指定参考资料):著作:1 张尧学,史美林.计算机操作系统教程第2版.清华大学出版社2000年2 张尧学.计算机操作系统教程第2版 习题与实验指导.2000年课程设计的工作计划:课程设计的时间为一周,上机时间共20学时。工作计划如下:星期一:准备工作,理解、分析设计要求。总体方案设计,确定组内分工。星期二:程序模块结构设计,模块层次调用关系、模块之间接口约定。星期三:程序设计、模块测试。星期四:程序设计、模块集成;总体测试;写课程设计报告。星期五:完善程序和报告。向老师提交课程设计报告和程序。任务下达日期2009
5、年6月20 日完成日期 2009年 6月26 日指导教师(签名)学生(签名)三设计目的意义、设计内容1 编程实现模拟操作系统进程调度子系统的基本功能;2 编程过程中需要建立队列等结构进行各种操作,通过该次实验,可以督促学生从实用的角度对数据结构课程内容进行更深入理解和更熟练的应用。3 实验编程语言要求使用java语言或C+语言。四设计方案(软硬件环境,开发工具或语言选择及思路等)设计环境平台:该软件在Windows XP,JDK1.62开发工具:eclipse+designer3设计思路 :1、 进程概念:进程是被独立分配资源的最小单位。进程是动态概念,必须程序运行才有进程的产生。2、 进程的
6、状态模型:(1)运行:进程已获得处理机,当前处于运行状态。(2)就绪:进程已经准备好,一旦有处理器就可运行。(3)阻塞:进程因为发生某事件而暂停执行,亦即进程的执行受到阻塞。3、处理机调度:在多道程序设计系统中,内存中有多道程序运行,他们相互争夺处理机这一重要的资源。处理机调度就是从就绪队列中,按照一定的算法选择一个进程并将处理机分配给它运行,以实现进程并发地执行。4、 进程调度算法的功能记录系统中所有进程的执行情况选择占有处理机的进程进行进程的上下文切换5、进程调度的算法:(1)先来先服务算法:最先进入等待队列的进程先执行,进程结束后执行下一个进程。这是最简单的处理机调度算法,其基本思想是按
7、照进程进入就绪队列的先后顺序调度并分配处理机执行。先来先服务调度算法是一种不可抢占的算法,先进入就绪队列的进程,先费培处理机运行。一旦一个进程占有了处理机,它就一直运行下去,知道该进程完成工作或者因为等待某事件而不能继续运行时才释放处理机(2)优先数算法:即进程的执行顺序由高优先级到低优先级。系统或用户按某种原则为进程指定一个优先级来表示该进程所享有的确调度优先权。该算法核心是确定进程的优先级。(3)时间片轮转算法:固定时间片,每个进程在执行一个时间片后,轮到下一进程执行,知道所有的进程执行完毕。处理器同一个时间只能处理一个任务。处理器在处理多任务的时候,就要看请求的时间顺序,如果时间一致,就
8、要进行预测。挑到一个任务后,需要若干步骤才能做完,这些步骤中有些需要处理器参与,有些不需要(如磁盘控制器的存储过程)。不需要处理器处理的时候,这部分时间就要分配给其他的进程。原来的进程就要处于等待的时间段上。经过周密分配时间,宏观上就象是多个任务一起运行一样,但微观上是有先后的,就是时间片轮换。 (4) 多级反馈轮转法: 把系统中的所有进程分成若干个具有不同优先级别的组,同一组的进程都具有与所在组同样的优先级别,并且把每组进程组织成一个先进先出的队列。在设计时,按优先级别越高的组中的进程应得时间片越短的原则分配时间片。在调度时,调度器每次都从优先级别高的就绪队列中队首选择就绪进程。当在高优先级
9、别的队列中找不到就绪进程时,才到低优先级别的就绪进程队列中选取。注:优先数算法时间片轮转法多级反馈队列调度法五程序功能模块设计1模拟进程调度算法模块界面模块进程调度模块事件模块先来先服务算法模块优先数算法模块时间片轮转算多级反馈队列调度 本组在实现进程调度算法时采用了一个有特色的模拟方式线程模拟进程。数据结构设计如下:创建JAVA中的thread对象,并将创建好的各个对象放入数据容器Vector()中,各个调度算法对个进程的排序,其实就是对vector中的thread对象排序,决定其执行顺序。开始执行:public class MainThread弹出程序运行窗口选择进程调度算法comboBo
10、x.getSelectedItem()=Pri;comboBox.getSelectedItem() = T_Slice;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(
11、0)。v2.remove(0)。v0.remove(0)。list_2.setListData(v11)。list_1.setListData(v0)。)。唤醒:将等待队列中的进程重新调入就绪队列的对尾publicvoid run() if (MainForm.algorithm.equals() / System.out.println( execute_T_Slice()。 refresh()。 elseif (MainForm.algorithm.equals(/System.out.println( executeM_T_Slice()。 else execute()。 publicv
12、oid refresh() / 刷新列表,并且执行下一个进程 MainForm.list_1.setListData(MainForm.v0)。if (MainForm.v0.size() 0) MainForm.textField_3.setText(String) MainForm.v0.get(0)。 else MainForm.textField_3.setText(无进程if (k MainForm.n) ShowInfo show = new ShowInfo()。 show.setVisible(true)。 Thread t = new Thread(show)。 t.start()。 / 进程执行过程publicvoid execute() /FCFS和优先级调度算法int maximum = progressBar.getMaximum()。progress = (CrtProcess) MainForm.v2.get(0).getProgress()。/ System.out.println(progress+sfsdf+MainForm.v2.size()。label_3.setText(Crt
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1