Priority inheritance
The priority inheritance (English: priority inheritance ) in addition to the priority limit or (-schranke priority ceiling ) a method to solve the problem of priority inversion .
Priority inversion can occur in at least three tasks with different priorities . If the one with the lowest priority requests a free resource, it is immediately assigned to it by the process scheduler. If the task with the highest priority now requests the same resource, it is denied because the task with the lowest priority has exclusive access. The high-priority task must now wait for the low-priority one. A third task with medium priority can supersede the task with low priority. Since the task with the highest priority waits for the task with the low priority, the task with medium priority now indirectly displaces the task with the highest priority. The priorities are therefore ineffective.
In order to effectively prevent the status of the priority inversion, the priority of the low-priority task is raised. This happens precisely when the high-priority task wants to inquire about the resource that is occupied by the low-priority task. The low-priority task inherits the priority of the high-priority task. The two tasks can now no longer be interrupted by the task originally running with medium priority. As soon as the low-priority task no longer needs the resource, it is given its original priority again.
By means of priority inheritance, the problem of a total system reset was resolved on the Mars Pathfinder mission in 1997.
literature
- L. Sha, R. Rajkumar, JP Lehoczky: Priority Inheritance Protocols: An Approach to Real-Time Synchronization , IEEE Transactions on Computers, pp. 1175-1185, September, 1990