处理机调度
进程切换是CPU资源的当前占用者的切换,保存当前进程在PCB中的执行上下文(CPU状态),恢复下一个进程的执行上下文。
处理机调度是从就绪队列中找一个占用CPU的进程,从多个可用CPU中挑选就绪进程可使用的CPU资源。
调度的基本准则
-
CPU利用率: CPU是计算机系统中最重要和昂贵的资源之一,所以应尽可能使CPU 保持“忙”状态,使这一资源利用率最髙。
-
系统吞吐量: 表示单位时间内CPU完成作业的数量。长作业需要消耗较长的处理机时间,因此会降低系统的吞吐量。 而对于短作业,它们所需要消耗的处理机时间较短,因此能提高系统的吞吐量。调度算法和方式的不同,也会对系统的吞吐量产生较大的影响。
3.周转时间: 是指从作业提交到作业完成所经历的时间,包括作业等待、在就绪队列中排队、在处迤机上运行以及进行输入/输出操作所花费时间的总和。
-
等待时间:是指进程处于等处理机状态时间之和,等待时间越长,用户满意度越低。处理机调度算法实际上并不影响作业执行或输入/输出操作的时间,只影响作业在就绪队列中等待所花的时间。因此,衡量一个调度算法优劣常常只需简单地考察等待时间。
-
响应时间:是指从用户提交请求到系统首次产生响应所用的时间。在交互式系统中,周转时间不可能是最好的评价准则,一般釆用响应时间作为衡量调度算法的重要准则之一。
调度算法
先来先服务(FCFS)调度算法
先请求CPU的进程先分配到CPU。FCFS策略可以用FIFO队列来容易实现。当一个进程进入就绪队列,其PCB链接到队列的尾部。当CPU空闲时,CPU分配给位于队列头的进程,接着运行进程从队列中删除。
FCFS策略的代码编写简单且容易理解,不过采用FCFS策略的平均等待时间通常比较长。当进程CPU区间时间变化很大,平均等待时间会变化很大。
短作业(进程)优先(SJ(P)F)调度算法
将每个进程与下一个CPU区间段相关联。当CPU为空闲时,它会赋给具有最短CPU区间的进程。如果两个进程具有同样长度,那么可以使用FCFS调度来处理。注意,一个更为适当地表示是最短下一个CPU区间的算法,这是因为调度检查进程的下一个CPU区间的长度,而不是其总长度。
SJF算法的平均等待时间最小。SJF算法的真正困难是如何知道下一个CPU区间的长度。对于批处理系统的长期(作业)调度,可以将用户提交作业时间所制定的进程时间极限作为长度。SJF调度经常用于长期调度。
最高调响应比 度算法
考虑进程在就绪队列中的等待时间。选择就绪队列中响应比R最高的进程。R = (w + s) / s,w是等待时间,s是执行时间。这种算法基于短进程优先算法,不可抢占,关注了进程等待时间,以防止无限等待。
时间片轮转
时间片是分配处理机资源的基本时间单元,各个进程占用一个时间片,仍按照先来先服务策略,时间片结束时按照先来先服务切换到下一个就绪进程,每隔(n-1)个时间片进程执行一个时间片。
时间片太大的话,等待时间过长,退化成先来先服务;若太短,产生了大量上下文切换,影响系统吞吐量。
这时需要选择一个合适的时间片长度
多级反馈队列
就绪队列排成多个子队列,不同队列可以有不同算法,进程可以在队列之间转换。队列间的调度可以采用时间片方法。
多级反馈队列:进程在不同队列间移动的多级队列算法。时间片大小随优先级级别增加而增加,如进程在当前的时间片没有完成,则降到下一个优先级。CPU密集型的进程优先级下降很快,这样时间片会增大,IO密集型的则优先级上升。
公平共享调度算法
注重资源访问的公平,一些用户比另一些用户重要,保证不重要的组无法垄断资源。未使用的资源按照比例分配,没有达到资源使用率目标的组获得更高的优先级。
实时调度和多处理器调度
实时调度对时间有要求,实时操作系统的正确性以来其时间和功能两方面,其性能指标是时间约束的及时性。
硬实时是指错过任务时限会导致灾难性或非常严重的后果,必须验证,在最坏情况下能满足时限。软实时是指尽量满足任务时限。
速率单调调度算法(静态):通过周期安排优先级,周期越短优先级越高,执行周期最短的任务;
最早截止时间优先算法(动态):截止时间越早优先级越高,执行截止时间最早的任务
针对多个处理机,一条系统总线连接多个物理CPU,一个CPU可能有几个逻辑CPU,处理机之间可以负载共享。
静态进程分配:进程开始执行到结束都被分配到一个固定的处理机上,每个处理机都有自己的就绪队列,调度开销小,但各个处理机可能忙闲不均。
动态进程分配:进程在执行中可以分配到任意空闲处理机执行,所有处理机共享一个公共的就绪队列,调度开销大,各个处理机的负载是均衡的。
优先级反置
操作系统中出现高优先级进程长时间等待低优先级进程所占用的资源,而导致高优先级进程长时间等待的现象。
优先级继承:占用资源的低优先级进程继承申请资源的高优先级进程的优先级。只有占有资源的低优先级进程被阻塞时才能提高占有资源进程的优先级。
优先级天花板协议:占有资源进程的优先级和所有可能申请该资源的进程的最高优先级相同,不管是否发生等待,都提升占有资源进程的优先级。优先级高于系统中所有被锁定的资源的优先级上限,任务执行临界区就不会被阻塞。