进程调度算法的比较

1。FCFS调度(first come first serve):

也就是先来先服务进程调度策略,没有切换进程的概念,自然也也就没有抢占的概念。类似于流水线的机制。

2. Round Robin:

时间片轮转,现在计算机大多是采用的这个策略进行进程切换。不利于不同大小进程的完成时间。

3 SJF(Short Job First):

短作业优先,这是对FCFS对短作业效果不好所做的对短作业特定的优化。但是优化过度了,会产生饥饿的现象。因为一些短进程不断到来时一些长进程无法执行。

4.SRTN

 Shortest Remaining Time Next 最短剩余时间,是SJF的另一个版本,可以看出仅仅是从抢占改成了非抢占。

5 HRRN:

Highest Response Ratio Next,一种动态的根据优先级调度的策略,这里的优先级是由以下的公式计算得来。

响应比R = 周转时间 / 处理时间

总是选取相应比最高的进程执行。

6.Feedback

多级反馈队列,同时创建多个队列。优先级从高到低,从第一个队列调度,当第一个队列为空时,调度下一个队列。时间片则是优先级低的队列较大。

以上的进程调度算法通常都应用在实时系统以及交互式系统当中,其中应用在交互式系统中的有 Round Robin以及FeedBack。因为交互系统要保持对各个进程的响应,所以要设置时间片,使其可以更好的对各个进程进行响应。剩下的SJF,FCFS, SRTN,HRRN则是批处理中的调度算法,这类进程调度算法普遍吞吐量比较好(因为不用消耗资源切换时间片),但是响应性不太好。

进程优先级反转:

定义:一个低优先级进程持有一个高优先级进程所需要的资源,使得高优先级进程等待低优先级进程运行。

例子:设H是高优先级进程,L是低优先级进程, M是中优先级进程(CPU型)

场景:L进入临界区执行,之后被抢占;H也要进入临界区,失败,被阻塞;M上CPU执行,L无法执行所以H也无法执行

解决的思路是让低优先级的进程不被中断,通常有三种解决方法:

  • 设置优先级上限,将优先级提到最高,让其无法被中断
  • 优先级继承,让其拥有要高优先级,不被终端
  • 使用中断禁止,直接不让中断
原文地址:https://www.cnblogs.com/qtalker/p/4435134.html