A Survey of Contemporary Real-time Operating Systems
S. Baskiyar, Ph.D. and N. Meghanathan
Dept. of Computer Science and Software Engineering
Auburn, AL 36849, USA
Keywords: scheduling, POSIX, kernels.
Received: June 26, 2004
A real-time operating system (RTOS) supports applications that must meet deadlines in addition to providing logically correct results. This paper reviews pre-requisites for an RTOS to be POSIX 1003.1b compliant and discusses memory management and scheduling in RTOS. We survey the prominent commercial and research RTOSs and outline steps in system implementation with an RTOS. We select a popular commercial RTOS within each category of real-time application and discuss its real-time features. A comparison of the commercial RTOSs is also presented. We conclude by discussing the results of the survey and suggest future research directions in the field of RTOS. Povzetek: Podan je pregled operacijskih sistemov v realnem času.
A real-time system is one whose correctness involves
both the logical correctness of outputs and their
timeliness . It must satisfy response-time constraints
or risk severe consequences including failure. Real-time
systems are classified as hard, firm or soft systems. In
hard real-time systems, failure to meet response-time
constraints leads to system failure. Firm real-time
systems have hard deadlines, but where a certain low
probability of missing a deadline can be tolerated.
Systems in which performance is degraded but not
destroyed by failure to meet response time constraints are
called soft real-time systems.
An embedded system is a specialized real-time
computer system that is part of a larger system. In the
past, it was designed for specialized applications, but reconfigurable and programmable embedded systems are becoming popular.
Some examples of embedded
systems are: the microprocessor system used to control
the fuel/air mixture in the carburetor of automobiles,
software embedded in airplanes, missiles, industrial
machines, microwave ovens, dryers, vending machines,
medical equipment, and cameras.
We observe that the choice of an operating system is
important in designing a real-time system. Designing a
real-time system involves choice of a proper language,
task partitioning and merging, and assigning priorities to
manage response times. Language synchronization
primitives such as Schedule, Signal and Wait simplify
translation of design to code and also offer portability.
Depending upon scheduling objectives, parallelism and
communication  may be balanced. Merging highly
cohesive parallel tasks for sequential execution may
reduce overheads of context switches and inter-task
communications. The designer must determine critical
tasks and assign them high priorities. However, care
must be taken to avoid starvation, which occurs when
higher priority tasks are always ready to run, resulting in
insufficient processor time for lower priority tasks .
Non-prioritized interrupts should be avoided if there is a
task that cannot be preempted without causing system
failure. Ideally, the interrupt handler should save the
context, create a task that will service the interrupt, and
return control to the operating system. Using a task to
perform bulk of the interrupt service allows the service to
be performed based on a priority chosen by the designer
and helps preserve the priority system of the RTOS.
Furthermore, good response times may require small
memory footprints in resource-impoverished systems.
Clearly the choice of an RTOS in the design process is
important for support of priorities, interrupts, timers,
inter-task communication, synchronization, multiprocessing and memory management. The organization of this paper is as follows. Section
2 outlines the basic requirements of an...