📜  速率单调调度

📅  最后修改于: 2022-05-13 01:56:11.315000             🧑  作者: Mango

速率单调调度

速率单调调度是一种优先级算法,属于实时操作系统的静态优先级调度范畴。它本质上是先发制人的。优先级是根据所涉及进程的循环时间决定的。如果进程的作业持续时间较短,则它具有最高优先级。因此,如果具有最高优先级的进程开始执行,它将抢占其他正在运行的进程。进程的优先级与它将运行的时间段成反比。

一组进程只有在满足以下等式时才能被调度:

其中 n 是进程集中的进程数,Ci 是进程的计算时间,Ti 是进程运行的时间段,U 是处理器利用率。

例子:
一个例子来理解速率单调调度算法的工作。



ProcessesExecution Time (C)Time period (T)
P1320
P225
P3210
n( 2^1/n - 1 ) = 3 ( 2^1/3 - 1 ) = 0.7977

U = 3/20 + 2/5 + 2/10 = 0.75 

它小于 1 或 100% 的利用率。三个进程的综合利用率小于这些进程的阈值,这意味着上述进程集是可调度的,因此满足上述算法方程。

  1. 调度时间——
    为了计算算法的调度时间,我们必须取所有进程的时间段的 LCM。上例的 LCM ( 20, 5, 10 ) 为 20。因此我们可以按 20 个时间单位对其进行调度。
  2. 优先事项 -
    如上所述,运行时间最短的进程的优先级最高。因此,P2 将具有最高优先级,在 P3 之后,最后是 P1。
    P2 > P3 > P1 
  3. 表示和流程 –

    上图表示,进程P2每5个时间单位执行2次,进程P3每10个时间单位执行2次,进程P1每20个时间单位执行3次。为了理解下面算法的整个执行,必须牢记这一点。

    进程 P2 将首先运行 2 个时间单位,因为它具有最高优先级。完成它的两个单元后,P3 将获得机会,因此它将运行 2 个时间单元。

    我们知道进程 P2 将在 5 个时间单位的间隔内运行 2 次,进程 P3 将在 10 个时间单位的间隔内运行 2 次,它们已经满足条件,因此现在优先级最低的进程 P1 将获得机会,它将运行1次。到这里,五个时间单位的间隔就完成了。由于其优先级,P2 将抢占 P1,因此将运行 2 次。由于 P3 在其 10 个时间单位的间隔内已完成其 2 个时间单位,因此 P1 将有机会运行剩余的 2 次,完成其在 20 个时间单位中的三次执行。

    现在 9-10 间隔保持空闲,因为没有进程需要它。在 10 个时间单位时,进程 P2 将运行 2 次以完成第三个间隔 (10-15) 的标准。进程 P3 现在将运行两次以完成其执行。出于上述相同的原因,间隔 14-15 将再次保持空闲。在 15 个时间单位,进程 P2 将执行两次完成它的执行。这就是速率单调调度的工作原理。

状况 :
速率单调调度的分析假设每个进程都应该拥有的属性很少。他们是 :

  1. 所涉及的进程不应与其他进程共享资源。
  2. 截止日期必须与时间段相似。截止日期是确定性的。
  3. 需要运行的具有最高优先级的进程将抢占所有其他进程。
  4. 必须根据速率单调调度协议为所有进程分配优先级。

好处 :

  1. 这很容易实现。
  2. 如果任何静态优先级分配算法都可以满足最后期限,那么速率单调调度也可以这样做。它是最优的。
  3. 它由时间段的计算副本组成,与其他分时算法不同,循环算法忽略了进程的调度需求。

缺点:

  1. RMA下很难支持非周期性和零星的任务。
  2. 当任务周期和截止日期不同时,RMA 不是最佳的。