短作业优先调度算法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
青岛理工大学
操作系统课程设计报告
院(系):计算机工程学院
专业:计算机科学与技术专业
学生姓名:
班级:__学号:
题目:短作业优先调度算法的进程调度程序_
起迄日期:________
设计地点:
指导教师:
2011—2012年度第 1 学期
完成日期: 2012 年 1 月日
一、课程设计目的
进行操作系统课程设计主要是在学习操作系统课程的基础上,在完成操作系统各部分实验的基础上,对操作系统的整体进行一个模拟,通过实践加深对各个部分的管理功能的认识,还能进一步分析各个部分之间的联系,最后达到对完整系统的理解。同时,可以提高运用操作系统知识解决实际问题的能力;锻炼实际的编程能力、开发软件的能力;还能提高调查研究、查阅技术文献、资料以及编写软件设计文档的能力。
二、课程设计内容与要求
设计目的:在多道程序和多任务系统中,系统内同时处于就绪状态的进程可能有若干个,且进程之间也存在着同步与互斥的关系,要求采用指定的调度策略,使系统中的进程有条不紊地工作,通过观察诸进程的运行过程,以巩固和加深处理机调度的概念。
2、设计要求(多道、单处理机):
1)每一个进程有一个PCB,其内容可以根据具体情况设定。
2)可以在界面设定的互斥资源(包括两种:输入设备与输出设备)的数目
3)进程数、进入内存时间、要求服务时间可以在界面上进行设定
4)进程之间存在一定的同步与互斥关系,可以通过界面进行设定,其表示方法如下:
进程的服务时间由三段组成:I2C10O5(表示进程的服务时间由2个时间片的输入,10个时间片的计算,5个时间片的输出)
进程间的同步关系用一个段表示:W2,表示该进程先要等待P2进程执行结束后才可以运行
因此,进程间的同步与互斥关系、服务时间可以统一用四段表示为:I2C10O5W2
5)可以在运行中显示各进程的状态:就绪、阻塞、执行
6)采用可视化界面,可在进程调度过程中随时暂停调度,查看当前进程的状态以及相
应的阻塞队列
7)具有一定的数据容错性
三、系统分析与设计
1、系统分析
本系统主要是采用短作业优先算法进程的进程调度过程。短作业优先调度算法,是指对短作业或短进程优先调度的算法。他们可以分别用于作业调度和进程调度,短作业优先的调度算法是从后备队列中选择一个或若干个估计运行时间最短的作业,将他们调入内存运行。而短进程优先调度算法则是从就绪队列中选出一个估计运行时间最短的进程,将处理机分配给他,,使它立即执行并一直执行到完成,或发生某事件而被阻塞放弃处理机时再度重新调度。本程序采用了非抢占式短作业优先调度。而非抢占式这种方式,一旦把处理机分配给某进程后,便让该进程一直执行,直至该进程完成或发生某事件而被阻塞时,才再把处理机分配给其它进程,决不允许某进程抢占已经分配出去的处理机。这种调度方式的优点是实现简单,系统开销小,适用于大多数的批处理系统环境。但它难以满足紧急任务的要求——立即执行,因而可能造成难以预料的后果。因此,在要求比较严格的实时系统中,不宜采用这种调度方式本系统的主要是在满足要求多道单处理机的情况下进行短作业的优先调度。
本系统在测试时输入了五个进程,按实验要求如I2C10O5(表示进程的服务时间由2个时间片的输入,10个时间片的计算,5个时间片的输出,5个时间片的计算组成)的方式输入,各进程的信息如下:(0 0 1 1 1 )(1 2 1 2 2 )(2 4 1 1 1 )
(3 6 2 1 1 )(4 8 1 0 1),其中括号内第一个数字代表进程标识,第二个数字代表进程的到达时间,第三的字符串则代表的是服务时间,由此可得五个进程的服务时间分别为3,6,4,5,2。
进程进入内存,则按照优先级进行执行进程。主要是实现了进程执行过程的界面演示以及在暂停演示时各进程此时的状态,主要包括三种状态——就绪、执行、阻塞。同时,在暂停执行时可以查看当前时间的阻塞队列。其中进程执行界面的演示过程中用到了坐标轴,x 轴代表时间,y轴代表进程的标志(默认进程标志为0,1,2,3,4……n-1,n表示进程的个数,在计数过程中按进程的到达时间开始计数),用灰色表示一个时间片,每个进程的执行过程即可表示为时间片不断增加的过程。
下面是进程信息的输入界面,界面介绍如下:
需要录入的进程数:输入需要执行的进程的个数。
保存文件:输入数据后将自动保存进程信息,保存在txt文件中,因此输入你要
保存的txt文件的名子,或者在输入进程信息时直接输入已保存的txt文件名
(不包括扩展名.txt)便可直接点击“录入完毕”按钮,进行后续操作。
输入设备数目:主要是输入输入设备的数目。
输出设备数目:主要是输入输出设备的数目。
进入内存的时间:表示进程的到达时间。
要求服务时间:进程的服务时间由四段组成:I2C10O5(表示进程的服务时间由2个时
间片的输入,10个时间片的计算,5个时间片的输出),按此格式输入信息,
如若没有其中一步如没有计算这一步表示有0个时间片的计算,服务时间可
以表示为I2C105 。以此格式输入进程的服务时间。
“录入第1个数据“按钮:当你输入完毕第一个数据时,点击此按钮,进入第二个进程数
据信息的录入。
“录入完毕进行演示“按钮:当你将所有进程的信息输入完毕后点击此按钮。进入演示界面
进行演示。
“退出“按钮:在执行此界面的任何时刻均可点击此按钮,退出此界面。
录入完毕点击按钮“录入完毕进行执行”后便会弹出进程的执行演示界面如下:
右上角带颜色的三个矩形分别表示进程的执行状态,蓝色矩形代表进程正在执行,绿色矩形代表进程已经执行完成,红色矩形则代表进程受到阻塞。
“开始演示“按钮:点击此按钮则开始演示进程的执行过程。
“暂停演示“按钮:点击此按钮则暂停进程的演示过程。
“重新开始“按钮:点击此按钮则重新演示进程的执行过程。
“退出界面“按钮:点击此按钮则退出演示界面。
“查看阻塞队列”按钮:在点击“暂停演示”按钮之后,点击此按钮,可查看此时的阻塞队
列。
1、系统设计
本调度算法在设计的时候主要运用了四个类库。PCB类库主要是包括了要运用到得相关类有三个,Process类主要是声明了进程的相关属性以及方法结构体,GetProcess 和SetProcess类主要是对进程相关属性进行处理。Scheduling类库主要是实现短作业优先调度,同样包括三个类,BlockQueue类主要是实现对阻塞队列的处理,Rank类主要是实现按进程的优先级进行排序实现进程的短作业优先调度,SJF类主要是为了实现进程执行演示的方便设计的一个类,它声明了一个数组,将每个时刻的进程作为数组元素放入数据组中。Used类库主要是对演示界面的处理,里面包括一个类Drawing,这个