多级反馈队列Word下载.docx
《多级反馈队列Word下载.docx》由会员分享,可在线阅读,更多相关《多级反馈队列Word下载.docx(17页珍藏版)》请在冰豆网上搜索。
通过选做上面的课题,实现OS最基本模块的管理功能,重点放在数据结构设计、文档规范化和程序设计风格。
Ⅱ、设计进度及完成情况
日期
内容
6.13-6.15
选取参考书,查阅有关文献资料,完成课程设计说明书内容1部分。
完成课程设计说明书内容2-4部分
6.16~6.20
创建相关数据结构,录入源程序
6.21~6.22
调试程序并记录调试中的问题,完成课程设计说明书第5部分。
6.23
系统测试,演示设计成果,考核成绩。
6.24
整理课程设计说明书,上午11时,由学习委员交课程设计说明书(计算机科学系9#213或直接交给指导教师)
Ⅲ、主要参考文献及资料
[1]汤子赢等.计算机操作系统(第二版).西安电子科技大学出版社,2006.8
[2]冯耀霖等.操作系统,西安电子科技大学出版社.1992
[3]张尧学等.计算机操作系统教程(第2版).清华大学出版社,2001.4
[4]谭耀铭.操作系统.中国人民大学出版社,2003.4
[5]AbrahamSilberschatz,PeterGalvin&
GregGagne,AppliedOperatingSystemConcepts,HigherEducationPress,2002
Ⅳ、成绩评定:
设计成绩:
(教师填写)
指导老师:
(签字)
目
录
第一章概述……………………………………………………………1
第二章系统分析………………………………………………………2
第三章系统设计………………………………………………………3
第四章程序设计流程图或N-S图……………………………………4
第五章调试过程中的问题及系统测试情况…………………………5
第六章结束语…………………………………………………………6
附录………………………………………………………………………7
第一章概述
课程设计是实践性教学中的一个重要环节,它以某一课程为基础,可以涉及和课程相关的各个方面,是一门独立于课程之外的特殊课程。
课程设计是让同学对所学的课程更全面的学习和应用,理解和掌握课程的相关知识。
《计算机操作系统》一门重要的专业课,是开发操作系统和软件系统的理论和应用基础。
第二章系统分析
很多进程调度方法都有一定的局限性,如短进程优先的调度法,仅照顾了短进程而忽略了长进程,而且如果并未指明进程的长度,则段进程优先和基于进程长度的抢占调度算法,都将无法使用,而多级反馈队列调度算法,则不必事先知道各种进程所需的时间,而且还可以满足各种类型进程的需要,因而它是目前被公认为的一种较好的进程调度算法。
在采用多级反馈队列调度算法的系统中,调度算法的实施过程如下:
(1)应设置多个就绪队列,并为各个队列赋予不同的优先级,第一个队列的优先级是最高,第二个队列次之,其余各队列的优先权逐个降低,该算法赋予各个队列中进程执行时间片,例如,第二个队列的时间片要不第一个队列的时间片长一倍,……,第i+1个队列的时间片要比第i个队列的时间片长一倍。
(2)当一个新进程进入内存后,首先将它放入第一队列的结尾,按FCFS原则排队等待调度,当论到该进程执行时,如它能在该时间片后内完成,便可准备撤离系统,如果它在一个时间片结束尚未完成,调度程序便将该进程转入第二个队列的结尾,再同样地按FCFS原则等待调度执行;
如果它在第二队列中运行一个时间片后仍未完成,再依次将它放入第三个队列,……,如此下去,当第一长作业(进程)从第一队列依次降到第n队列后,在第n队列中便采用取按时间片轮转的方式运行。
(3)仅当第一个队列空闲时,调度程序才调度第二个队列中的进程运行,仅当第1~(i-1)队列均空闲时,才会调度第I个队列中为某进程服务时,又有新进程进入优先权比较高的队列(第1~(i-1)中的任何一个队列),则此时新进程将抢占在运行进程的处理机,即由调度程序把在运行的进程放回到第I队列的结尾,把处理机分配给新到的高有限权进程。
第三章系统设计
实现多级反馈队列的模拟。
当一个新进程进入内存后,首先将它放入第一队列的结尾,按FCFS原则排队等待调度,当论到该进程执行时,如它能在该时间片后内完成,便可准备撤离系统,如果它在一个时间片结束尚未完成,调度程序便将该进程转入第二个队列的结尾,再同样地按FCFS原则等待调度执行;
仅当第一个队列空闲时,调度程序才调度第二个队列中的进程运行,仅当第1~(i-1)队列均空闲时,才会调度第I个队列中为某进程服务时,又有新进程进入优先权比较高的队列(第1~(i-1)中的任何一个队列),则此时新进程将抢占在运行进程的处理机,即由调度程序把在运行的进程放回到第I队列的结尾,把处理机分配给新到的高有限权进程。
至CPU
(时间片:
<
)
用VB模拟的时候,可以用list来显示进程。
第四章程序设计流程图或N-S图
第五章调试过程中的问题及系统测试情况
本系统主要可视的模拟了多级反馈队列的工作过程,多级反馈队列的工作过程如下:
第六章结束语
这次操作系统课程设计,在编写过程中,遇到很多难题,特别是在操作系统实验中不曾注意到的问题,也有许多新的问题,在实际反复调试运行中,不断加深了对操作系统的理解,也很大地程度上提高了编程的能力,由于对重要概念的把握程度还不够深入,在实际理解编写时遇到很多不该发生的问题。
不过,都很好的解决并牢牢地掌握住了。
通过做多级目录文件系统,我知道了多级目录文件系统的工作原理,在打开文件时系统是如何进行操作的,并加深了理解。
希望在以后的学习中,继续保持这份昂扬的斗志,继续努力学习计算机方面的知识,永不懈怠。
通过这次课程设计,不仅让我了解了多级反馈队列的进程管理系统,更重要的还让我学会了、或者说是验证了“做事一定要有次序和对事物的总体把握”这句话。
这次操作系统实习,不仅让我对操作系统这门课程有了更深入的研究、对很多重要的概念有了巩固和掌握,还给了我今后做事的启示。
做事要塌实,不能想着一步登天,要有计划,有目的的进行做事。
盲目真的不应该再在我们新一代的大学生身上出现了,我们应该认真找到自己的缺点并且及时改正。
在这里,我感谢老师的教导。
“活到老,学到老”,这也是我整个学习过程中的一次经验、一次总结,我相信它肯定会给我今后的学习有所启示和指导作用。
附录:
源代码
#include<
stdio.h>
stdlib.h>
string.h>
typedefstructnode
/*进程节点信息*/
{
charname[20];
/*进程的名字*/
intprio;
/*进程的优先级*/
intround;
/*分配CPU的时间片*/
intcputime;
/*CPU执行时间*/
intneedtime;
/*进程执行所需要的时间*/
charstate;
/*进程的状态,W--就绪态,R--执行态,F--完成态*/
intcount;
/*记录执行的次数*/
structnode*next;
/*链表指针*/
}PCB;
typedefstructQueue
/*多级就绪队列节点信息*/
PCB*LinkPCB;
/*就绪队列中的进程队列指针*/
/*本就绪队列的优先级*/
/*本就绪队列所分配的时间片*/
structQueue*next;
/*指向下一个就绪队列的链表指针*/
}ReadyQueue;
PCB*run=NULL,*finish=NULL;
/*定义三个队列,就绪队列,执行队列和完成队列*/
ReadyQueue*Head=NULL;
/*定义第一个就绪队列*/
intnum;
/*进程个数*/
intReadyNum;
/*就绪队列个数*/
voidOutput();
/*进程信息输出函数*/
voidInsertFinish(PCB*in);
/*将进程插入到完成队列尾部*/
voidInsertPrio(ReadyQueue*in);
/*创建就绪队列,规定优先数越小,优先级越低*/
voidPrioCreate();
/*创建就绪队列输入函数*/
voidGetFirst(ReadyQueue*queue);
/*取得某一个就绪队列中的队头进程*/
voidInsertLast(PCB*in,ReadyQueue*queue);
/*将进程插入到就绪队列尾部*/
voidProcessCreate();
/*进程创建函数*/
voidRoundRun(ReadyQueue*timechip);
/*时间片轮转调度算法*/
voidMultiDispatch();
/*多级调度算法,每次执行一个时间片*/
intmain(void)
PrioCreate();
/*创建就绪队列*/
ProcessCreate();
/*创建就绪进程队列*/
MultiDispatch();
/*算法开始*/
Output();
/*输出最终的调度序列*/
return0;
}
voidOutput()
ReadyQueue*print=Head;
PCB*p;
printf("
进程名\t优先级\t轮数\tcpu时间\t需要时间\t进程状态\t计数器\n"
);
while(print)
if(print->
LinkPCB!
=NULL)
p=print->
LinkPCB;
while(p)
%s\t%d\t%d\t%d\t%d\t\t%c\t\t%d\n"
p->
name,p->
prio,p->
round,p->
cputime,p->
needtime,p->
state,p->
count);
p=p->
next;
print=print->
p=finish;
while(p!
=NULL)
needt