速率单调调度
速率单调调度是一种优先级算法,属于实时操作系统的静态优先级调度范畴。它本质上是先发制人的。优先级是根据所涉及进程的循环时间决定的。如果进程的作业持续时间较短,则它具有最高优先级。因此,如果具有最高优先级的进程开始执行,它将抢占其他正在运行的进程。进程的优先级与它将运行的时间段成反比。
一组进程只有在满足以下等式时才能被调度:
其中 n 是进程集中的进程数,Ci 是进程的计算时间,Ti 是进程运行的时间段,U 是处理器利用率。
例子:
一个例子来理解速率单调调度算法的工作。
Processes | Execution Time (C) | Time period (T) |
---|---|---|
P1 | 3 | 20 |
P2 | 2 | 5 |
P3 | 2 | 10 |
n( 2^1/n - 1 ) = 3 ( 2^1/3 - 1 ) = 0.7977
U = 3/20 + 2/5 + 2/10 = 0.75
它小于 1 或 100% 的利用率。三个进程的综合利用率小于这些进程的阈值,这意味着上述进程集是可调度的,因此满足上述算法方程。
- 调度时间——
为了计算算法的调度时间,我们必须取所有进程的时间段的 LCM。上例的 LCM ( 20, 5, 10 ) 为 20。因此我们可以按 20 个时间单位对其进行调度。 - 优先事项 -
如上所述,运行时间最短的进程的优先级最高。因此,P2 将具有最高优先级,在 P3 之后,最后是 P1。P2 > P3 > P1
- 表示和流程 –
上图表示,进程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 将执行两次完成它的执行。这就是速率单调调度的工作原理。
状况 :
速率单调调度的分析假设每个进程都应该拥有的属性很少。他们是 :
- 所涉及的进程不应与其他进程共享资源。
- 截止日期必须与时间段相似。截止日期是确定性的。
- 需要运行的具有最高优先级的进程将抢占所有其他进程。
- 必须根据速率单调调度协议为所有进程分配优先级。
好处 :
- 这很容易实现。
- 如果任何静态优先级分配算法都可以满足最后期限,那么速率单调调度也可以这样做。它是最优的。
- 它由时间段的计算副本组成,与其他分时算法不同,循环算法忽略了进程的调度需求。
缺点:
- RMA下很难支持非周期性和零星的任务。
- 当任务周期和截止日期不同时,RMA 不是最佳的。