Deterministic priority inversion in Ada selective waits
Leslie C. Lander, Sandeep Mitra, Thomas F. Piatkowski · ACM SIGAda Ada Letters · 1990
Priority inversion is any situation where low priority tasks are served before higher priority tasks. It is recognized as a serious problem for real-time systems. In the course of building a performance model for multi-tasking Ada software, we have noticed that a fair algorithmic selection procedure may be likely to cause priority inversion in selective waits. This effect is in addition to the well-known priority inversion due to the FIFO nature of entry queues. As an illustration, we present a semi-formal partial model of the selective wait algorithm of the Alsys 1 ' 286 DOS Ada Compiler v4.2, running under PC-DOS Version 3.30 on an IBM PC/AT 2 The model was deduced from a series of experiments designed to illuminate the scheduling features of the system. These results may provide useful insight for users of this and other Ada compilers since priority inversion may occur in the way we describe in many systems. We also indicate one standard technique to avoid priority inversion at selective waits.