ABSTRACT

This chapter shows that adding task interaction to a real-time system raises some unexpected issues involving task priority ordering—another concept of paramount importance in real-time programming—that must be addressed adequately. It addresses task interactions due to mutual exclusion, a ubiquitous necessity when dealing with shared data. The chapter analyzes the situation in which a task is forced to wait for other reasons, for instance, an I/O operation. It suggests that the approach just discussed is merely a strongly simplified version of the priority ceiling emulation protocol. The chapter argues that careless task interactions may undermine priority assignments and, eventually, jeopardize the ability of the whole system to be scheduled because they may lead to an unbounded priority inversion. In a real-time system, task interaction must be designed with great care, above all when the tasks being synchronized have different priorities.