速率单调调度


速率单调调度用于实时操作系统,它是一种优先级分配,提供优先级调度类。该算法将为具有最小周期的任务分配更高的优先级。因此,该算法被称为固定优先级算法,分配给任务的时间不会改变,这反过来也不会改变优先级。所有这些优先级在执行过程开始之前就已经确定,因此不会随着时间的推移而改变。它是一个抢占式算法,当另一个具有更高优先级的进程到达时,当前进程会被抢占。这种抢占是基于分配给每个进程组的优先级级别进行的。

速率单调进程

此调度具有一个分析过程,其中包含一些线程假设,其属性如下:

  • 优先级被设置为静态的,以便更高优先级的任务立即执行,抢占其他剩余的任务。

  • 这些优先级是根据速率单调约定分配的。

  • 不允许共享资源,例如信号量的阻塞或解除阻塞、任何硬件资源等。

  • 线程函数和上下文切换周期没有限制,并且不会受到为执行而设计的模型的影响。

如果该算法满足给定的截止期限,则认为它是最佳的,这适用于任何静态优先级算法。如果给定的截止期限小于周期,则截止期限单调算法也被认为是最佳的。

下面给出的公式应该由分配的调度满足,并且应该满足其截止期限。CPU 利用率低于给定下限由用于可调度性测试的最小上限公式给出:

$$\mathrm{U\:=\:\displaystyle\sum\limits_{i=1}^n\:(\frac{Ci}{Ti})\:\leq\:n\:(2^{\frac{1}{n}}\:−\:1)}$$

在上式中:

Ci - 进程计算时间

Ti - 进程执行周期(释放周期)

N - 进程数

U - 处理器利用率。

当 n>=10 时,进行粗略的数值计算,则速率单调算法将在 CPU 利用率 <70% 的情况下满足所有给定的截止期限,剩余的 30% 可用于较低优先级的任务。

已经为较短周期的倍数任务推导出上限,并且刘和莱兰设计了这个谐波任务。它可以表示为 k 个谐波任务或链,上述公式可以改写为:

$$\mathrm{U\:=\:\displaystyle\sum\limits_{i=1}^n\:(\frac{Ci}{Ti})\:\leq\:n\:(2^{\frac{1}{k}}\:−\:1)}$$

当 k=1 时,上限达到 1.0,这得出了 CPU 的完全利用率。

刘和莱兰处理了另一个界限以获得更严格的可调度条件,这被称为双曲线界限,其公式如下:

$$\mathrm{U\:=\:\prod_{i=1}^{n}\:(Ui\:+\:1)\:\leq\:2}$$

其中 Ui 是处理器利用率。

例如

考虑三个进程及其在下面表格中给出的执行时间和周期,在这里我们计算满足计划截止期限的最小上限。

进程列表

执行率

时间

P1

2

5

P2

1

7

P3

2

10

在给定的表中,P1 与其他进程 P2 和 P3 相比具有最短的周期 5。因此,P1 将首先执行,然后是 P2,最后是 P3。

最小上限是根据所有给定进程的周期/执行率计算的,并将它们全部加在一起以获得利用率值。

$$\mathrm{U\:=\:\frac{2}{5}\:+\:\frac{1}{7}\:+\:\frac{2}{10}\:=\:0.742}$$

对于给定的三个进程,我们使用以下公式推导出计划系统:

$\mathrm{U\:=\:3\:(2^{\frac{1}{3}}\:−\:1)\:=\:0.7796\:\gt\:0.742}$ 由于满足此条件,系统可以使用最小上限值进行调度。

由于 P1 和 P3 被认为是谐波子集(因为 P3 是 P1 的 2 倍),因此可以对上述任务进行谐波分析。

$\mathrm{U_{harmonic}\:=\:K\:(2^{(\frac{1}{K})}\:−\:1)}$, k =2,所以 U 值将为 0.82

根据计算的总利用率 U,将其与 U 谐波 0.742 < 0.82 进行比较,因为导出的谐波值越高,任务可以使用谐波子集值进行调度。

结论

如上所述,如果静态优先级算法满足目标截止期限,则速率单调算法也执行相同的操作,并且它被称为最佳的。尽管速率单调调度在满足截止期限时被认为是最佳的,但它并没有满足 CPU 资源的最大利用率。当计划任务周期和截止期限彼此不同时,它可能不是最佳的。优先级旨在保持静态,并且在执行期间不能更改,因为它们是预先定义的,这可能会导致另一个进程等待更长时间。

更新于:2023年11月23日

2K+ 次浏览

开启您的 职业生涯

完成课程获得认证

开始学习
广告