| |||
Home > RTOS Support > About Real Time Operating Systems (RTOSs) |
Operating systems provide software support for application programs running on a target. RTOSs are operating systems that are designed for computers that interact with real-world activities, and so the treatment of time is critical to successful operation. For example, if an application is in control of a car engine it is vital that the electronic ignition and engine timing are synchronized correctly.
Real-time applications vary in required timing accuracy from seconds to microseconds, but they must guarantee to operate within the time constraints that are set.
Real-time applications can be:
Failure to meet an event deadline is catastrophic, typically causing loss of life or property. An example is a car engine controller.
Failure to meet a deadline is unfortunate but does not endanger life or property. An example is a washing machine controller.
In supporting real-world computer systems, an RTOS and the applications using it are designed with many principles in mind, for example:
The algorithms used must guarantee execution in tightly bounded (but not necessarily the fastest possible) time.
The applications must guarantee that they do not fail during execution. This in turn implies the RTOS itself does not fail.
RTOSs supporting hard real-time systems must enable sufficient control over process scheduling to specify and meet the deadlines imposed by the overall system.
An RTOS often uses separate software components to model and control the hardware with which it interacts. For example, a car engine controller might have:
a process that models the motion of the cylinder, enabling it to control ignition and valve timing
a process that monitors fuel consumption and car speed and displays trip distance and fuel economy on the dashboard.
Using components like this enables the RTOS to ensure that the job that must be done next to meet the deadlines can be scheduled next. RTOS processes can either:
Share only specifically designated memory, normally dedicated to inter-process communication. These are called processes.
Implicitly share the memory of the processor, so that each can share all the data and code of the others. These are called threads.
In multiprocessor systems, specific processes and threads can be run on specific processors. For example:
Processor 1 is dedicated to a specific task, for example, car engine timing. This is a single process with no threads.
Processor 2 has multiple jobs, for example both displaying the fuel economy and processing radio-key messages. The developers implement this as different processes, some of which have many threads.