操作系统解疑补漏之“最高相应比优先算法”的理解

时间:2022-09-03 09:52:55

如何理解最高相应比优先调度算法

Highest Response Ratio Next 最高相应比(响应比)优先
怎么来理解这个相应比呢?

首先,批处理系统中采用的四种调度算法

  • 先来先服务(First Come First Serve)
  • 最短作业优先(Shortest Job First)
  • 最短剩余时间优先(Shortest Remaining Time Next)
  • 最高相应比优先(Higest Response Ratio Next)

先来先服务(FCFS)基于的是到达时间,短作业(SJF)优先是在FCFS之上对具有最短完成时间的进程优先执行,这是不抢占的。如果是抢占,当一个新进程就绪的时候,比较新进程与正在执行进程所需要完成的时间,如果更短,那就切换。

这种调度算法,都是不够合理的。前者对短进程和I/O进程不利,但不是“饥饿”。“饥饿”的产生是不公平,谁先来就先用,是很公平的,就像排队,只不过后者排队时间的长度会受到前者的影响;而最短作业和最短剩余就很不公平,还是排队的例子,让一个后来的但因为很快能完成就让它插到第一,这凭什么嘛,显然不公平!

所以就有了最高相应比优先的算法,这是综合考虑的。相应比的计算:周转时间/处理时间。

  • 周转时间TT(Turnaround Time):每个进程从提出请求到运行完成的时间;
  • 响应时间RT(Response Time):从提出请求到第一次回应的时间;
  • 等到时间(Waiting Time):每个进程在就绪队列(Ready queue)中等待的时间。

对于一个进程的执行,周转时间=处理时间+等待时间,所以相应比:(处理时间+等待时间)/ 处理时间 = 1 + (等待时间/处理时间),即可以直接比较等待时间/处理时间的高低

不太理解的地方就在于,这个等待时间是怎么计算的?
首先明确一点,最高相应比不抢占!!!
然后再来看,一个进程就绪时,前面的进程正在执行,所以等待时间这个正在执行的进程执行完所需要的时间。(因为不抢占,所以老老实实等着)

理解之后的一道例题

设有四个进程,它们的到达时刻和处理时间如下所示:

Process Arrival Time Processing Time
P1 0 50
P2 10 30
P3 30 10
P4 50 10

采用最高响应比优先(HRRN)调度算法在时刻50进行调度,所选中的进程是?

再次强调一点:最高相应比算法不发生抢占
50时刻:P1执行完成;而此时
P2已经等了9,所以相应比:1 + 40/30
P3已经等了9,所以相应比:1 + 20/10
P4已经等了9,所以相应比:1 + 0/30
所以,选择P3进行调度。

简单说

最高相应比的妙处就在于,它在先来先服务的基础上,进行了一个优化,既然都要等,不如要等的效率更高点,你等的时间长,且处理时间短,那么必须先上啊

但是核心没变,它不抢占!