One way to solve priority inversion is to use the priority ceiling protocol, which gives each shared resource a predefined priority ceiling.
When a task acquires a shared resource, the task is hoisted (has its priority temporarily raised) to the priority ceiling of that resource.
The priority ceiling must be higher than the highest priority of all tasks that can access the resource, thereby ensuring that a task owning a shared resource won't be preempted by any other task attempting to access the same resource.
When the hoisted task releases the resource, the task is returned to its original priority level.
No comments:
Post a Comment