调度类型
长程调度
、中程调度
、短程调度
(1)长程调度:
决定加入待执行进程池
(2)中程调度:
决定加入部分或全部位于内存中的进程集合
(3)短程调度:
决定处理器执行哪个可运行进程- 创建新进程时,执行长程调度,它决定是否把进程添加到当前活跃的进程集中
- 中程调度是
交换功能
的一部分,它决定是否把进程添加到那些至少部分已在内存且可被执行的进程集中- 短程调度真正决定下次执行哪个就绪进程
- 调度频繁度:
短程调度
>中程调度
>长程调度
- 长程调度:
- 长程调度决定了哪个程序可以进入系统中处理,因此它控制了系统的并发度
- 调度程序必须决定操作系统何时才能接纳一个进程或多个进程(
何时调度
)- 调度程序必须决定接受哪个作业或那些作业,并将其转变为进程(
如何调度
)- 何时创建一个新进程的决策,通常有要求的系统并发度驱动
- 下次允许哪个作业进入的决策可基于简单的先来先服务原则,或基于管理系统性能的工具,所用的原则包括优先级、期待执行时间和I/O需求
- 中程调度:
- 中程调度是交换技术的一部分
- 典型情况下,
换入决定
取决于管理系统并发度的需求
- 短程调度:
- 导致当前进程阻塞或抢占当前运行进程的事件发生时,调用短程调度程序
(1)时钟中断
(2)I/O中断
(3)操作系统调用
(4)信号(如信号量)
调度算法*
- 调度规则:
- 面向用户:
响应时间
- 面向系统:
吞吐量
、处理器时间利用率
- 基本概念:
响应时间:
从提交一个请求到输出响应所经历的时间间隔周转时间:
一个进程从提交到完成之间的时间间隔,包括实际执行时间和等待资源(包括处理器资源)的时间最后期限:
在能指定进程完成的最后期限时,调度原则将降低其他目标,使得满足最后期限的作业数量的百分比最大
吞吐量:
调度策略应使得单位时间
内完成的进程数量最大处理器利用率:
处理器处于忙状态
的时间百分比
- 优先级的使用:
- 每个进程都被指定一个优先级,调度程序总是优先选择具有高优先级的进程
- 纯优先级调度方案可能会导致低优先级较进程处于
饥饿状态
选择函数:
决定选择哪个就绪进程下次执行
(1) w : w: w:目前为止在系统中停留的总时间
(2) e : e: e:目前为止花费的执行时间
(3) s : s: s:进程所需的总服务时间,包括 e e e;这个参数通常须进行估计或由用户提供
- 决策模式:
非抢占:
一旦进程处于运行状态,就会不断执行直到终止,进程要么因为等待I/O,要么因为请求某些操作系统服务而阻塞自己抢占:
当前正运行进程可能被操作系统中断,并转为就绪态
周转时间:
就是驻留时间 T r T_r Tr,或这一项在系统中花费的总时间(等待事件+服务时间)归一化周转时间:
周转时间与服务时间的比值,表示一个进程的相对延迟情况
- 先来先服务(FCFS):
- 选择就绪队列中存在时间最长的进程运行
- 相比于短进程, FCFS更适合于长进程
- I/O密集型进程,FCFS更适合处理器密集型进程
- 轮转法:
- 周期性地产生时钟中断,出现中断时,当前运行的进程会放置到就绪队列中,然后基于FCFS策略选择下一个就绪作业运行
- 时间片最好略大于一次典型交互的时间
- 当一个时间片比运行时间最长的进程还要长时,轮转法就会退化成FCFS
时间片长度:
两次中断间的时间长度系统开销比例 = 调度耗时 / 时间片长度
- 操作系统调度耗时本身要算到时钟的时间片里的
- 最短进程优先(SPN):
- 其原则是下次选择预计处理时间最短的进程
- SPN策略的难点在于需要知道或至少需要估计每个进程所需的处理时间
- 只要持续不断地提供更短的进程,长进程就有可能饥饿
- 最短剩余时间优先(SRT):
- 调度总是选择预期剩余时间最短的进程
- 只要新进程就绪,调度程序就可抢占当前正在运行的进程
- 从周转时间来看,SRT的性能要好于SPN,因为相对于一个正在运行的长作业而言,短作业可被立即选择并运行
- 最高响应比优先(HRRN):
- R = ( w + s ) / s R = (w + s) / s R=(w+s)/s w w w为等待处理器的时间, s s s为预计的服务时间
- 当前进程完成或被阻塞时,选择 R R R值最大的就绪进程
- 偏向短作业时(小分母产生大比值),长进程由于长时间得不到服务,等待事件会不断增加,因此比值变大,最终在竞争中赢了短进程
- 类似SRT、SPN,使用最高响应比(HRRN)策略时,需要估计预计的服务时间
- 反馈调度:
- 不存在各个进程相对长度的任何信息时,就不能使用SPN、SRT和HRRN方法,另一种优先考虑短作业的方法是,处罚运行时间相对较长的作业。
- 基本思路:
(1)一个进程首次进入系统中时,会放在 R Q 0 RQ0 RQ0中
(2)当它首次被抢占并返回就绪态时,会放在 R Q 1 RQ1 RQ1中
(3)在随后的时间里,每当它被抢占时,都降级到下一个低优先级队列
(4)进程处于优先级最低的队列中后,就不会再降低,但会重复返回该队列,直到运行结束- 短进程很快就会执行完毕,不会出现多次降级的现象,长进程则会多次降级,新到的进程和短进程会优先于老进程和长进程
- 长进程的周转时间会惊人的增加,同时当新作业频繁地进入系统时,长进程可能会出现饥饿,解决方法
(1)时间片的长度随优先级的降低逐渐增加
(2)当一个进程在队列中等待时间超过一定阈值后将其提升一个优先级