如果我们在vxWorks中被抢占,时间片会发生什么?

时间:2020-03-06 14:19:35  来源:igfitidea点击:

如果我们在Vxworks中启用了轮询功能,并且任务被优先级更高的任务抢占,那么剩余时间片会如何处理?

解决方案

任务将恢复执行并完成剩余的时间片。

请注意,由于时间分片的粒度为1个时钟滴答,我们将在一个时间滴答中发生一些抖动。

例如:
我们启用了具有10个时钟滴答时间片的循环轮询。一时钟的滴答声是10毫秒。我们希望每个时间片100毫秒。
我们将在5毫秒(第一个刻度的中间)被抢占。我们应该再运行95毫秒,但是VxWorks认为我们还有10个滴答声。

如果任务在11ms处恢复到CPU,则我们将再执行99ms。
如果任务在19ms处恢复到CPU,则我们将再执行91ms。

每次我们被抢占时,任务可能会在绝对时间内执行+ / 1滴答。