处理器调度的层次
高级调度:又称长程调度,作业调度
• 决定能否加入到执行的进程池中
中级调度,又称平衡负载调度
• 决定主存中的可用进程集合
低级调度:又称短程调度,进程调度
• 决定哪个可用进程占用处理器执行
处理器调度层次与进程状态转换
处理器调度层次与关键状态转换
高级调度
分时OS中,高级调度决定:
•是否接受一个终端用户的连接
•命令能否被系统接纳并构成进程
•新建态进程是否加入就绪进程队列
批处理OS中,高级调度又称为作业调度,功能是按照某种原则从后备作业队列中选取作业进入主存,并为作业做好运行前的准备工作和完成后的善后工作
中级调度
引进中级调度是为了提高内存利用率和作业吞吐量
中级调度决定那些进程被允许驻留在主存中参与竞争处理器及其他资源,起到短期调整系统负荷的作用
中级调度把一些进程换出主存,从而使之进入“挂起”状态,不参与进程调度,以平顺系统的负载
低级调度
低级调度:又称处理器调度、进程调度、短程调度,按照某种原则把处理器分配给就绪态进程或内核级线程
进程调度程序:又称分派程序,操作系统中实现处理器调度的程序,是操作系统的最核心部分
处理器调度策略的优劣直接影响到整个系统的性能
低级调度的主要功能
•记住进程或内核级线程的状态
•决定某个进程或内核级线程什么时候获得处理器,以及占用多长时间
•把处理器分配给进程或内核级线程
•收回处理器
在理解调度算法之前要先理解两个很重要的概念,有助于对算法的理解。
剥夺方式:当一个进程正在处理器上执行时,系统可以根据规定的原则剥夺分配给它的处理器,而把处理器分配给其他进程使用。有两种常见的剥夺原则:高优先级剥夺原则和时间片剥夺原则,前者高优先级进程或线程可以剥夺低优先级进程或线程运行,后者当运行进程时间用完后被剥夺处理器。
非剥夺方式:一旦某个进程或线程开始执行后便不再出让处理器,除非该进程或线程运行结束或发生了某个事件不能继续执行。
两种策略一般组合使用:内核关键程序是非剥夺式的,用户进程是剥夺式的。
选择处理器调度算法的原则
• 资源利用率:使得CPU或其他资源的使用率尽可能高且能够并行工作
• 响应时间:使交互式用户的响应时间尽可能小,或尽快处理实时任务
• 周转时间:提交给系统开始到执行完成获得结果为止的这段时间间隔称周转时间,应该使周转时间或平均周转时间尽可能短
• 吞吐量:单位时间处理的进程数尽可能多
• 公平性:确保每个用户每个进程获得合理的CPU份额或其他资源份额
优先数调度算法
根据分配给进程的优先数决定运行进程
•抢占式优先数调度算法
•非抢占式优先数调度算法
优先数的确定准则
•进程负担任务的紧迫程度
•进程的交互性
•进程使用外设的频度
•进程进入系统的时间长短
与进入系统时间相关的优先数
•计算时间短(作业/进程)优先
•剩余计算时间短进程优先
•响应比高者(作业/进程)优先
响应比 = 等待时间/进入时间
•先来先服务:先进队先被选择
多用于高级调度;低级调度中,以计算为主的进程过于优越
先来先服务算法(FCFS)
策略:按照作业进入系统的先后次序来挑选作业,先进入系统的作业优先被挑选。为非剥夺式调度算法。
效果:算法容易实现,效率不高,只顾及作业等候时间,没考虑作业要求服务时间的长短,不利于短作业而优待了长作业。有利于CPU繁忙型作业不利于I/O繁忙型作业。
Linux采用了先来先服务算法以及时间片轮转算法
最短作业优先算法(SJF:Shortest Job First)
策略:最短作业优先算法以进入系统的作业所要求的CPU时间为标准,总选取估计计算时间最短的作业投入运行。为非剥夺式调度算法。
性能:算法易于实现,效率不高,弱点是需要预先知道作业所需CPU时间,而这个时间只能靠估计,估计值很难精确,若估计过低,系统可能提前终止该作业;忽视了作业等待时间,会出现饥饿现象;由于缺少剥夺机制,对分时、实时处理很不理想。
SJF的平均作业周转时间比FCFS要小,所以它的调度性能比FCFS好。
实现SJF调度算法需要知道作业所需要的时间,否则调度就没有依据,要精确知道一个作业的运行时间是办不到的。
最短剩余时间优先算法(SRTF)
最短剩余时间优先SRTF算法把SJF算法改为剥夺式调度算法。
当一个作业正在执行时,一个新作业进入就绪状态,如果新作业需要的CPU时间比当前正在执行的作业剩余下来还需的CPU时间短,SRTF强行赶走当前正在执行的作业。此算法不仅适用于作业调度,同样也适用于进程调度。
响应比最高者优先算法(HRRF)
FCFS、SJF算法的缺点:先来先服务算法FCFS与最短作业优先SJF算法都是片面的调度算法。FCFS只考虑作业等候时间而忽视了作业的计算时间,SJF算法只考虑用户估计的作业计算时间而忽略了作业等待时间。
响应比调度思想:响应比最高者优先(HRRF)算法是介乎这两者之间的折中算法,既考虑作业等待时间,又考虑作业的运行时间,既照顾短作业又不使长作业的等待时间过长,改善了调度性能。
缺点:每次计算各道作业的响应比会有一定的时间开销,性能比SJF略差。
响应比定义:作业进入系统后的等待时间与处理时间之和称作该作业的响应时间,作业的响应时间除以作业处理时间称作响应比,即:
响应比 = 1+已等待时间/作业处理时间
作业处理时间由用户给出,是一个常量。
响应比的计算时机:每当调度一个作业运行时,都要计算后备作业队列中每个作业的响应比,选择响应比最高者投入运行。
响应比最高优先(HRRF)算法效果:
短作业容易得到较高的响应比
长作业等待时间足够长后,也将获得足够高的响应比
饥饿现象不会发生
响应比最高者优先算法(HRRF)
FCFS、SJF算法的缺点:先来先服务算法FCFS与最短作业优先SJF算法都是片面的调度算法。FCFS只考虑作业等候时间而忽视了作业的计算时间,SJF算法只考虑用户估计的作业计算时间而忽略了作业等待时间。
响应比调度思想:响应比最高者优先(HRRF)算法是介乎这两者之间的折中算法,既考虑作业等待时间,又考虑作业的运行时间,既照顾短作业又不使长作业的等待时间过长,改善了调度性能。
缺点:每次计算各道作业的响应比会有一定的时间开销,性能比SJF略差。
响应比定义:作业进入系统后的等待时间与处理时间之和称作该作业的响应时间,作业的响应时间除以作业处理时间称作响应比,即:
作业处理时间由用户给出,是一个常量。
响应比的计算时机:每当调度一个作业运行时,都要计算后备作业队列中每个作业的响应比,选择响应比最高者投入运行。
响应比最高优先(HRRF)算法效果:
短作业容易得到较高的响应比
长作业等待时间足够长后,也将获得足够高的响应比
饥饿现象不会发生
分级调度算法
又称多队列策略,反馈循环队列
基本思想
•建立多个不同优先级的就绪进程队列
•多个就绪进程队列间按照优先数调度
•高优先级就绪进程,分配的时间片短
•单个就绪进程队列中进程的优先数和时间片相同
分级调度算法 例
分级调度算法的分级原则
一般分级原则
外设访问,交互性,时间紧迫程度,系统效率,用户立场,…
现代操作系统的实现模型
多个高优先级的实时进程队列,如:硬实时、网络、软实时
多个分时任务的进程队列,根据基准优先数和执行行为调整
队列数可能多达32-128个
彩票调度算法
基本思想:
为进程发放针对系统各种资源(如CPU时间)的彩票;当调度程序需要做出决策时,随机选择一张彩票,持有该彩票的进程将获得系统资源
进程都是平等的,有相同的运行机会。如果某些进程需要更多的机会,可被给予更多彩票,增加其终将机会。
NUM447
个人博客式公众号
用心每一天