- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2013级《操作系统原理》课程设计
第 PAGE 1 页共 6 页
《操作系统原理》课程设计
全套设计加扣 3346389411或3012250582
题目:动态优先数高者优先进程调度算法
目的
1.加深对进程和进程调度概念的理解;
2.熟练C/C++/VC开发工具的使用;
3.熟悉文件读写操作;
4.掌握基本的windows编程技巧。
内容
使用C/C++/VC编写和调试进程调度算法的模拟程序。调度算法采用动态优先数高者优先的原则。
最终程序要求
(1)具有图形界面;
(2)能动态显示地显示每个进程在每个CPU时间片的状态;
(3)使用文件记录调度过程,便于时候查看。
进程模拟的基本原理
下表定义进程PCB的结构(具体编程时可以适当删减部分成员变量):
序号
成员变量
意义或操作方法
1
进程名称 ID
进程的标识
2
优先数 PRIORITY
越大优先权越高,在运行期间可以被动态改变。
3
到达时间 ENTERTIME
进程输入的时间
4
进程余下运行时间ALLTIME
进程开始为全部时间,运行完毕ALLTIME = 0
5
已使用CPU时间 USEDTIME
每在CPU上运行1个时间片就加1
6
连续运行时间 RUNTIME
进程就绪前已经连续运行RUNTIME个时间片
7
连续就绪时间 READYTIME
进程运行前已连续就绪READYTIME个时间片
8
进程状态 STATE
三个状态:READY、RUNNING、FINISHED
9
队列指针 NEXT
用来将PCB排成队列
10
代权周转时间 RIGHTTIME
(ENDTIME-ENTERTIME)/USEDTIME
11
结束时间 ENDTIME
进程输出的时间
pcb结构体如图所示
每个进程的状态可以是就绪READY、运行RUNNING或结束END三种状态之一,见下图。
调度原则的详细解释:
进程的优先数及需要的运行时间可以事先人为指定(也可以由随机数产生);
进程的到达时间为进程输入的时间;
进程的运行时间以时间片为单位进行计算;
进的状态可以是就绪READY、运行RUNNING或完成FINISHED三种状态;
每1个时间片结束都重新依据优先数高者优先的算法来调度进程;
进程在就绪队列中每等待1个时间片,其优先数加1;
进程每运行1个时间片,其优先数减3,并置其于就绪状态等待重新调度;
进程每运行1个时间片,其“已使用CPU时间 USEDTIME”加1;
如果运行1个时间片后,进程的“已使用CPU时间 USEDTIME”已达到所需要的运行时间,则撤消该进程;
如果运行1个时间片后,进程的“已使用CPU时间 USEDTIME”还未达所需要的运行时间,也就是进程还需要继续运行,此时应将进程的优先数减3,然后把它插入就绪队列等待CPU;
每进行一次调度程序都打印一次运行进程、就绪队列、以及各个进程的 PCB数据,以便事后进行检查和分析;
重复以上过程,直到所要进程都完成为止。
开发环境
VS2013
实验过程
编写界面
使用MFC图形化界面设计界面,模仿实验任务中的示例进行界面设计
核心代码
进程调度算法
技术难点
难点一:图形界面和MFC程序的运行机制
难点二:动态优先级算法的实现
程序流程
1.用定时器实现时间片;
2.取出作业判断是否finish,是则判断是否为最后一个作业,是则全部完成,否则改变其相应变量,运行几个时间片。取下一个,直到完成;
3.每个时间片刷新一次界面。
4.结束的和强制结束的都从队列删除并加入到finishpcb队列;
5.定时刷新结束页面。
6.中止CPU,则是killtiimer,步进则是将一个时间片运行的代码再运行一遍。
7.设置:工程中设置了对应的几个全局变量。
8.结束进程:点击获取list control 中的一行信息,主要是获取PID,从队列中删除即可。
9.创建进程:创建新的PCB,获取输入框的信息赋值给PCB相应的值,添加到队列。
最终程序的界面
主界面
点击新任务添加进程
输入或使用默认值,点击添加到列表添加到新进程队列。
点击确定批量添加
点击设置进行相关参数设置
关于
点击中止CPU可停止运转,并可使用步进功能
点击步进按钮可实现动态显示地显示每个进程在每个CPU时间片的状态
程序运行的日志文件
此功能未完成
文档评论(0)