The IEEE POSIX group is concerned with standardizing a wide range of operating system services, from basic functionality (1003.1) through networking (1003.12), security (1003.6), and real-time (1003.4). The 1003.4 working group is currently balloting three related standards which will inevitably become international standards. POSIX.4 (Realtime
Extensions for Portable Operating Systems, Draft 12, 1992) is a proposed standard for the support of “applications with real-time requirements”. POSIX.4a (Threads Extensions for Portable Operating Systems, Draft 6, 1992) is the “threads extension” to 1003.1.
These two standards offer that which has never before been possible in the fragmented world of realtime – some hope that applications can be written so as to be easily portable from one realtime operating system to the next. In addition, a profile document, POSIX.13 (POSIX Realtime Application Support (AEP), Draft 5, 1992) entered balloting in early 1992.
The four profiles in 1003.13 enumerate functionality from the various POSIX standards that must be present in order to support applications from embedded systems up to workstation or supercomputer real-time applications. Additionally, the 1003.4 working group has commenced work on POSIX l003.4b, a new set of functions that provides more real-time
functionality, including access to interrupt vectors, sporadic server scheduling and access to typed memory.
The facilities of Real-Time POSIX are already being demanded by large Federal and commercial customers. Support for these standards will become a powerful tool for addressing these markets. What, though, is in these standards? How do they meet the needs of real-time applications? And, equally important, where do they fall short?
LynxOS, starting with version 2.0, incorporates all the features of early drafts of 1003.4 and 1003.4a. As the earliest adopter of Real-Time POSIX, we have been able to gain some very early experience with these facilities. This paper is an introduction and an update to the facilities of Real-Time POSIX, focusing on the needs of real-time applications, where POSIX meets these needs, and where it does not.
In the next section, we provide a short rationale for the importance of source code portability for real-time applications. After that, the features of POSIX are briefly described. In the section following, we discuss the areas where POSIX does not provide support for real-time applications. A conclusion follows.