综合设计多进程并发与调度仿真环境
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
综合设计多进程并发与调度仿真环境
一、课程设计目的
进行操作系统课程设计主要是在学习操作系统课程的基础上,在完成操作系统各部分实验的基础上,对操作系统的整体进行一个模拟,通过实践加深对各个部分的管理功能的认识,还能进一步分析各个部分之间的联系,最后达到对完整系统的理解。
同时,可以提高运用操作系统知识解决实际问题的能力;锻炼实际的编程能力、创新能力及团队组织、协作开发软件的能力;还能提高调查研究、查阅技术文献、资料以及编写软件设计文档的能力。
二、课程设计内容
综合设计多进程并发与调度仿真环境,分析比较各种调度算法的性能。
三、系统分析与设计
1、系统分析:
在采用多道程序设计的系统中,往往有若干个进程同时处于就绪状态。
当就绪状态进程个数大于处理器数时,就必须依照某种策略来决定哪些进程优先占用处理器。
本实验就这一问题给出了四种调度算法。
分别为先来先服务、短作业优先、高优先权调度和时间片轮转算法。
2、系统设计:
(1)设计一个生成有几个互斥的待处理进程的主界面。
(2)再设计一个按钮可实现随机重新生成这几个进程的各种属性(这里用到了随机函数)(3)再分别设置四个按钮分别用四个算法对上诉诸进程进行调度。
(4)对于上诉四个算法再分别为每种算法相应对应的对话框,用来加以区别和独立。
3、模块设计:
4、数据结构说明:
struct Process
{
CString Name ;
int ArriveTime;
int NeedTime ;
int RealTime ;
int FinishTime;
int Level ;
CString State ;
};
struct Queue
{
CString Name ;
int ArriveTime;
int NeedTime ;
int Level ;
CString State ;
};
5、算法流程图:
处理器调度算法流图如下:
四、模块调试与系统测试
1、模块调试:
输入的形式和输入值的范围
输出的形式
程序所能达到的功能
2、系统测试:
测试方法:
由于软件错误的复杂性,软件测试需要综合应用测试技术,软件测试步骤为单元测试、集成测试、确认测试和系统测试。
单元测试是对源程序中每一个程序单元进行测试,检查各个模块是否正确实现了规定的功能,从而发现模块在编码中或算法中的错误。
该阶段涉及编码和详细设计的文档。
各模块经过单元测试后,将各模块组装起来进行集成测试,以检查与设计相关的软件体系结构的有关问题。
确认测试主要检查已实现的软件是否满足需求规格说明书中确定的各种需求。
系统测试将已确定的软件与其他系统元素(如硬件、其他支持软件、数据和人工等)结合在一起进行测试。
是 否 有就绪进程?
开始 保护现场,PC=>当前进程PCB 的断点 结束
现行进程PCB 的断点值=>PC 将现行进程状态改为运行态
随即选择—就绪进程作为现行进程 模拟处理器指令执行程序
测试数据:
测试报告:
3、调试分析:
五、用户手册
(1)生成待处理进程界面:
(2)当点击重新生成按钮时,会发现随机的在待处理进程一栏中的各个列的内容发生了变化。
(3)执行先来先服务按钮,模拟之后界面:
六、程序清单
七、体会与自我评价
通过本次的课程设计,使我能够正确运用操作系统课程中所学的基本理论和知识,加深了对多用户文件系统基本概念的理解,以及二级目录的磁盘文件系统的文件操作,还有让我感受很深的是对C语言的应用,由于对C语言在平时运用的不够,在对C语言的使用尤其是在编写代码方面很欠缺,在组织语言时出错不断。
在设计过程中,需要大量的相关资料,为了本次课程设计我在网上和图书馆查阅了大量资料,不断的发现问题、提出问题、解决问题。
在编程和调试的过程中,经常会出现意想不到的问题,并非每个问题都可以从相关资料中找到解决方法,有些问题是无法预料到的,这就需要通过自己理性的分析得出问题的解决方案。
在对自己所编写的源程序段的纠错的过程中,使我更好的理解了操作系统中文件系统的理论知识,同时在编程时用到了模块化的设计思想,这种编程方法可以使我们的编程变的更简单,可以使我们的查错与纠错变的更方便,总的来说通过这次的设计的学习使我学到了很多在平时的学习中学不到的很多东西,通过这次课程设计,使我对操作系统产生了极大的兴趣,我想我会在这条路上继续前进下去。
我相信,只要不断的严格要求自己,注意培养自己的思维能力,就一定会有更大更辉煌的发展和提高。
我还希望我们可以有更多这样的学习
机会,使我们的知识体系变的更加牢固。
这次课程设计,我也认识到了自己在计算机编程方面的严重不足,自己对计算机各种应用技术方面的了解实在太少,掌握的太窄,知识面过于单一,没有扩展到相关的领域,自己的动手能力实在太差,今后不仅要学好课本上的知识而且还要注重自己的动手实践能力,努力提高自己的动手动脑水平。
我希望在将来的学习过程中,我们能有足够的时间和机会去做更多的计算机软件编程和具体了解计算机相关技术是如何应用和工作的。
明年我们将会增加二至三门计算机课程,这是个不错的机会,我们要好好加强自己的动手能力,加强自己的编程能力,掌握计算机编程的基本制作过程,让自己的编程能力更上一个台阶,并试着做一些独立程序加以运行。
多和同学交流,让我们坐到一起讨论,相互交流学习经验。
与别人的沟通,也是广开知识面的好方法。
课程设计已经结束了,这次课程设计带给自己很多体会,在以后的学习中要不断总结,不断改进,使自己的成绩有新的提高。
八、参考文献
[1] 汤子瀛编著,《计算机操作系统(修订版)》,西安电子科技大学出版社,2001年
[2] 严蔚敏吴伟民,《数据结构》,清华大学出版社,1997.4
[3] 张尧学史美林,《计算机操作系统教程》,清华大学出版社,2000.8
[4] 胡明庆高巍钟梅《操作系统教程与实验》,清华大学出版社 2007.1
[5] 孙静宇编著,《计算机操作系统课程设计指导书》,太原理工出版社,2006.4。