具有5个任务的优先级继承

时间:2019-01-16 09:03:32

标签: multithreading real-time priority-inversion

假设我有一个包含五个任务的任务集T。假设我们知道任务集是可调度的,并且有以下资源使用表

enter image description here

任务优先级从优先级最高的t1降到优先级最低的t5。 S1,S2和S3是使用三个不同的互斥锁的三个不同的共享资源。

表中显示t4可以经历的最大阻塞时间仅为2个时间单位,但是,我发现情况并非如此,除非我不正确理解优先级继承。

假设t5通过获取锁立即进入(优先级为1),以便进入其临界区并使用共享资源s1。

在1/3的时间后,t4到达:由于它的优先级比t5高(它的优先级是2),因此它可以抢占t5。因此,它立即尝试获取锁以进入其关键部分并使用共享资源S1:但是,该锁已在t5之前获取,因此此时t5的优先级被提高到t4的优先级。现在,t5的优先级为2。

t5恢复执行另外1/3单位时间(t4的阻塞时间现在是1/3单位时间)。假设现在到达t1,并且由于其优先级为5,它将抢占t5。它立即尝试获取该锁,该锁已被t5占用。此时,t5的优先级提高到t1的优先级,即5。

这时,t5在关键部分执行其最后1/3单位的时间,然后解锁共享资源上的互斥锁(t4的阻塞时间现在是2/3单位时间,t1的时间是1/3)。此时,t4和t1都可以使用它,但是t1具有最高优先级,因此它获得了锁定,并在关键部分中以其2个时间单位运行并释放了锁定。此时,t4的阻塞时间等于2 + 2/3单位时间,只有现在它才能再次启动,获取锁并在关键部分运行3单位时间。

因此,看起来t4的最大阻塞时间至少为2 + 2/3,而不仅仅是2。 我在这里想念东西吗?

0 个答案:

没有答案