12
REAL-TIME OPERATING SYSTEMS AND STANDARDS
This chapter presents a brief overview of the state of art of real-time systems and stan- dards. It first discusses the most common operating systems standard interfaces that play a major role for developing portable real-time applications. Then, it gives a brief description of the most used commercial and open source real-time kernels available today, including some research kernels developed within academia to make experi- ments with some novel features and lead future development. Finally, it presents a set of development tools that can be used to speed up system analysis and implementation.
STANDARDS FOR REAL-TIME OPERATING SYSTEMS
The role of standards in operating systems is very important as it provides portability of applications from one platform to another. In addition, standards allow the possibil- ity of having several kernel providers for a single application, so promoting competi- tion among vendors and increasing quality. Current operating system standards mostly specify portability
at the source code level, requiring the application developer to re- compile the application for every different platform. There are four main operating system standards available today:
POSIX, the main general-purpose operating system standard, with real-time ex- tensions (RT-POSIX);
OSEK, for the automotive industry; APEX, for avionics systems;
μITRON, for small embedded systems.
G.C. Buttazzo,
Hard Real-Time Computing Systems: Predictable Scheduling Algorithms and Applications, Real-Time Systems Series 24, DOI 10.1007/978-1-4614-0676-1_12,
© Springer Science+Business Media, LLC 2011
419
The standard specifies a set of system calls for facilitating concurrent programming. Services include mutual exclusion synchronization with priority inheritance, wait and signal synchronization via condition variables, shared memory objects for data shar- ing, and prioritized message queues for inter-task communication. It also specifies services for achieving predictable timing behavior, such as fixed priority preemptive scheduling, sporadic server scheduling, time management with high resolution, sleep operations, multipurpose timers, execution-time budgeting for measuring and limiting task execution times, and virtual memory management, including the ability to dis- connect virtual memory for specific real-time tasks. Since the POSIX standard is so large, subsets are defined to enable implementations for small systems. The following four real-time profiles are defined by POSIX.13 [POS03]: