Hardware Reference
In-Depth Information
12.2
COMMERCIAL REAL-TIME SYSTEMS
At the present time, there are more than a hundred commercial products that can be
categorized as real-time operating systems, from very small kernels with a memory
footprint of a few kilobytes, to large multipurpose systems for complex real-time ap-
plications. Most of them provide support for concurrency through processes and/or
threads. Processes usually provide protection through separate address spaces, while
threads can cooperate more efficiently by sharing the same address space, but with no
protection. Scheduling is typically preemptive, because it leads to smaller latencies
and a higher degree of resource utilization, and it is based on fixed priorities. At the
moment, there are only a few systems providing deadline-driven priority scheduling.
The most advanced kernels implement some form of priority inheritance to prevent
priority inversion while accessing mutually exclusive resources. Note that this also
requires the use of priority queues instead of regular FIFO queues.
Many operating systems also provide a set of tools for facilitating the development
of real-time applications. Besides the general programming tools, such as editors,
compilers, and debuggers, there are a number of tools specifically made for real-time
systems. Advanced tools include memory analyzers, performance profilers, real-time
monitors (to view variables while the program is running), and execution tracers (to
monitor and display kernel events in a graphical form). Another useful tool for real-
time systems is the schedulability analyzer, which enables designers to verify the fea-
sibility of the task set against various design scenarios. There are also code analyzers
to determine worst-case execution times of tasks on specific architectures.
Some major players in this field are
VxWorks (Wind River);
OSE (OSE Systems);
Windows CE (Microsoft);
QNX;
Integrity (Green Hills).
Some of these kernels are described below.
Search WWH ::




Custom Search