In
scheduling, priority inversion is the scenario where a low priority
task holds a shared
resource that is required by a high priority task. This causes the execution of the high priority task to be blocked until the low priority task has released the resource, effectively "inverting" the relative priorities of the two tasks. If some other medium priority task, that does not depend on the shared resource, attempts to run in the interim, it will take precedence over both the low priority task and the high priority task.
See more at Wikipedia.org...
<
parallel> The state of a concurrent system where a high priority task is waiting for a low priority task which is waiting for a medium priority task. The system may become unstable and
crash under these circumstances.
In an
operating system that uses multiple tasks, each task (or
context) may be given a priority. These priorities help the
scheduler decide which task to run next. Consider tasks, L, M, and H, with priorities Low, Medium, and High. M is running and H is blocked waiting for some resource that is held by L. So long as any task with a priority higher than L is runable, it will prevent task L, and thus task H, from running.
Priority inversion is generally considered either as a high-level design failure or an implementation issue to be taken into account depending on who is talking. Most operating systems have methods in place to prevent or take inversion into account.
Priority inheritance is one method.
The most public instance of priority inversion is the repeated 'fail-safe' rebooting of the
Mars Pathfinder. base station ('Sagan Memorial Station').
(2003-06-04)