模拟进程调度功能的设计与实现操作系统课程设计(含源文件)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
1、设计目的意义 (2)
1.1、目的意义 (2)
1.2、实现目标 (2)
2、设计方案 (3)
2.1、软硬件环境 (3)
2.2、开发工具 (3)
2.3、思路 (3)
3、程序功能模块设计 (4)
3.1、总体模块 (4)
3.2、部分模块 (4)
3.3、详细功能描述 (6)
4、程序总控流程图 (6)
5、数据结构设计 (8)
5.1、PCB结构 (8)
5.2、进程状态结构 (8)
5.3、控件结构 (9)
6、程序代码结构 (9)
7、程序主要代码解析 (10)
8、测试数据及测试结果 (15)
8.1、运行时部分界面 (15)
8.2、数据测试记录 (17)
9、设计过程中遇到的问题及解决方法 (18)
10、结论 (18)
10.1、系统实现情况 (18)
10.2、系统特点 (18)
10.3、设计体会及收获 (18)
11、参考资料 (19)
模拟进程调度功能的设计与实现
1、设计目的意义
1.1、目的意义
●通过课程设计理解进程调度的概念,深入了解进程控制的功能、进程的创建、删除以
及进程各个状态间的转换过程;实现先来先服务、时间片轮转、最短作业优先、优先级调度算法对进程进行的调度过程;通过观察有关的队列结构的内容的动态变化过程深入体会各个调度算法的特点;从而能够更好的巩固从书本上学到的知识。
●编程过程中需要建立队列等结构进行各种操作,通过该次课程设计,我们更加从实用
的角度对《数据结构》课程内容进行更深入理解和更熟练的应用。
●使用C++语言进行编程,通过对调度功能的编程实现,不但能有效训练我们对编程语
言的熟练使用,还能促进我们独立思考解决问题、以及独立查新获取知识的能力。
1.2、实现目标
●一个进程的生命期可以划分为一组状态,这些状态刻画了整个进程。系统根据PCB结
构中的状态值控制过程。在进程的生命期内,一个进程至少具有5种基本状态,它们是:初始态、执行状态、等待状态、就绪状态和终止状态。通过系统设计,实现进程相关数据结构的创建和查看功能;实现多种进程调度算法:先来先服务算法、优先级调度算法、时间片轮转法等;实现对执行进程的阻塞,对等待进程的唤醒等功能。进程的转换过程如下
2、设计方案
2.1 软硬件环境 ● 硬件设备: PC 机
● 软件设备:WINDOWSXP 、Microsoft Visual C++ 6.0 2.2、开发工具
● 由于现在使用的操作系统大多数都是微软公司的产品,为了更好更贴近的模拟操作系
统中进程调度功能,我们选择使用C++语言,开发平台Microsoft Visual C++ 6.0,借助MFC 来完成应用Windows 应用程序的开发。另外通过课余时间的学习,对Windows 应用程序的开发过程也有一些了解,很想学以致用,做点使用的东西加深对学习过的知识的理解与吸收。 2.3、思路
● 进程根据外界条件的不断变化引起状态的改变,可以利用系统时间片的大小、进程执
行时间、进入主存的时间、系统内存大小、以及调度算法的选择来作为条件对进程进行调度。通过在对话框中添加按钮、文本编辑框、列表等控件,并为控件关联相应的变量和消息函数,实现各个控件内部以及控件之间的协同工作,并使用定时器进行时间的设置,从而完成系统所要求的进程调度工作。Windows 应用程序,操作系统,计算机硬件之间的相互关系如下:
3、程序功能模块设计(程序功能模块划分及层次等)
3.1、总体模块
3.2、部分模块
3.3、详细功能描述
●根据需要设置系统内存的大小
●选择不同的进度调度算法进行进程调度模拟
●设置进程的各种属性值创建进程
●根据进程不同的状态放在不同的位置显示进程调度过程中的动态变化情况
●在某一时间点击按钮进行进程调度模拟
●进程调度模拟过程中可以暂停调度过程,查看进程的状态变化过程
●通过双击状态列表中的某个进程可以查看进程的各属性值
●对执行进程、就绪进程进行强制“阻塞”操作
●对等待进程进行强制“就绪”操作
●将没有执行完毕的进程进行强制“杀死”操作
4、程序总控流程图
(见下页)
5、数据结构设计
5.2、进程状态结构
6、程序代码结构
●程序主要函数如下,各函数通过关联相关变量进行消息传递
●CProgressExDlg::CProgressExDlg(CWnd* pParent /*=NULL*/)
: CDialog(CProgressExDlg::IDD, pParent)
构造函数,调用基类CProgressExDlg,并传递两个参数:一个CProgressExDlg类的IDD成员,一个是父窗口指针。
●void CProgressExDlg::DoDataExchange(CDataExchange* pDX)
主要用来完成对话框数据的交换和校验。
●void CProgressExDlg::OnButPause()
用于暂停进程调度操作
●void CProgressExDlg::OnButStart()
用于启动进程调度
●void CProgressExDlg::OnButton1()
用于复位,清除各进程
●void CProgressExDlg::OnButton2()