Dynamic priority schemes may be employed in real-time schedulers in which tasks meet specific deadlines. For example, in an earliest deadline first (EDF) scheme, the task with the earliest deadline is considered the most important. As time passes, the relative priorities of tasks are dynamic, e.g., they change based on their proximity to their respective deadlines. Priority inversion, which takes place when a low-priority task preempts a high-priority task, e.g., by locking a resource needed by the high-priority task, is difficult to handle in dynamic priority schedulers. This disclosure describes techniques to forestall or mitigate priority inversion in dynamic priority schemes. Per the techniques, a low-priority task that blocks higher priority tasks from running due to its owning a lock on a resource needed by the higher priority tasks is granted a new deadline and capacity such that the lock owner has the same overall opportunity to run as the lock contenders, were they not blocked on the lock. In this way, the lock-owing task gets sufficient time to execute while avoiding a priority inversion.

Creative Commons License

Creative Commons License
This work is licensed under a Creative Commons Attribution 4.0 License.