5.4 Contention Problems in Multitasking Systems
5.4.1 Resource Contention and Deadlocks
The previous section has shown that tasks can safely share resources as long as we employ robust mutual exclusion techniques. Unfortunately, there is the possibility that the use of these mechanisms can accidentally produce serious runtime problems (the law of unintended consequences?). For us, the two most important ones are deadlock and priority inversion. But (and this is a significant but) these problems cannot arise where tasks share one resource only; they must share at least two resources.
Deadlock is the subject of this section; priority inversion is dealt with in the following one. To illustrate these effects, we'll look at the runtime behavior of the example system shown in Figure 5.22:
Its operation should be self-explanatory, but please check that you do understand it. The scheduling policy is a priority...