<Dl> <Dt> Priority inheritance </Dt> <Dd> Under the policy of priority inheritance, whenever a high priority task has to wait for some resource shared with an executing low priority task, the low priority task is temporarily assigned the priority of the highest waiting priority task for the duration of its own use of the shared resource, thus keeping medium priority tasks from pre-empting the (originally) low priority task, and thereby affecting the waiting high priority task as well . Once the resource is released, the low priority task continues at its original priority level . </Dd> </Dl> <Dd> Under the policy of priority inheritance, whenever a high priority task has to wait for some resource shared with an executing low priority task, the low priority task is temporarily assigned the priority of the highest waiting priority task for the duration of its own use of the shared resource, thus keeping medium priority tasks from pre-empting the (originally) low priority task, and thereby affecting the waiting high priority task as well . Once the resource is released, the low priority task continues at its original priority level . </Dd> <Dl> <Dt> Random boosting </Dt> <Dd> Ready tasks holding locks are randomly boosted in priority until they exit the critical section . This solution is used in Microsoft Windows . </Dd> </Dl> <Dd> Ready tasks holding locks are randomly boosted in priority until they exit the critical section . This solution is used in Microsoft Windows . </Dd>

Priority inversion in a rtos and its solutions