进程的调度算法

本文详细介绍了进程调度的几种算法:先来先服务(FCFS)、轮转(RR)、最短进程优先(SPN)、最短剩余时间(SRT)和最高响应比优先(HRRN),分析了它们的优缺点以及适用场景,强调了抢占和非抢占策略对进程调度的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

决策模式

  • 非抢占 : 一旦进程处于运行状态,它就会一直执行到终止,或者为等待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+ss R = \frac {w + s} {s} R=sw+s
其中,

  • R : 响应比
  • w : 等待处理器的时间
  • s : 期待的服务时间

如果进程能立刻被调度,则R等于标准的周转时间.R的最小值为1.0,只有第一个进入系统的进程才能达到该值.
最高响应比优先的调度规则:在当前进程完成或被阻塞时,选择R值最大的就绪进程.当偏向短进程是,长进程由于得不到服务时间而不断增加,从而增大了比值,最终在竞争中胜了短进程.

  • 需要估计期待的服务时间

反馈

如果没有关于各个进程的相对程度的任何信息,则SPN,SRT,HRRN都不能使用,这时候就需要反馈调度机制,调度基于抢占原则并且使用动态优先机制.当一个进程第一次进入系统时,它被放置在优先级最高的队列里,当他运行时,被抢占后并返回就绪状态时,它被降级到下一个低优先级的对俄中,之后,每当它被抢占时,都会降级到下一个优先级队列中,知道优先级最低的队列,它便不可降级,会重复回到当前队列直到运行结束.每一个优先级队列中都使用FCFS机制.

  • 长进程的周转时间可能惊人的增加,甚至饿死

各种调度算法的特点

调度算法选择函数决策模式吞吐量响应时间开销对进程的影响饿死
FCFSmax[w] max[w] max[w]非抢占不强调可能很高,特别是当进程的执行时间差别很大时最小对短时间进程不利;对受I/O限制的进程不利
轮转常数抢占(在时间段内完成时)根据时间片,吞吐量会很低为短进程提供好的响应时间最小公平对待
SPNmin[s]min[s]min[s]非抢占为短进程提供好的响应时间可能比较高对长时间进程不利可能
SRTmin[s−e]min[s - e]min[se]抢占(在到达时)提供好的响应时间可能比较高对长进程不利可能
HRRNmax(w+ss)max(\frac {w + s} {s})max(sw+s)非抢占提供好的响应时间可能比较高很好的平衡
反馈(参见上文)抢占(在时间段用完时)不强调不强调可能比较高可能对受I/O限制的进程有利可能
  • w : 花费的等待时间
  • e : 到现在为止,花费的执行时间
  • s : 进程所需要的总服务时间,包括e
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值