ABSTRACT

Operating systems for real-time and embedded systems have long relied on static priority scheduling to ensure that timing and performance constraints are met. In static priority scheduling, tasks are assigned an integer priority value that remains fixed for the lifetime of the task. Whenever a task is made ready to run, the active task with the highest priority commences or resumes execution, preempting the currently executing task if need be. There is a rich literature that analyzes static priority scheduling and demonstrates how timing and synchronization constraints can be met using static priority scheduling (see Ref. 14 for a good summary discussion). For these and other reasons, virtually all commercial real-time operating systems, including VxWorks [27], VRTX [17], QNX [22], pSOSystem (pSOS) [21], and LynxOS [16], support static priority scheduling.