操作系统课程设计进程调度模拟.docx
《操作系统课程设计进程调度模拟.docx》由会员分享,可在线阅读,更多相关《操作系统课程设计进程调度模拟.docx(47页珍藏版)》请在冰豆网上搜索。
操作系统课程设计进程调度模拟
计算机科学与工程学院
综合设计报告
设计名称:
操作系统软件综合设计
设计题目:
进程调度算法模拟
学生学号:
专业班级:
学生姓名:
学生成绩:
指导教师(职称):
课题工作时间:
2013-6-17至2013-6-28
说明:
1、报告中的第一、二、三项由指导教师在综合设计开始前填写并发给每个学生;四、五两项(中英文摘要)由学生在完成综合设计后填写。
2、学生成绩由指导教师根据学生的设计情况给出各项分值及总评成绩。
3、指导教师评语一栏由指导教师就学生在整个设计期间的平时表现、设计完成情况、报告的质量及答辩情况,给出客观、全面的评价。
4、所有学生必须参加综合设计的答辩环节,凡不参加答辩者,其成绩一律按不及格处理。
答辩小组成员应由2人及以上教师组成。
5、报告正文字数一般应不少于5000字,也可由指导教师根据本门综合设计的情况另行规定。
6、平时表现成绩低于6分的学生,取消答辩资格,其本项综合设计成绩按不及格处理。
7、此表格式为武汉工程大学计算机科学与工程学院提供的基本格式(适用于学院各类综合设计),各教研室可根据本门综合设计的特点及内容做适当的调整,并上报学院批准。
成绩评定表
学生姓名:
学号:
班级:
类别
合计
分值
各项分值
评分标准
实际得分
合计得分
备注
平时表现
10
10
按时参加综合设计,无旷课、迟到、早退、违反实验室纪律等情况。
完成情况
30
20
按设计任务书的要求完成了全部任务,能完整演示其设计内容,符合要求。
10
能对其设计内容进行详细、完整的介绍,并能就指导教师提出的问题进行正确的回答。
报告质量
35
10
报告文字通顺,内容翔实,论述充分、完整,立论正确,结构严谨合理;报告字数符合相关要求,工整规范,整齐划一。
5
课题背景介绍清楚,综述分析充分。
5
设计方案合理、可行,论证严谨,逻辑性强,具有说服力。
5
符号统一;图表完备、符合规范要求。
5
能对整个设计过程进行全面的总结,得出有价值的结论或结果。
5
参考文献数量在3篇以上,格式符合要求,在正文中正确引用。
答辩情况
25
10
在规定时间内能就所设计的内容进行阐述,言简意明,重点突出,论点正确,条理清晰。
15
在规定时间内能准确、完整、流利地回答教师所提出的问题。
总评成绩:
分
补充说明:
指导教师:
(签字)
日期:
2013年6月28日
答辩记录表
学生姓名:
学号:
班级:
答辩地点:
答辩内容记录:
答辩成绩
合计
分值
各项分值
评分标准
实际得分
合计得分
备注
25
10
在规定时间内能就所设计的内容进行阐述,言简意明,重点突出,论点正确,条理清晰。
15
在规定时间内能准确、完整、流利地回答教师所提出的问题。
答辩小组成员(签字):
2013年6月28日
指导教师评语
指导教师:
(签字)
日期:
2013年6月27日
一、综合设计目的、条件、任务和内容要求:
[目的]
设计程序来模拟进程调度的四种调度算法。
通过进程调度程序的设计,熟悉和了解进程控制块、进程队列、调度算法等概念,从而加深和理解处理机管理的核心内容,加深对操作系统原理课程的理解,巩固已经学过的基础课及专业课知识,开阔学生的视野,锻炼学生的自学能力及独立动手能力等。
[条件]
计算机,VisualC++或者JDK开发平台(MyEclipse)
[任务]
1.用语言来实现对n个进程采用不同调度算法的调度进程
2.每个用来标识进程的进程控制块PCB用结构来描述,包括以下字段:
(1)进程优先数ID,其中0为闲逛进程,用户进程的标识数为1,2,3…。
(2)进程优先级Priority,闲逛进程(idle)的优先级为0,用户进程的优先级大于0,且随机产生,优先数越大,优先级越高。
(3)进程占用的CPU时间CPUtime,进程每运行一次,累计值等于4。
(4)进程总共需要运行时间Alltime,利用随机函数产生。
(5)进程状态,0:
就绪态;1:
运行态;2:
阻塞态。
3.优先数改变的原则
(1)进程在就绪队列中每呆一个时间片,优先数增加1。
(2)进程每运行一个时间片,优先数减3。
4.。
[内容要求]
(1)提示用户选择想要模拟的进程调度算法,并输入待执行的进程的数目n。
(2)由系统自动创建n+1个进程控制块(第一个作为头结点暂且不用),为每一个进程控制块进行初始化设置,并且链接成一个链表,作为一个就绪队列。
(3)按照用户的要求选择一个进程调度算法来执行。
(4)输出进程调度算法执行后的结果。
(5)提示用户进行下一轮的进程调度算法模拟。
指导教师签字:
2013年6月15日
二、进度安排:
1.发题:
2013.6.15
2.17周完成基本设计。
3.18周完成程序调试。
4.18周完成说明书的书写,其中说明书的内容包括:
第一章、概述
第二章、进程调度设计思想和方法
第三章、进程调度程序和结果
第四章、结束语
第五章、参考文献
5.18周周四答辩。
三、应收集资料及主要参考文献:
1.严蔚敏;吴伟民.数据结构(C语言版)[M].北京:
清华大学出版社.2007年4月.
2.严蔚敏;吴伟民.数据结构教程学习指导[M].北京:
清华大学出版社.2005年4月.
3.叶核亚.数据结构(Java版)(第2版)[M].北京:
电子工业出版社.2008年7月.
4.汤子瀛.计算机操作系统(修订版)[M].西安:
西安电子科技大学出版社.2001年8月.
5.谭耀铬.操作系统(2007版)[M].北京:
中国人民大学出版社.2007年7月.
6.张永常.Java程序设计实用教程[M].北京:
电子工业出版社.2006年8月.
7.谭浩强.C程序设计(第二版)[M].北京:
清华大学出版社.1999年12月.
四、综合设计(课程设计)摘要(中文):
在OS中调度的实质是一种资源分配,因而调度算法是指:
根据系统的资源分配策略所规定的资源分配算法。
进程调度常用的算法有:
先来先服务调度、优先级调度、时间片轮转调度和多级反馈队列调度。
本次课程设计将就模拟先来先服务、时间片轮转、短作业优先、优先级和多级反馈队列五种调度算法进行设计并对他们的性能进行比较,程序提供了创建进程,选择进程调度算法的基本功能。
首先应该设计数据结构,创建进程结构体,然后认真设计每一个进程调度的算法,并运用程序加以实现,算法设计完毕后调试整体程序并测试,比较在不同环境下各种进程调度的优劣。
目前存在的多种调度算法中,有的短发适用于作业调度,有的算法适用于进程调度;但也有些调度算法既可用于作业调度,也可用于进程调度。
关键词:
进程;进程调度;数据结构;算法
五、综合设计(课程设计)Abstract(英文):
TheOSschedulingisakindofresourceallocationinessence,andschedulingalgorithmisaresourceallocationalgorithmbasedonthesystemofresourceallocationalgorithmprinciples.Processschedulingalgorithmscommonlyusedare:
afirst-comefirst-servedscheduling,priorityscheduling,round-robinschedulingandmulti-leverfeedbackqueueschedulingalgorithms,andcomparingtheirperformance.Programprovidesthecreationprocess,choosingthebasicfunctionofprocessschedulingalgorithms.
First,thedatastructureshouldbedesignedtocreateastructure.Then,schedulingalgorithmsshouldbedesignedcarefullyforeachprocess,andusetheprogramtoachievethoseprocess.Algorithmsschedulingiscompletedafterthewholeprogramdebugging,debuggingiscompletedafterthetestingprocedures,andcomparingthedifferentoperatingenvironmentsintheprocessofschedulinginprosandcons.
Therearemanykindsofschedulingalgorithms.Someissuitableforjobscheduling,andsomeisforprocessscheduling.Buttherearesomeschedulingalgorithmswhicharebothsuitableforjobschedulingandprocessscheduling.
Keywords:
Process;ProcessScheduling;DataStructure;Algorithm
摘要
在OS中调度的实质是一种资源分配,因而调度算法是指:
根据系统的资源分配策略所规定的资源分配算法。
进程调度常用的算法有:
先来先服务调度、优先级调度、时间片轮转调度和多级反馈队列调度。
本次课程设计将就模拟先来先服务、时间片轮转、短作业优先、优先级和多级反馈队列五种调度算法进行设计并对他们的性能进行比较,程序提供了创建进程,选择进程调度算法的基本功能。
首先应该设计数据结构,创建进程结构体,然后认真设计每一个进程调度的算法,并运用程序加以实现,算法设计完毕后调试整体程序并测试,比较在不同环境下各种进程调度的优劣。
目前存在的多种调度算法中,有的短发适用于作业调度,有的算法适用于进程调度;但也有些调度算法既可用于作业调度,也可用于进程调度。
关键词:
进程;进程调度;数据结构;算法
Abstract
TheOSschedulingisakindofresourceallocationinessence,andschedulingalgorithmisaresourceallocationalgorithmbasedonthesystemofresourceallocationalgorithmprinciples.Processschedulingalgorithmscommonlyusedare:
afirst-comefirst-servedscheduling,priorityscheduling,round-robinschedulingandmulti-leverfeedbackqueueschedulingalgorithms,andcomparingtheirperformance.Programprovidesthecreationprocess,choosingthebasicfunctionofprocessschedulingalgorithms.
First,thedatastructureshouldbedesignedtocreateastructure.Then,schedulingalgorithmsshouldbedesignedcarefullyforeachprocess,andusetheprogramtoachievethoseprocess.Algorithmsschedulingiscompletedafterthewholeprogramdebugging,debuggingiscompletedafterthetestingprocedures,andcomparingthedifferentoperatingenvironmentsintheprocessofschedulinginprosandcons.
Therearemanykindsofschedulingalgorithms.Someissuitableforjobscheduling,andsomeisforprocessscheduling.Buttherearesomeschedulingalgorithmswhicharebothsuitableforjobschedulingandprocessscheduling.
Keywords:
Process;processscheduling;datastructure;algorithm
第一章课题背景
1.1课题背景
在多道程序环境下,主存中有着多个进程,其数目往往多于处理机数目,要使这多个进程能够并发地执行、这就要求系统能按某种算法,动态的把处理机分配给就绪队列中的一个进程,使之执行。
分配处理机的任务是由处理机调度程序完成的。
由于处理机时最重要的计算机资源,提高处理机的利用率几改善系统(吞吐量、响应时间)在很大程度上取决于处理机调度性能的好坏,因而,处理机调度便成为操作系统设计的中心问题之一[1]。
1.2进程调度简介
进程调度的对象时进程(或内核级线程),它是一种基本的调度,在单批道处理、分时和实现三种类型的OS中,都必须配置这级调度[2]。
1.2.1进程调度的功能
(1)记录系统中所有进程的执行情况
作为进程调度的准备,进程管理模块必须将系统中各进程的执行情况和状态特征记录在各进程的PCB表中。
并且,根据各进程的状态特征和资源需求等、进程管理模块还将各进程的PCB表排成相应的队列并进行动态队列转接。
进程调度模块通过PCB变化来掌握系统中存在的所有进程的执行情况和状态特征,并在适当的时机从就绪队列中选择出一个进程占据处理机。
(2)选择占有处理机的进程
进程调度的主要功能是按照一定的策略选择—个处于就绪状态的进程,使其获得处理机执行。
根据不同的系统设计目的,有各种各样的选择策略,例如系统开销较少的静态优先数调度法,适合于分时系统的轮转法(RoundRoLin)和多级互馈轮转法(RoundRobinwithMultip1efeedback)等。
这些选择策略决定了调度算法的性能。
(3)进行进程上下文切换
—个进程的上下文(context)包括进程的状态、有关变量和数据结构的值、机器寄存器的值和PCB以及有关程序、数据等。
一个进程的执行是在进程的上下文中执行。
当正在执行的进程由于某种原因要让出处理机时,系统要做进程上下文切换,以使另一个进程得以执行。
当进行上下文切换时点统要首先检查是否允许做上下文切换(在有些情况下,上下文切换是不允许的,例如系统正在执行某个不允许中断的原语时)。
然后,系统要保留有关被切换进程的足够信息,以便以后切换回该进程时,顺利恢复该进程的执行。
在系统保留了CPU现场之后,调度程序选择一个新的处于就绪状态的进程、并装配该进程的上下文,使CPU的控制权掌握在被选中进程手中[3]。
1.2.2引起进程调度的原因
(1)正在执行的进程执行完毕或因发生某事件而不能再继续执行;
(2)执行中的进程因提出I/O请求而暂停执行;
(3)在进程通信或同步过程中执行了某种原语操作如P操作、阻塞、挂起原语等;
(4)在可剥夺式调度中,有比当前进程优先权更高的进程进入就绪队列;
(5)在时间片轮转法中,时间片完[4];
1.2.3进程调度方式
进程调度有非抢占方式和抢占方式两种:
非抢占方式:
一旦将处理机分配给某进程后,不管它要运行多长时间,都要一直让他运行下去,绝不会因为时钟中断等原因而抢占正在运行的处理机,也不允许其他进程抢占已经分配给他的处理机。
直到该进程完成,自愿释放处理机。
抢占方式:
这种调度方式允许调度程序根据某种原则去暂停某个正在执行的进程,将已经分配给该进程的处理机重新分配给另一个进程。
但抢占调度方式基于以下原则:
优先权原则、段作业进程优先原则、时间片原则[5]。
1.2.4进程调度的功能
进程调度的具体功能可总结为如下几点:
(1)记录系统中所有进程的执行情况
(2)作为进程调度的准备,进程管理模块必须将系统中各进程的执行情况和状态特征记录在各进程的PCB表中。
并且,根据各进程的状态特征和资源需求等、进程管理模块还将各进程的PCB表排成相应的队列并进行动态队列转接。
进程调度模块通过PCB变化来掌握系统中存在的所有进程的执行情况和状态特征,并在适当的时机从就绪队列中选择出一个进程占据处理机。
(3)选择占有处理机的进程
(4)进程调度的主要功能是按照一定的策略选择—个处于就绪状态的进程,使其获得处理机执行。
根据不同的系统设计目的,有各种各样的选择策略,例如系统开销较少的静态优先数调度法,适合于分时系统的轮转法(RoundRoLin)和多级互馈轮转法(RoundRobinwithMultip1efeedback)等。
这些选择策略决定了调度算法的性能。
(3)进行进程上下文切换
—个进程的上下文(context)包括进程的状态、有关变量和数据结构的值、机器寄存器的值和PCB以及有关程序、数据等。
一个进程的执行是在进程的上下文中执行。
当正在执行的进程由于某种原因要让出处理机时,系统要做进程上下文切换,以使另一个进程得以执行。
当进行上下文切换时点统要首先检查是否允许做上下文切换(在有些情况下,上下文切换是不允许的,例如系统正在执行某个不允许中断的原语时)。
然后,系统要保留有关被切换进程的足够信息,以便以后切换回该进程时,顺利恢复该进程的执行。
在系统保留了CPU现场之后,调度程序选择一个新的处于就绪状态的进程、并装配该进程的上下文,使CPU的控制权掌握在被选中进程手中[6]。
1.3课题目的
通过课程设计, 加深对操作系统各资源管理模块的理解,掌握操作系统的基本原理及功能, 具有初步分析实际操作系统、设计、构造和开发现代操作系统的基本能力。
1.4课题意义
本次课程设计主要是进一步了解操作系统中的进程调度,能够熟练运用C++编程实现进程调度的基本功能。
为之后的学习和实习打下了一定的基础。
通过进程调度程序的设计,熟悉和了解进程控制快、进程队列、调度算法等概念,从而加深和理解处理机管理的核心内容,加深对操作系统原理课程的理解,巩固已经学过的基础课及专业课知识,开阔学生的视野,锻炼学生的自学能力及独立动手能力等。
第二章设计简介及设计方案论述
2.1步骤简介
(1)提示用户选择想要模拟的进程调度算法,并输入待执行的进程的数目n。
(2)由系统自动创建n+1个进程控制块(第一个作为头结点暂且不用),为每一个进程控制块进行初始化设置,并且链接成一个链表,作为一个就绪队列。
(3)按照用户的要求选择一个进程调度算法来执行。
(4)输出进程调度算法执行后的结果。
(5)提示用户进行下一轮的进程调度算法模拟。
2.2设计要点
1.用语言来实现对n个进程采用不同调度算法的调度进程
2.每个用来标识进程的进程控制块PCB用结构来描述,包括以下字段:
(1)进程优先数ID,其中0为闲逛进程,用户进程的标识数为1,2,3…。
(2)进程优先级Priority,闲逛进程(idle)的优先级为0,用户进程的优先级大于0,且随机产生,优先数越大,优先级越高。
(3)进程占用的CPU时间CPUtime,进程每运行一次,累计值等于4。
(4)进程总共需要运行时间Alltime,利用随机函数产生。
(5)进程状态,0:
就绪态;1:
运行态;2:
阻塞态。
3.优先数改变的原则
(1)进程在就绪队列中每待一个时间片,优先数增加1。
(2)进程每运行一个时间片,优先数减3[7]。
2.3具体方案
2.3.1设计数据结构
设计一种数据结构Process,提供关于进程的一些有效信息:
进程名,运行总时间,
剩余时间,优先级。
typedefstructQNode{
stringProcessName:
//进程名
intPriority:
//进程优先级
intAllTime;//进程运行需要时间
intLeftTime:
//完成进程还需的时间
)Node,,kProcess:
2.4.2调度算法及设计原理
1.先来先服务调度算法:
先按照进入CPU的时间将所有进程一次存入队列(先进入CPU的存在靠近
队首位置),然后每次将队首位置的进程调入内存,为他分配资源,投入运行,
直到该进程完全运行完毕,再接着调入队首进程,直到队列为空。
2.时间片轮转调度算法:
所有就绪进程按先来先服务的原则排成一个队列,将新来的进程加到就绪
对列的末尾,每当执行进程调度时,总是把处理机分配给队首的进程,各进程
占用CPU的时间片相同。
也就是说CPU的处理时间划分成一个个相同的时间片,
就绪队列的所有进程轮流运行一个时间片。
当一个时间片结束时,如果运行进
程用完它的时间片后还未完成,就强迫运行进程让出CPU,就把它送回到就绪队
列的末尾,等待下一次调度。
同时,进程调度又去选择就绪队列中的队首进程,
分配给它一时间片,以投入运行。
直至所有的进程运行完毕。
3.优先级调度算法:
进程调度每次是把CPU分配给就绪队列中优先数最高的进程。
可以先将所
有就绪进程按照优先级由大到小的顺序排列,依次存入队列,然后每次优先运
行队首进程,直到队列为空。
4.短作业优先调度算法:
先将所有就绪队列按照剩余时间由小到大的顺序排列,并依次存入队列,
再按照先来先服务方法执行下去。
5.多级反馈队列调度算法:
允许进程在队列之间移动。
在系统中设置多个就绪队列,每个队列对应一个优先级,第一个队列的优先级最高,第二队列次之。
以下各队列的优先级逐步降低。
各就绪队列中的进程的运行时间片不同,高优先级队列的时间片小,低优先级队列的时间片大。
进程并非总是固定在某一队列中,新进程进入系统后,被存放在第一个队列的末尾。
如果某个进程在规定的时间片内没有完成工作,则把它转入到下一个队列的末尾,直至进入最后一个队列。
系统先运行第一个队列中的进程。
当第一队列为空时,才运行第二个队列中的进程。
依此类推,仅当前面所有的队列都为空时,才运