我对“任务期”的确切含义有点困惑
例如,假设有一个任务,
Task(){
while(1)
{
//do something
//sleep 6 time units
}
}
假设它在时间 0 被释放并且它的总执行时间是 4 个时间单位(“做某事”部分)并且这个执行的截止日期是时间 7
假设这个任务在执行周期内没有被抢占,那么这次的周期是4 + 6 = 10,所以下次它会在时间10被释放,所以T = 10
现在假设这个任务在时间 3 被另一个抢占,然后在时间 5 回来,所以它有足够的时间(直到时间 7)执行剩余部分(1 个时间单位)
所以它在时间 6 结束,因此这次,它的周期将是 6 + 6 = 12,所以下一次它将在时间 12 释放,所以 T = 12
那么什么是任务期呢?在 RM 调度中,任务优先级是根据任务周期分配的,那么任务周期的哪些值被考虑?
在进度表上,周期性任务总是显示为具有固定的周期,例如周期为 5,如果任务应该在 0、5、10、15、20 等时间发布,那么如果在 0 发布,它应该完成直到5,等等
如果它在 2 完成,我如何保证下一个版本在 5?
或者假设它在 15 发布,并在 16 和 18 之间执行,我如何保证下一个发布是在 20?
好吧,在这个例子中,很明显,截止日期是由这个所谓的“任务周期”定义的,即 5 的倍数,因为任务不能晚于其下一个预期发布时间完成,任务周期由所需的发布时间定义,但是我不明白这些发布时间如何保持为 5 的倍数
正如我们在开头的示例中看到的那样,同一任务的下一个版本可能会有所不同,具体取决于情况(10 和 12),但只要执行完成直到时间 7 都无关紧要