操作系统课程设计完成版
更新时间:2023-10-17 19:20:01 阅读量: 综合文库 文档下载
操作系统原理课程设计
题目:进程调度
代码下载地址
http://download.csdn.net/detail/liuwenbin2012/7637075 http://down.51cto.com/data/1489164
院 系: 计算机科学与技术(工) 班级学号: 计11 -2(1,13,14) 姓 名: 刘文斌(组长,14) 同组成员: 刘国志(13)、祝万超(1)
指导教师: 张威
2014 年 7 月 16日
操作系统原理课程设计任务书
一、题目:进程调度 二、设计要求
(1)刘文斌负责总体设计、界面设计和高优先权优先调度算法;祝万超负责设计与实现先来先服务算法;刘国志负责设计与实现时间片轮转算法;共同完成一些基础函数的设计与实现。
(2)查阅相关资料,自学具体课题中涉及到的新知识。
(3)采用结构化、模块化程序设计方法,功能要完善,具有一定的创新。 (4)所设计的程序应有输入、输出。
(5)按要求写出课程设计报告,于设计结束后2天内提交。其主要内容包括:封皮、课程设计任务书,指导教师评语与成绩、目录、概述、软件总体设计、详细设计、软件的调试、总结、致谢、附录(带中文注释的程序清单)、参考文献。总体设计应配合软件总体模块结构图来说明软件应具有的功能;详细设计应用传统或N-S流程图和屏幕抓图说明;调试的叙述应配合出错场景的抓图来说明出现了哪些错误,如何解决的。
三、课程设计工作量
一般每人的程序量在200行有效程序行左右,不得抄袭。
四、课程设计工作计划
2014年7月6日,指导教师讲解布置题目,学生根据题目准备资料; 2014年7月6日,进行总体方案设计;
2014年7月7日~2014年7月10日,完成程序模块并通过独立编译;
2014年7月11日~2014年7月16日,将各模块集成为一完整的系统,并录入足够数据
进行调试运行;
2014年7月17日~2014年7月18日,验收、撰写课程设计报告。
指导教师签章: 专业主任签章:
操作系统原理课程设计指导教师评语与成绩
指导教师评语: 课程设计表现成绩: 课程设计验收成绩: 课程设计报告成绩: 课程设计 总成绩: 指导教师签章 2014年 7 月 18 日
目录
一.课程概述 ............................................................................................................................................................1
1.1.设计构想 ....................................................................................................................................................1 1.2.需求分析 ....................................................................................................................................................1 1.3.理论依据 ....................................................................................................................................................1 1.4.课程任务 ....................................................................................................................................................1 二.总体方案设计 ....................................................................................................................................................2
2.1程序结构 ......................................................................................................................................................2 三.详细设计 ............................................................................................................................................................3
3.1.界面设计 ......................................................................................................................................................3
3.1.1.进程属性控制 ................................................................................................................................3 3.1.2.进程算法 ........................................................................................................................................3 3.1.3.进程运行状态显示 ........................................................................................................................4 3.1.4.设置停顿时间 ................................................................................................................................4 3.1.5.设置时间片 ....................................................................................................................................5 3.1.6.菜单 ................................................................................................................................................5 3.2.先来先服务调度 ..........................................................................................................................................6
3.2.1算法思想 .......................................................................................................................................6 3.2.2.算法代码 ........................................................................................................................................6 3.2.3.算法流程图 ....................................................................................................................................7 3.3.时间片轮转调度 ..........................................................................................................................................8
3.3.1.算法思想 .......................................................................................................................................8 3.3.2.算法流程图 ....................................................................................................................................8 3.3.3.程序代码 ........................................................................................................................................9 3.4.优先级调度 ..................................................................................................................................................9
3.4.1.算法思想 ........................................................................................................................................9 3.4.2.算法流程图 ................................................................................................................................10 3.4.3.程序代码 ......................................................................................................................................10 3.5.基础函数 .................................................................................................................................................... 11
3.5.1.进度条设置 .................................................................................................................................. 11 3.5.2.创建进程PBC ............................................................................................................................... 11 3.5.3.更新进程运行状态显示 ..............................................................................................................12 3.5.4.判断当前进程是否创建 ..............................................................................................................13 3.5.5.创建时间队列 ..............................................................................................................................13 3.5.6.判断所有进程是否完成 ..............................................................................................................14 3.5.7.创建优先权队列 ..........................................................................................................................14 3.5.8.先来先服务线程函数 ..................................................................................................................15 3.5.9.时间片轮转线程函数 ..................................................................................................................15 3.5.10.高优先级线程函数 ....................................................................................................................16 3.5.11.保存输入框修改线程函数 ........................................................................................................16 3.5.12.保存输入框修改 ........................................................................................................................16 3.5.13.子线程向主线程发送消息 ........................................................................................................16
四. 程序的调试与运行结果说明 ........................................................................................................................17
4.1.界面 ............................................................................................................................................................17
4.1.1问题1 ............................................................................................................................................17
4.2.先来先服务调度 ........................................................................................................................................17
4.2.1问题1 ............................................................................................................................................17 4.3.时间片轮转调度 ........................................................................................................................................18
4.3.1问题1 ............................................................................................................................................18 4.3.2问题2 ..............................................................................................................................................18 4.4.高优先级优先调度 ....................................................................................................................................19
4.4.1问题1 ............................................................................................................................................19 4.5基础函数调试 ...........................................................................................................................................20
4.5.1问题1 ............................................................................................................................................20 4.5.2问题2 ............................................................................................................................................20
五.课程设计总结 ..................................................................................................................................................21 六.后记 ..................................................................................................................................................................21 七.致谢 ..................................................................................................................................................................22 八.附录 ..................................................................................................................................................................22
8.1.进程状态宏 ................................................................................................................................................22 8.2.进程队列结点 ............................................................................................................................................22 8.3.主框架构造函数 ........................................................................................................................................22 8.4.界面控件与类变量链接 ............................................................................................................................23 参考文献 ..................................................................................................................................................................24
一.课程概述
1.1.设计构想
程序能够完成以下操作: 1、创建进程。
2、修改进程的优先级、创建时间、服务时间。
3、启动进程算法,先来先服务、时间片轮转、高优先级优先调度。 4、进程运行状态显示。
1.2.需求分析
在多道程序环境下,主存中有着多个进程,其数目往往多于处理机数目,要使这多个进程能够并发地执行,这就要求系统能按某种算法,动态地把处理机分配给就绪队列中的一个进程,使之执行。分配处理机的任务是由处理机调度程序完成的。由于处理机是最重要的计算机资源,提高处理机的利用率及改善系统必(吞吐量、响应时间),在很大程度上取决于处理机调度性能的好坏,因而,处理机调度便成为操作系统设计的中心问题之一。本次实验在vs2010环境下实现先来先服务调度算法,时间片轮转调度算法和高优先权调度算法。
1.3.理论依据
为了描述和管制进程的运行,系统为每个进程定义了一个数据结构——进程控制块
PCB(Process Control Block),PCB中记录了操作系统所需的、用于描述进程的当前情况以及控制进程运行的全部信息,系统总是通过PCB对进程进行控制,亦即,系统是根据进程的PCB而不是任何别的什么而感知进程的存在的,PCB是进程存在的惟一标志。本次课程设计用结构体ProNode代替PCB的功能。
1.4.课程任务
1、用C语言(或C++)编程实现操作模拟操作系统进程调度子系统的基本功能;运用多种算法实现对进程的模拟调度。
2、通过编写程序实现进程或作业先来先服务、按时间片轮转、高优先权,使学生进一步掌握进程调度的概念和算法,加深对处理机分配的理解。
3、用MFC实现程序界面。
1.5.功能模块分析:
1、进程概念:进程是被独立分配资源的最小单位。进程是动态概念,必须程序运行才有进程的产生。 2、进程的状态模型: (1)完成:进程已经完成。
(2)就绪:进程已经准备好,一旦有处理器就可运行。
3、处理机调度:在多道程序设计系统中,内存中有多道程序运行,他们相互争夺处理机这一重要的资源。处理机调度就是从就绪队列中,按照一定的算法选择一个进程并将处理机分配给它运行,以实现进程并发地执行。
4、进程调度算法的功能:
记录系统中所有进程的执行情况、选择占有处理机的进程、进行进程的上下文切换。
5、进程调度的算法:
(1)先来先服务算法:如果早就绪的进程排在就绪队列的前面,迟就绪的进程排在就绪队列的后面,那么先来先服务总是把当前处于就绪队列之首的那个进程调度到运行状态。
(2)时间片轮转算法:固定时间片,每个进程在执行一个时间片后,轮到下一进程
执行,知道所有的进程执行完毕。处理器同一个时间只能处理一个任务。处理器在处理多任务的时候,就要看请求的时间顺序,如果时间一致,就要进行预测。挑到一个任务后,需要若干步骤才能做完,这些步骤中有些需要处理器参与,有些不需要(如磁盘控制器的存储过程)。不需要处理器处理的时候,这部分时间就要分配给其他的进程。原来的进程就要处于等待的时间段上。经过周密分配时间,宏观上就象是多
1
个任务一起运行一样,但微观上是有先后的,就是时间轮换。
(3)优先数算法:即进程的执行顺序由高优先级到低优先级。系统或用户按某种原则为进程指定一个优先级来表示该进程所享有的确调度优先权。该算法核心是确定进程的优先级。
二.总体方案设计
2.1程序结构
程序一共添加了4个线程,分别是保存修改线程,先来先服务线程,时间片轮转线程,高优先权优先服务线程。
优 先 级
2
进程调度主模块 进程控制界面 进程调度算法 进程状态界面 创建时间 服务时间 先来先服务算法 时间片轮转算法 高优先权优先调度算法 图2.1程序结构图
三.详细设计
3.1.界面设计
图3.1. 界面设计
3.1.1.进程属性控制
图3.1.1.进程属性控制
3.1.2.进程算法
图3.1.2.进程算法
3
3.1.3.进程运行状态显示
.
图3.1.2.进程算法
3.1.4.设置停顿时间
图3.1.4设置停顿时间
3.1.4.1相关类及其主要函数 class SetTime : public CDialogEx { DECLARE_DYNAMIC(SetTime)
public: SetTime(CWnd* pParent = NULL); // 标准构造函数 virtual ~SetTime();
// 对话框数据 enum { IDD = IDD_SETTIME };
protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 DECLARE_MESSAGE_MAP() public: int m_time; };
SetTime::SetTime(CWnd* pParent /*=NULL*/) : CDialogEx(SetTime::IDD, pParent) , m_time(3)
4
{ }
3.1.5.设置时间片
图3.1.5设置时间片
3.1.5.1相关类及其主要函数 class Seep : public CDialogEx { DECLARE_DYNAMIC(Seep)
public: Seep(CWnd* pParent = NULL); // 标准构造函数 virtual ~Seep();
// 对话框数据 enum { IDD = IDD_SLEEP };
protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 DECLARE_MESSAGE_MAP() public: int m_sleep; };
3.1.6.菜单
图3.1.5设置时间片
3.1.6.1保存输入框修改 void CprogressDlg::OnSave() { CWinThread *MainStartThread; LPVOID lmainparam = (LPVOID)this;//把this指针作为参数传进去
5
MainStartThread=::AfxBeginThread( ThreadFuncSave, (LPVOID)lmainparam, THREAD_PRIORITY_NORMAL, 0, 0, NULL ); }
3.1.6.2设置时间片大小 void CprogressDlg::OnSetrr() { SetTime dlg; if( dlg.DoModal() == IDOK) { m_timerr = dlg.m_time; } }
3.1.6.3设置停顿时间
void CprogressDlg::OnSeeptime() { Seep dlg; if(dlg.DoModal() == IDOK) { m_sleep = dlg.m_sleep; } }
3.2.先来先服务调度
3.2.1算法思想
先来先服务调度算法的思想是按照进程进入就绪队列的先后顺序调度并分配处理机执行。先来先服务调度算法是一种不可抢占的算法,先进入就绪队列的进程,先被处理机运行。一旦一个进程占有了处理机,它就一直运行下去,直到该进程完成工作或者因为等待某事件而不能继续运行时才释放处理机。 3.2.2.算法代码
void CprogressDlg::FCFS(void) { int i=0,j; CreateTimeArray();//创建时间数组 while(!IsFinish()) { //找出已创建的进程 while(!IsCreate(m_time[i]) || m_pronode[m_time[i]].prostate == FINISH) { ++i;
6
if(i==5) { m_systime += 1; i=0; ProShow();//更新进程运行状态 } } //进程服务 for(j=0; j 3.2.3.算法流程图 开始 初始化PCB,输入 进程信息 进程按先后顺序进入就绪队列 就绪队列空? N 运行 进程所需CPU时 间 撤销该进程 Y 结束 图3.2.先来先服务调度流程图 7 3.3.时间片轮转调度 3.3.1.算法思想 所有就绪进程按先来先服务的原则排成一个队列,将新来的进程加到就绪对列的末尾,每当执行进程调度时,总是把处理机分配给队首的进程,各进程占用CPU的时间片相同。也就是说CPU的处理时间划分成一个个相同的时间片,就绪队列的所有进程轮流运行一个时间片。当一个时间片结束时,如果运行进程用完它的时间片后还未完成,就强迫运行进程让出CPU,就把它送回到就绪队列的末尾,等待下一次调度。同时,进程调度又去选择就绪队列中的队首进程,分配给它一时间片,以投入运行。直至所有的进程运行完毕。 3.3.2.算法流程图 开始 初始化PCB,输入进程信息 各进程按顺序插入就绪队列 Y 就绪队列空? 结束 N 就绪队列第一个投入运行 时间片到,计数器加一,CPU时间加一,所需时间减一 到达所需的运行时间 进程完成,撤销该进程 插入到就绪队列的尾部 图3.3.时间片轮转调度流程图 8 3.3.3.程序代码 void CprogressDlg::RR(void) { int i=0; CreateTimeArray();//创建时间数组 while(!IsFinish()) { //找出已创建的进程 while(!IsCreate(m_time[i]) || m_pronode[m_time[i]].prostate == FINISH) { ++i; if(i>=5) { m_systime += 1; i=0; ProShow();//更新进程运行状态 } } //进程服务 for(int r=0; r 3.4.优先级调度 3.4.1.算法思想 进程的执行顺序由高优先级到低优先级,系统或用户按某种原则为进程指定一个优先级来表示该进程所享有的确调度优先权。该算法核心是确定进程的优先级。 9 3.4.2.算法流程图 开始 创建进程队列(优先级) Y 是否完成 N 取出进程 N 是否创建 Y 运行进程 图3.4.优先级调度流程图 结束 3.4.3.程序代码 void CprogressDlg::HPHS(void) { int i=0; CreateProArray();//创建时间数组 while(!IsFinish()) { i=0; //找出已创建的进程 while(!IsCreate(m_pro[i]) || m_pronode[m_pro[i]].prostate == FINISH) { ++i; if(i==5) 10 解决办法: 窗口对象消除了,但是对象的数据还没有被析构函数清除。 修改该代码 m_timerr = dlg.GetDlgItemInt(IDC_TIMEEDIT); 改成m_timerr = dlg.m_time; 五.课程设计总结 通过做本实验,我在以前学过的知识的基础上有了提高,学到了很多新知识:比如将用户作业和就绪进程按提交的顺序或变为就绪状态的先后排成队列,并按照先来先服务的方式进行调度。调度时从后备队列中选择若干优先权最高的个作业进入内存;或从就绪队列中选择优先权最高的进程,将处理机分配给它。对进程优先、进程或作业先来先服务、按时间片轮转调度算法以及进程调度的概念和算法,有了更深入的认识!初步理解了操作系统对于作业处理的基本思想!了解到算法很重要,又更加明白算法本身可以节约时间,而且不同的函数之间在调用的时候要注意很多的问题。在动手操作过程中,体会到了成功的喜悦和遇到问题自己解决的能力,对于我来说是一次提高,让自己多多的在实践中可以加深对理论的理解,也让我明白了以后应该如何更好,更高效的学习。 六.后记 经过两周的时间,课程设计终于完成了,他锻炼了我查阅资料,进行方案构思的能力。在设计过程中,我按照实验要求逐步完善设计方案,较好的完成了设计任务。 这次课程设计,由于理论知识的不足,再加上平时没有设计经验,一开始有些手忙脚乱,不知从何入手。但在组员们的热情帮助下,使我顺利地完成了设计。虽然困难很多,但是我尽了自己最大的努力去克服,然而还是难免有些疏忽和遗漏的地方。 这次课程设计对我而言是对计算机操作系统课程内容掌握情况的一次自我验证和对以前所学的各种计算机语言的一种检验,从而有着极其重要的意义。通过这次课程设计提高了对所学知识的综合应用能力。 21 七.致谢 我们全组人员感谢给过我帮助和关注的所有人,更加感谢张威老师带领我们完成这次课程设计,指出我们的不足之处,鼓励我们继续努力。组长我感谢组员的默契配合与相互合作。谢谢大家 八.附录 8.1.进程状态宏 #define #define FINISH READY 0 1 8.2.进程队列结点 struct ProNode{ int pro;//优先级 int createtime;//创建时间 int servetime;//服务时间 int finishpart;//完成部分 int prostate;//进程状态 int rr;//是否加入数组 }; 8.3.主框架构造函数 CprogressDlg::CprogressDlg(CWnd* pParent /*=NULL*/) : CDialogEx(CprogressDlg::IDD, pParent) {m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); m_systime = 0; m_pri1 = 2; m_pri2 = 4; m_pri3 = 1; m_pri4 = 3; m_pri5 = 5; m_cre1 = 4; m_cre2 = 3; m_cre3 = 8; m_cre4 = 2; m_cre5 = 10; m_ser1 = 9; m_ser2 = 8; m_ser3 = 12; m_ser4 = 6; m_ser5 = 10; m_timerr = 3; m_sleep = 450; } 22 8.4.界面控件与类变量链接 void CprogressDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); DDX_Text(pDX, IDC_PRIORITY1, m_pri1); DDV_MinMaxInt(pDX, m_pri1, 1, 5); DDX_Text(pDX, IDC_PRIORITY2, m_pri2); DDV_MinMaxInt(pDX, m_pri2, 1, 5); DDX_Text(pDX, IDC_PRIORITY3, m_pri3); DDV_MinMaxInt(pDX, m_pri3, 1, 5); DDX_Text(pDX, IDC_PRIORITY4, m_pri4); DDV_MinMaxInt(pDX, m_pri4, 1, 5); DDX_Text(pDX, IDC_PRIORITY5, m_pri5); DDV_MinMaxInt(pDX, m_pri5, 1, 5); DDX_Text(pDX, IDC_CREATE1, m_cre1); DDV_MinMaxInt(pDX, m_cre1, 0, 50); DDX_Text(pDX, IDC_CREATE2, m_cre2); DDV_MinMaxInt(pDX, m_cre2, 0, 50); DDX_Text(pDX, IDC_CREATE3, m_cre3); DDV_MinMaxInt(pDX, m_cre3, 0, 50); DDX_Text(pDX, IDC_CREATE4, m_cre4); DDV_MinMaxInt(pDX, m_cre4, 0, 50); DDX_Text(pDX, IDC_CREATE5, m_cre5); DDV_MinMaxInt(pDX, m_cre5, 0, 50); DDX_Text(pDX, IDC_SERVE1, m_ser1); DDV_MinMaxInt(pDX, m_ser1, 1, 30); DDX_Text(pDX, IDC_SERVE2, m_ser2); DDV_MinMaxInt(pDX, m_ser2, 1, 30); DDX_Text(pDX, IDC_SERVE3, m_ser3); DDV_MinMaxInt(pDX, m_ser3, 1, 30); DDX_Text(pDX, IDC_SERVE4, m_ser4); DDV_MinMaxInt(pDX, m_ser4, 1, 30); DDX_Text(pDX, IDC_SERVE5, m_ser5); DDV_MinMaxInt(pDX, m_ser5, 1, 30); DDX_Control(pDX, IDC_PROGRESS1, m_proctrl1); DDX_Control(pDX, IDC_PROGRESS2, m_proctrl2); DDX_Control(pDX, IDC_PROGRESS3, m_proctrl3); DDX_Control(pDX, IDC_PROGRESS4, m_proctrl4); DDX_Control(pDX, IDC_PROGRESS5, m_proctrl5); } 23 参考文献 [1] 计算机操作系统. 梁小丹 梁红兵 哲凤屏 汤子瀛 编著.西安电子科技大学出版社,2007. [2] 数据结构(C语言版). 严蔚敏 吴伟民 编著.北京:清华大学出版社,2007. [3] C语言程序设计. 马秀丽 刘志妩 李筠 编著.北京:清华大学出版社,2008. [4]面向对象程序设计与VC++实践 揣锦华 编著 西安:西安电子科技大学出版社,2005(2008重印) 24
正在阅读:
操作系统课程设计完成版10-17
改革开放三十年中国经济周期与宏观调控08-11
八年级上册历史教案08-26
我被老师批评了作文600字06-23
当孕妈妈遭遇甲状腺疾病时10-27
剩余电流断路器项目可行性研究报告(技术工艺+设备选型+财务方案+厂区规划)方案设计12-19
2019年中考化学真题分类汇编12金属和金属材料综合4图像题无答案10110-03
树立正确恋爱观主题班会09-22
应用文格式txt08-10
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 操作系统
- 完成
- 课程
- 设计
- 三菱变频器的使用注意事项
- 暑期普法宣传社会实践报告册 - 图文
- 七年级下学期实践活动教学总结
- 土门关初中教师摄影比赛活动简报 - 图文
- 关于六一儿童节的作文:阳光下的笑脸 - 450字word版本(1页)
- 3合同通用条款
- 工商管理毕业论文 - 论企业如何建设团队精神
- 定稿高二化学试卷、答题卡和答案(1)
- 减速箱体加工工艺及夹具设计完整版
- 05 初三化学第五单元综合检测题(A卷)
- 冷冻干燥蔬菜加工项目可行性研究报告
- Unit 4 Wildlife Protection教师版
- 大工18春《单片机原理及应用》大作业题目及要求(资料)
- 高层钢结构的抗火防腐问题
- 《足球:假动作变向带球突破》教案 - 图文
- 2012常州房地产分析 - 图文
- 班主任漫谈
- 阅读资料2:现值
- 幼儿园体育游戏
- 安全保证及应急预案