OS中处理机调度模型和调度算法
- 调度层次
1.1. 高级调度(长程调度,作业调度)
功能:根据某种算法,把在外存队列上处于后备队列的那些作业调入内存,以作业为操做对象。
作业:比程序更为广泛的概念,不仅包含通常的程序和数据,还包含一份作业说明书,系统根据作业说明书对程序的运行进行控制。
作业步:每个作业都要经过若干个相对独立而又相互关联的顺序加工步骤才能得到结果,我们把每一个步骤称为一个作业步。
作业流:若干个作业进入系统后被依次存放在外存上,这样便形成了输入的作业流。
作业控制块(JCB):JCB是作业在系统中存在的标志,保存着系统对作业进行管理和调度所需的全部信息,具体包含的内容根据系统而异。
作业调度 的作用:
- 决定接纳多少个作业
- 决定接纳那些
1.2. 中级调度(中程调度,对换)
功能:将暂时不能运行的进程调到外存上,使其处于外存就绪状态或者外存挂起状态,提高系统的利用率和吞吐量。
3. 低级调度 (短程调度,进程调度)
功能:最基本的一种调度 ,主要用来保存处理机的现场信息(进行进程调度时首先保存当前进程的现场信息,将现场信息保存到该进程PCB的相应位置),按某种算法选取进程(根据算法选进程),把处理机分配给进程(由进程分配程序将处理机分配给进程)。
基本机制:排队器,分派器,上下文切换机制。
- 排队器: 事先将系统的就绪队列中所有的就绪进程按照一定的方式排成一个或者是多个队列。
- 分派器:将进程调度程序所选定的的进程从就绪队列中取出。
- 上下文切换机制: 对处理机进行切换时,会出现两次的上下文切换。系统首先保存当前进程的上下文,装入分派程序的上下文;最后移除分派程序,把选中的进程的CPU现场信息装入各个相应的寄存器。
调度方式:抢占式 || 非抢占式
- 非抢占式:一旦将处理机分配个某进程,不管运行多长时间,决不允许因为时钟中断而抢占处理机,也不允许其他进程抢占已经分配给他的处理机。除非进程执行结束或者是其自身由于某种原因而发生了阻塞时,才会把处理机交个其他的进程。
- 抢占式:允许调度程序基于某种原则而暂停当前正在占用处理机的进程,而将处理机分配给其他的进程。(原则:优先权原则,短作业(进程)优先原则,时间片原则)
- 调度队列模型及准则
2.1 调度队列模型
2.1.1 仅有进程调度的调度队列模型:
每个进程在执行时都可能出现以下三种情况:
(1) 任务在给定的时间片内已经完成,该进程便在释放处理机后进入完成状态
(2) 任务在本次分得的时间片内尚未完成,OS便将该任务再放入就绪队列的末尾;
(3) 在执行期间,进程因为某事件而被阻塞后,被OS放入阻塞队列。
2.1.2 具有低级和高级调度的队列模型:
由作业调度按一定的作业调度算法,从外存的后备队列中选择一批作业调入内存,并为它们建立进程,送入就绪队列,然后才由进程调度按照一定的进程调度算法选择一个进程,把处理机分配给该进程。
2.1.3 三级调度队列模型:
在引入中级调度之后,将进程的就绪状态分为内存就绪和外存就绪,类似的也可以将阻塞状态进行划分,分为内存阻塞和外存阻塞,在调度操作下,进程可以由内存阻塞转换为外存阻塞。
2.2 调度准则
2.2.1 面向用户:
(1)周转时间短:所谓周转时间,是指从作业被提交给系统开始,到作业完成为止这段时间间隔。
其包含四部分时间:1>作业在外存后备队列等待调度时间,2>进程在就绪队列上等待调度时间,3>进程在cpu上执行的时间,4>进程等待I/O操作完成时间。
平均周转时间:全部作业的周转时间总和与作业数量的比值。T=1n[∑ni=1Ti]
带权周转时间:作业的周转时间T和系统为它提供服务的时间Ts之比W=TTs
平均带权周转时间:W=1n[∑ni=1TiTs]
(2)响应时间快:所谓的响应时间,是指从用户提交一个请求开始,到系统首次产生响应为止的时间。是选择分时系统中进程调度的重要准则之一。
(3)截止时间的保证:所谓截止时间,是指某任务必须开始执行的最迟时间,挥着必须完成的最迟时间。是评价实时系统的重要指标。
(4)优先权原则: 在选择调度算法时,均可遵循优先权原则,让紧急的任务得到及时的处理。必要时要采用抢占式的调度方式,才能保证紧急作业及时处理。
2.2.2 面向系统:
系统吞吐量高,处理机利用率好,各类资源平衡利用。
2.3 调度算法
(1)先来先服务算法(FCFS):最简单的调度算法,既可用于作业调度,也能用于进程调度。应用在作业调度时,每次都是从后备作业队列中选择一个或者多个最早进入该队列的作业,将其调入内存,为其分配需要的资源,创建进程,添加入就绪队列尾部。应用在进程调度时,每次调度都是从就绪队列中选择一个最早进入对列中的进程,为其分配处理机,直到该进程放弃处理机。
优缺点:有利于长作业(进程),不利于短作业(进程)
(2)短作业(进程)优先算法(SJF/SPF):从后备队列中选择一个或者多个估计运行时间短的作业或者进程,将他们调入内存或者是为其分配处理机。
优缺点:能明显的改善平均带权周转时间,尤其是对短作业而言。但是该算法对长作业不利,而且未考虑作业的紧迫程度,在实际执行过程中,评判依据只是用户提供的估计执行时间,而用户有可能无意或者有意的缩短估计运行时间,导致不一定能真正的做到短作业优先。
(3)高优先权优先调度算法(FPF):可用于作业调度和进程调度,当进行调度时,选择若干个优先权高的作业或者是进程调入内存或者是为其分配处理机。
优先权的确定分为两类:
(3.1)静态优先权:在创建进程时优先权便已经确定,并且在整个运行期间保持不变。确定依据有:1>进程类型(通常系统进程的优先权高于一般用户的优先权)2>进程对资源的需求(对资源要求少的应该赋予较高的优先权)3>用户要求(由用户进程的紧迫程度以及用户所付费用来确定优先权)
(3.2)动态优先权:动态优先权是指在创建进程时所赋予的优先权,是可以随进程的推进或随其等待时间的增加而改变的,以便获得更好的调度性能。
优缺点:能很好的体现作业(进程)紧急程度,并根据优先级来进行调度,但是要调度前要比较或者计算作业的优先级,增加了系统的开销。
(4)高响应比优先算法:为每个作业引入动态的优先权,使得作业的优先权随着等待时间的增加而以速率a提高。
优先权=等待时间+要求服务时间要求服务时间=响应时间要求服务时间
优缺点:该算法既照顾了短作业,又考虑了作业到达的先后次序,不会使得长作业长时间得不到服务。但是该算法每次调度前都要进行响应比的计算,增加系统的开销。
(5)基于时间片的轮转调度算法:
基本原理:系统将所有的就绪进程按先来先服务的原则排成一个队列,每次调度都将cpu交给队首的进程,令其执行一个时间片的时间,执行的时间片用完就令该进程放弃时间片,并将其挂入队尾进行下一次的等待。
时间片大小的确定(核心):在时间片轮转法中,最核心的就是时间片大小的额确定,时间片大小对系统的性能有很大的影响。时间片太短,有利于短作业,但会频繁的发生中断,,进程上下文的切换,增加系统开销;时间片太长,使得每一个进程在一个时间片单位内都能完成任务,算法便退化成了FCFS算法,无法满足交互式需求。最为合理的是,时间片略大于一次典型的交互所需的时间。
优缺点:基于时间片轮转,能让每个任务都有时间得到执行,有较好的交互性,缺点是时间片的确定比较复杂。
(6)多级反馈队列调度算法:
原理:
(1)设置多个就绪队列,并为各个队列赋予不同的优先级。 第一个队列的优先级最高,第二个队列次之,其余各队列的优先权逐个降低。该算法赋予各个队列中进程执行时间片的大小也各不相同,在优先权愈高的队列中,为每个进程所规定的执行时间片就愈小。
(2)当一个进程进入内存时,首先将其放入第一队列,按FCFS原则排队等候调度。当调度到该进程时,若能在时间片内完成,便撤离系统,若在一个时间片内未完成,将其挂入第二队列队尾,再按照FCFS原则进行排队等候,之后按照第一队列的方式进行执行。
(3)仅当第一队列空闲时,才会调度第二队列中的进程,仅当第1~(i-1)队列均空闲时,才会调度第i队列中的进程。
优缺点:有较好的性能,能很好的满足各类型用户的需求,缺点是有很多的排队队列,要消耗系统资源。