The priority-based model of execution states that a task can only be preempted by another task of higher priority.
However, scenarios can arise where a lower priority task may indirectly preempt a higher priority task, This is called "priority inversion", and usually occurs when resource sharing is involved.
The classic example to explain priority inversion is to imagine a system with three active threads, each at three different thread priorities
When the system begins execution, thread T1 is released and executes immediately since there are no other higher priority threads executing. Shortly after it starts, it acquires a lock on resource R1.
At time t=1.5, thread T3 is released and preempts thread T1 since it's of higher priority.
At time t=3, thread T2, a medium priority thread, is released but doesn't execute because higher priority thread T3 is still executing.
Shortly afterward, however, thread T3 attempts to acquire a lock on resource R1, but cannot since thread T1 (a lower priority thread) still owns it.
This allows thread T2 to execute in its place, which effectively violates the priority-order execution of the system, resulting in what we call priority inversion.
priority boosting ::: temporarily Increase priority of a lower priority thread that acquires a lock to ensure that it will complete its execution, and release its lock, as quickly as possible!!