时间片轮转强占式短进程优先算法操作系统报告.docx
- 文档编号:12521744
- 上传时间:2023-04-19
- 格式:DOCX
- 页数:9
- 大小:168.16KB
时间片轮转强占式短进程优先算法操作系统报告.docx
《时间片轮转强占式短进程优先算法操作系统报告.docx》由会员分享,可在线阅读,更多相关《时间片轮转强占式短进程优先算法操作系统报告.docx(9页珍藏版)》请在冰豆网上搜索。
时间片轮转强占式短进程优先算法操作系统报告
课程设计任务书
学生姓名:
专业班级:
指导教师:
工作单位:
题目:
进程调度模拟设计——时间片轮转、强占式短进程优先算法
初始条件:
1.预备内容:
阅读操作系统的处理机管理章节内容,对进程调度的功能以及进程调度算法有深入的理解。
2.实践准备:
掌握一种计算机高级语言的使用。
要求完成的主要任务:
(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
1.模拟进程调度,能够处理以下的情形:
⑴能够选择不同的调度算法(要求中给出的调度算法);
⑵能够输入进程的基本信息,如进程名、到达时间和运行时间等;
⑶根据选择的调度算法显示进程调度队列;
⑷根据选择的调度算法计算平均周转时间和平均带权周转时间。
2.设计报告内容应说明:
⑴课程设计目的与功能;
⑵需求分析,数据结构或模块说明(功能与框图);
⑶源程序的主要部分;
⑷测试用例,运行结果与运行情况分析;
⑸自我评价与总结:
)你认为你完成的设计哪些地方做得比较好或比较出色;
)什么地方做得不太好,以后如何改正;
)从本设计得到的收获(在编写,调试,执行过程中的经验和教训);
)完成本题是否有其他方法(如果有,简要说明该方法);
)对实验题的评价和改进意见,请你推荐设计题目。
时间安排:
设计安排一周:
周1、周2:
完成程序分析及设计。
周2、周3:
完成程序调试及测试。
周4、周5:
验收、撰写课程设计报告。
(注意事项:
严禁抄袭,一旦发现,抄与被抄的一律按0分记)
指导教师签名:
年月日
系主任(或责任教师)签名:
年月日
进程调度模拟设计——
时间片轮转、强占式短进程优先算法
1需求分析
时间片轮转法的基本思路是让每个进程在就就绪队列中的等待时间与享受服务的时间成正比例.轮转法的基本概念是将CPU的处理时间分成固定大小的时间片。
如果一个进程在被调度选中之后用完了系统规定的时间片,但为完成要求的任务,则它自行释放自己所占有CPU二排到就列的末尾,等待下一次调度。
同时进程调度程序又去调度当前就绪队列中的第一个进程或作业。
在批处理为主的系统中,如果采用FCFS方式进程作业调度,虽然系统开销小,算法简单,但是,如果估计执行时间很短的作业时在那些长作业的后面到达系统的话,则必须等待长作业执行完成之后才有机会获得执行。
这将造成不必要的等待和不公平,最短作业优先法就是选择那些估计需要执行时间最短的作业投入执行,为它们创建进程和分配资源。
直观上说,采用最短作业优先的调度算法,可使得系统在同一时间内处理的作业个数最多,从而吞吐量也就大于其它调度方式。
2功能设计
2.1数据结构
需要为进程创建一个进程控制块PCB,因为PCB是进程存在的唯一标识,PCB包含有进程名,进程到达时间,进程估计运行的时间,进程开始运行时间,进程仍需运行的时间,进程完成的时间,进程运行的次数,周转时间,带权周转时间(周转时间/估计运行时间),定义指向下一个进程的指针。
structPCB
{
stringname;//进程名
intta;//进程到达时间
intts;//进程估计运行的时间
inttb;//进程开始运行时间
inttm;//进程仍需运行的时间
intto;//进程完成的时间
intrn;//进程运行的次数
inttotalTime;//周转时间
doubleweightTotalTime;//带权周转时间(周转时间/估计运行时间)
PCB*next;//定义指向下一个进程的指针
};
2.2模块说明
PCB*create(PCB*head);//创建进程队列
voiddel(PCB*p);//删除p的下一个节点
voidsort(PCB*head);//将进程按到达的先后顺序排列
intgetCount(PCB*head,inttime);//察看在time之前到达但未移动到运行队列的进程数量
PCB*searchEnd(PCB*head);//查找并返回循坏队列的尾节点
voidmove(PCB*headF,PCB*headT,intn);//将headF后的n个节点移动到循环队列headT中
voidcyclerun(PCB*head);//时间片轮转算法
PCB*SJF(PCB*head,intcount);//在头节点后的count个节点中选择需时间最小的返回
voidSJFrun(PCB*head);//强占式短进程优先算法
3开发平台
MicrosoftWindows7操作系统;MicrosoftVisual2010。
4测试用例
4.1运行结果
选择进程调度算法:
选择时间片轮转算法:
输入1
再输入2选择抢占式短进程优先算法:
最后输入3结束。
4.2运行情况分析
可以看出运行结果完全正确,时间片轮转法先调用进程a,因为时间片设置的是2,所以运行2之后,a进程就排到就绪队列末,b进程在第三秒就到了,现在已经到第四秒了,故调度进程b,2秒之后,b进程到队列末,调用进程c,到此为止,a、b、c进程都没运行完,又开始调用a进程,调用一秒就结束了,结束时间为第9秒,队列链表就释放了该进程,然后调用进程b两秒,又被排到队列末尾,接着调用进程c一秒,c进程就结束了,结束时间为第12秒,被释放,最后调用进程b,b只需运行一秒就结束,结束时间为第13秒。
抢占式短进程优先算法也运行正确。
该算法先将队列按进程到达时间从小到大排好顺序,然后每次调用一次进程,时间time就增加一秒,继续循环,直到time的值比进程的总运行时间加上第一个进程的执行的时间大就终止循环。
5自我评价与总结
5.1特点
该程序的结构非常清晰,每一个功能都用一个函数来实现,方便以后的移植,
5.2收获与体会
首先通过这次课程设计最大的收获就是对于结构体有了很深的认识,以前学习c++的时候,结构体对我来说是很头痛的,对于它的认识也只是基本课本上的知识,而且还是朦朦胧胧的状态,这个程序是对结构体使用的最好例子,所以我也掌握了在什么时候使用结构体是最好的。
其次是对操作系统中段式存储管理的知识有了更深入的学习,也对操作系统中很重要的虚拟存储器有了更全面的认识。
最后是对课程设计的理解。
课程设计是联系实际的一个课题,它让我们把课本上的知识和实际联系起来,对于我们缺乏实战经验的大学生来说是必不可少的。
因为课程设计是联系实际的课题,所以相对我们学习到的知识来说是更难,考虑的因素更多更复杂,每每到学期末,我对课程设计是比较烦恼的,但经过几次的锻炼之后,我开始慢慢的找到了对课程设计的感觉,以前只觉得课程设计很难,但现在我得到的另外一个理解是课程设计对我们很有帮助,可以很好的提高我们对实际问题的分析能力,能够很好的激发我们的思维。
其次是对我们c语言的学习有很大的提高,通过几次的课程设计,我明显的感觉到自己的编程能力有了很大的改观,我开始对c语言有了更强烈的兴趣。
因为c语言的无比强大,所以完成这个程序应该有其他的方法,只是自己的c语言知识有限,暂时还不了解用其他方法的实现过程。
6参考文献
[1]张尧学,史美林,张高.计算机操作系统教程(第3版).清华大学出版社.2006.10
[2]闵联营,何克右.C++程序设计教程.武汉理工大学出版社.2005.07
本科生课程设计成绩评定表
班级:
计算机0 姓名:
学号:
序号
评分项目
满分
实得分
1
学习态度认真、遵守纪律
10
2
设计分析合理性
10
3
设计方案正确性、可行性、创造性
20
4
设计结果正确性
40
5
设计报告的规范性
10
6
设计验收
10
总得分/等级
评语:
注:
最终成绩以五级分制记。
优(90-100分)、良(80-89分)、中(70-79分)、
及格(60-69分)、60分以下为不及格
指导教师签名:
201年 月 日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 时间 轮转 强占 进程 优先 算法 操作系统 报告