决策模式
- 非抢占 : 一旦进程处于运行状态,它就会一直执行到终止,或者为等待I/O或请求某些操作系统服务而阻塞自己
- 抢占 : 当前正在运行的进程可能被操作系统中断并转移到就绪状态.
先来先服务(FCFS)
先来先服务(FCFS)是最简单非抢占的算法,也称为先进先出(Frist-In-Frist-Out, FIFO)或严格排队算法.当每个进程就绪后,加入就绪队列.当前进程停止执行时,就会运行就绪队列里存在时间最长的进程.
- FCFS执行长进程比执行短进程更好
- FCFS相对于收I/O限制的进程,更偏向受处理器限制的进程
- FCFS可能导致处理器和I/O设备都没有得到充分利用
- FCFS通常与优先级算法相结合,提供一种更有效的调度方法
轮转(RR)
轮转(RR)法是最简单的采用基于时钟的抢占算法,以一个周期性间隔产生时钟中断,中断发生时,当前正在运行的进程重新进入就绪队列,然后再基于FCFS算法选择下一个就绪进程运行.这种技术也被称为时间片,所以每个进程在被抢占前都给定一片时间.
- 避免使用过短和过长的时间片
- 轮转法在通用的分时系统或事物处理系统中都特别有效
- 对受处理器限制的进程倾向于不公平的使用了大部分处理时间,从而导致受I/O限制的进程性能降低,使用I/O设备低效,响应时间的变化大
最短进程优先(SPN)
最短进程优先(SPN)算法是一个非抢占算法,它每次从就绪队列里选择所需处理时间最短的进程运行.所以短进程会越过长进程,调到队头.
- 整体性能有显著的提高
- 响应时间的差别也增加了,特别是对于长进程的情况
- 可预测性降低
- 需要知道或至少需要估计每个进程所需要的处理时间
- 只要持续不断地提供短进程,长进程就有可能饿死
- 缺少抢占机制,对分时系统或事物处理环境仍然不理想
最短剩余时间(SRT)
最短剩余时间(SRT)是针对SPN增加了抢占机制的版本.调度器总是选择预期剩余时间最短的进程,一个新进程加入到就绪队列时,它可能比当前正在运行的进程具有更短的剩余时间,所以调度器就会抢占当前正在运行的进程.
- 和SPN一样,调度器在执行选择函数时必须处理时间的估计,
- 长进程存在饿死的危险
- SRT比SPN有更好的性能
最高响应比优先(HRRN)
R = w + s s R = \frac {w + s} {s}