课程设计(论文)课程名称计算机操作系统题目名称调度算法学部(系)专业班级学号学生姓名指导教师2013 年 12 月 31 日课程设计(论文)任务书一、课程设计(论文)的内容用户使用操作系统的主要目的是作业处理。
一个作业进入系统到运行结束,一般需经历收容、运行、完成三个阶段,与这三个阶段对应的作业处于后备、运行和完成三种状态。
作业调度的主要功能是按照某种原则从后备作业队列中选取作业进入主存,并为作业做好运行前的准备工作和作业完成后的善后处理工作。
常用的作业调度算法有:先来先服务、短作业优先、响应比高者优先、优先数优先等调度算法。
衡量作业调度算法性能的主要指标有:作业的周转时间、作业的平均周转时间和平均带权周转时间。
二、课程设计(论文)的要求与数据(1)需求分析(2)系统设计(3)模块代码能正常运行(4)提供合理的测试数据(5)设计说明文档三、课程设计(论文)应完成的工作(1)采用模块化的程序设计方法,程序书写符合规范,代码应完善。
(2)要有运行结果和过程的界面截图。
(3)对系统进行初步的错误和漏洞检测;(4)根据论文规范撰写论文,用A4纸打印并按时提交。
四、课程设计(论文)进程安排五、应收集的资料及主要参考文献[1]郁红英,李春强.《计算机操作系统》北京:清华大学出版社,2008[2]凤羽.《操作系统》.北京:电子工业出版社,2004[3]孟静.《操作系统原理教程》.北京:清华大学出版社,2000[4]周苏、金海溶.《操作系统原理实验》.北京: 科学出版社,2000[5]孟庆昌.《操作系统教程》.北京:电子工业出版社,2004[6]陈向群,杨芙清.《操作系统教程》.2版.北京:北京大学出版社,2006[7]黄干平,陈洛资,等.《计算机操作系统》.北京:科技出版社,1989[8]冯耀林,杜舜国.《操作系统》.西安:西安电子科技大学出版社,1989[9]黄祥喜.《计算机操作系统实验教程》.广州:中山大学出版社,1994发出任务书日期: 2013 年 12 月 1 日指导教师签名:计划完成日期: 2013 年 12 月 31 日随着社会科学技术的迅猛发展,计算机以它卓越的进步已经遍布各行各业,其实计算机本身就是一堆废铁,而操作系统使它有了生命和灵魂,操作系统就相当于人的各个组织,如果没有操作系统那计算机就像一个植物人一样,毫无价值。
操作系统是配置在计算机上的第一层软件,是对硬件系统的首次扩充。
它在计算机系统中占据了特别重要的地位,很多系统软件以及大量的应用软件都依赖于操作系统的支持,取得它的服务。
在计算机系统上所配置的操作系统的主要目标与计算机系统的规模和操作系统的应用环境有关,而操作系统在计算机系统中所起的作用也可以从不同的角度来观察。
操作系统已成为从大型机直至微型机都配置的软件,在不同的操作系统中采用的调度方式是不同的,它不仅是计算机与用户之间的接口,也是计算机资源的管理者。
当今的的计算机已经从无操作系统到单道批处理系统再发展到多道程序系统然后是分时系统和实时系统。
在多道程序系统中,一个作业被提交后必须经过处理机调度后,方能获得处理机执行。
作业是一个比程序更为广泛的概念,它不仅包含了通常的程序和数据,而且还应配有一分作业说明书,系统根据该说明书来对程序的运行进行控制。
在批处理系统中,是以作业为基本单位从外存调入内存的。
对于批量型作业而言,通常要经历作业调度和进程调度两个过程方能获得处理机。
为了管理和调度作业,在多道批处理系统中为每个作业设置了一个作业控制块,即PCB(Job Control Block)每当作业进入系统是,系统便为每个作业创建一个PCB,根据作业类型将它插入相应的后备队列中,作业调度程序根据一定的算法来调度它们,被调度到的作业将会装入内存。
作业调度的主要功能是根据作业控制块中的信息,审查系统能否满足用户作业的资源需求,以及按照一定的算法,从外存的后备队列中选取某些作业调入内存,并为它们创建进程,分配必要的资源,然后,再将新创建的进程排在就绪队列上,准备准备执行。
每次执行作业调度时,都需要做以下两个决定:1.接纳多少个作业,取决于多道程序度即允许多少个作业同时在内存中运行,多道程序度的确定是根据系统的规模和运行速度等情况做适当的折中。
2.接纳哪些作业,取决于采用的调度算法。
作业调度的算法主要包括三种:先来先服务算法、短作业优先调度算法和高响应比优先调度算法。
本系统采用结构体定义作业的数据类型,用数组接纳各个作业,通过把创建的JCB结构体组织成链,用不同算法循环测试处理的每个作业,来确定各个作业接受系统服务的次序,从而输出每个算法对作业处理结果,即平均周转时间。
从而确定哪种算法对于本次的作业调度是最佳的算法。
关键词操作系统,作业调度,调度算法,优先权,响应比,平均周转时间,最佳算法1 序言 (1)2 设计原理 (1)2.1先来先服务调度算法 (2)2.2短作业优先调度算法 (2)2.3高响应比优先调度算法 (2)3 程序分析 (3)3.1系统操作 (3)3.2程序功能结构图 (3)3.3程序功能流程图 (4)3.3.1创建作业流程图 (4)3.3.2先来先服务调度算法流程图 (4)3.3.3短作业优先调度算法流程图 (4)3.3.4响应比优先调度算法流程图 (5)3.3.5总结最优调度算法流程图 (6)4 程序的实现 (6)4.1主函数程序实现 (6)4.1.1主程序实现功能 (6)4.1.2主程序实现代码 (7)4.2创建作业函数的实现 (8)4.2.1函数说明 (8)4.2.2创建函数实现代码 (8)4.3先来先服务函数 (9)4.3.1函数说明 (9)4.3.2先来先服务代码 (9)4.4短作业优先函数 (10)4.4.1函数说明 (11)4.4.2短作业优先代码 (11)4.5响应比高者优先函数 (13)4.5.1函数说明 (13)4.5.2响应比高者优先代码 (13)4.6总结函数 (15)4.6.1 函数说明 (15)4.6.2总结函数实现代码 (15)5 系统运行结果 (16)5.1主函数运行界面 (16)5.2创建函数运行界面 (16)5.3先来先服务调度算法运行界面 (17)5.4短作业优先函数运行界面 (18)5.5响应比高者优函数运行结果 (18)5.6总结函数运行界面 (19)总结 (20)参考文献 (21)1 序言本次课程设计的题目为作业调度,其调度算法分别为先来先服务调度算法、短作业优先调度算法、高响应比优先调度算法。
作业调度的主要功能是根据作业控制块中的信息,审查系统能否满足用户作业的资源需求,以及按照一定的算法,从外存的后备队列中选取某些作业调入内存,并为它们创建进程、分配必要的资源。
然后再将新创建的进程插入就绪队列,准备执行。
每个系统在选择作业调度算法时,既应考虑用户的要求,又能确保系统具有较高的效率。
在每次执行作业调度时,都须做出两个决定,一是决定接纳多少个作业;二是决定接纳哪些作业。
在OS中调度的实质是一种资源分配,因而调度算法是指:根据系统的资源分配策略所规定的资源分配算法。
对于不同的系统和系统目标,通常采用不同的调度算法。
先来先服务调度算法是一种最简单的调度算法,每次调度都是从后备作业队列中选择一个或多个最先进入该队列的作业,将它们调入内存,为它们分配资源、创建进程,然后放入就绪队列。
短作业优先调度算法是指对短作业优先调度的算法。
短作业优先的调度算法是从后备队列中选择一个或若干个估计运行时间最短的作业,将它们调入内存运行。
高响应比优先调度算法,是指将就绪队列中排序的优先权最高的作业调入内存执行。
在高响应比调度算法中,优先权的计算公式为:优先权=(等待时间+要求服务时间)/要求服务时间,该算法既照顾了短作业,又考虑了作业到达的先后次序,不会使长作业长期得不到服务。
因此,该算法实现了一种较好的折衷。
当然,在利用该算法时,每要进行调度之前,都须先做响应比的计算,这会增加系统开销。
在执行高响应比优先调度算法时,每有一个作业调入内存运行后就需根据最后一次调入内存的业状态计算就绪队列中的其它作业的优先权。
在编写程序时,调度算法前建立系统源文件扩展名为.txt,利用创建(输入)函数creat()向源文件中输入作业流,把作业的基本信息输入到文件中,如:作业的名称、作业的提交时间、作业的运行时间。
作业初始排序为到达时间先后(即先来先服务调度排序作业流)。
采用高响应比优先调度算法时,从就绪队列中选出优先权最高的作业调入内存执行,系统自动将处理机分配给它,使它立即执行并一直执行到完成。
该程序代码中执行的操作步骤主要为以二进制模式打开源文件,利用高响应比优先调度算法在就绪队列中选出当前优先权最高的作业调度运行,通过程序中的计算方法求出并输出该作业的开始时间、完成时间、周转时间。
2 设计原理用户使用操作系统的主要目的是作业处理。
一个作业进入系统到运行结束,一般需经历收容、运行、完成三个阶段,与这三个阶段对应的作业处于后备、运行和完成三种状态。
作业调度的主要功能是按照某种原则从后备作业队列中选取作业进入主存,并为作业做好运行前的准备工作和作业完成后的善后处理工作。
常用的作业调度算法有:先来先服务、短作业优先、响应比高者优先、优先数优先等调度算法。
衡量作业调度算法性能的主要指标有:作业的周转时间、作业的平均周转时间和平均带权周转时间。
2.1先来先服务调度算法先来先服务(FCFS)调度算法是一种最简单的调度算法。
当在作业调度中采取该算法时,每次调度都是从后备作业队列中选择一个或多个最先进入该队列的作业,将它们调入内存,为它们分配资源、创建进程,然后放入就绪对列。
当程序运行选择些算法时,我们可以输入要打开的文件名,从打开的文件中按照作业依次写入文件的顺序把已写入文件的作业流信息调入到内存中,采用FCFS算法分别求出其每个作业的开始时间、完成时间、周转时间。
FCFS算法比较有利于长作业,而不利于短作业。
最后求出平均周转时间。
最简单的调度原则是先进先出就绪队列完成。
根据作业到达就绪队列的时间来分配中央处理机,一旦一个作业获得了中央处理机,就一直运行到结束,先来先服务是非剥夺调度。
这种调度从形式上讲是公平的,但它使短作业要等待长作业的完成,重要的作业要等待不重要作业的完成。
从这个意义上讲又是不公平的。
先进先出调度使响应时间的变化较小,因此它比其它大多数调度都可预测。
由于这种调度方法不能保证良好的响应时间,在处理交互式用户时很少用这种方法。
在当今系统中,先进先出很少作为调度模式,而是常常嵌套在其它的调度模式中。
2.2短作业优先调度算法短作业优先调度算法SJF,是指对短作业或短进程优先调度的算法。
短作业(SJF)的调度算法可以照顾到实际上在所有作业中占很大比例的短作业,使它们能比长作业优先执行。