Thursday, November 24, 2005

What is priority inverse? How to avoid it?

A situation where a low-priority task holds a resource
which a higher-priority task is waiting for. This can
occur with tasks scheduled with SCHED_OTHER or SCHED_IDLE,
where a task with a higher scheduling priority will always
be scheduled before in preference. This leads to deadlock as
the low-priority task cannot be scheduled in order to release
the lock, and the high-priority task can't continue without the
lock on the resource. Priority inheritance is a putative solution,
where the low-priority task temporarily takes on the priority of
the other task, enabling its scheduling and release of the lock.
However this approach can itself lead to deadlock
(FIXME: is this really true?).

www.kernelnewbies.org/glossary/

No comments: