实时系统中的任务
系统是实时的,即响应应在指定的时间限制内得到保证或系统应满足指定的期限。例如飞行控制系统、实时监视器等。
实时系统中有两种类型的任务:
- 周期性任务
- 动态任务
- 周期性任务:在周期性任务中,作业定期发布。周期性任务是在固定的时间间隔后自我重复的任务。周期性任务由五个元组表示: T i = < Φ i , P i , e i , D i >
在哪里,- Φ i – 是任务的阶段。阶段是任务中第一个作业的发布时间。如果未提及该阶段,则假定第一个作业的发布时间为零。
- P i – 是任务的周期,即两个连续作业的发布时间之间的时间间隔。
- e i - 是任务的执行时间。
- D i - 是任务的相对截止日期。
例如:考虑周期 = 5 且执行时间 = 3的任务 T i
因此没有给出阶段,假设第一个作业的发布时间为零。因此,该任务的作业首先在 t = 0 时释放,然后执行 3 秒,然后在 t = 5 时释放下一个作业,执行 3 秒,然后在 t = 10 时释放下一个作业。因此,作业在 t = 时释放5k 其中 k = 0, 1, . . ., n
一组周期性任务的超周期是该集合中所有任务的周期的最小公倍数。例如,分别具有周期 4 和 5 的两个任务 T 1和 T 2将有一个超周期,H = lcm(p1, p2) = lcm(4, 5) = 20。超周期是之后的模式工作发布时间开始重复。 - 动态任务:它是由事件的发生调用的顺序程序。事件可以由系统外部的进程或系统内部的进程生成。动态到达的任务可以根据其重要性和对其发生时间的了解进行分类。
- 非周期性任务:在这种类型的任务中,作业以任意时间间隔(即随机)发布。非周期性任务有软截止日期或没有截止日期。
- 零星任务:它们类似于非周期性任务,即它们随机重复。唯一的区别是零星任务有严格的截止日期。一个周期性任务由三个元组表示: T i =(e i , g i , D i )
在哪里
e i - 任务的执行时间。
g i - 任务的两个连续实例出现之间的最小间隔。
D i - 任务的相对截止日期。
抖动:有时不知道作业的实际发布时间。只知道 r i在 [r i -, r i + ] 范围内。这个范围被称为释放时间抖动。这里R I -是如何工作的早期,可以释放,R I +是一份工作多晚可以被释放。只有作业执行时间的范围 [ e i -, e i + ] 是已知的。这里 e i - 是作业完成执行所需的最短时间,e i + 作业完成执行所需的最长时间。
作业的优先约束:如果任务中的作业可以按任何顺序执行,则它们是独立的。如果任务中的作业必须执行有特定的顺序,则称作业具有优先约束。为了表示作业的优先约束,使用了偏序关系 <。这称为优先关系。如果J i < J j ie J j在J i完成之前无法开始执行,则作业J i是作业J j 的前驱。 Ĵ我为J j的直接前导如果j我置于
表示优先约束的一种有效方法是使用有向图 G = (J, <),其中 J 是作业集。该图称为优先图。作业由图的顶点表示,优先约束使用有向边表示。如果存在从 J i到 J j 的有向边,则表示 J i是 J j 的直接前驱。例如: 假设任务 T 有 5 个作业 J 1 、J 2 、J 3 、J 4和 J 5 ,这样 J 2和 J 5在 J 1完成之前无法开始执行,并且没有其他约束。
此示例的优先约束是:
J 1 < J 2和 J 1 < J 5
设置优先图的表示:
- < (1) = { }
- < (2) = {1}
- < (3) = { }
- < (4) = { }
- < (5) = {1}
考虑另一个示例,其中给出了优先级图并且您必须找到优先级约束
从上图中,我们得出以下优先约束:
- J 1 < J 2
- J 2 < J 3
- J 2 < J 4
- J 3 < J 4