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队列中的进程。
优缺点:有较好的性能,能非常好的满足各类型用户的需求,缺点是有非常多的排队队列,要消耗系统资源。
来源:oschina
链接:https://my.oschina.net/u/4341484/blog/4020150