A real-time (the term without the dash, real time, is deprecated for this level of specificity) system is one
where the response time is as much a factor in the correctness of its
operation as the functional correctness is. Or, as it was once put to me, "a real time system responds
in time to make a difference." Under this definition, an ATM can (usually) be considered
real-time. Timeliness is key for a real-time system; no one wants to step on the brakes of their
vehicle and have the car wait until it's ready to process that input. Batch data processing may be good
for scientists, but it's a poor way to drive a car — or adjust a CD-player.
Real-time systems are usually divided into two categories, soft and hard. Hard real-time systems
are systems where a late response is as much of a problem as a wrong response. Soft real-time is then
(somewhat amusingly) declared to be everything real-time that is not hard real-time. Hard real-time systems
need deterministic scheduling of tasks and bounded latency, since the system must have a known
worst-case response time. When software is involved, this often requires a specialized operating system,
usually referred to as a real-time operating system or RTOS.
Of course, such is not always the case. Most commercially-available RTOSs are designed to be fast.
However, not all applications, even hard real-time ones, require high speed on the response times,
merely that the response is guaranteed to occur within a given amount of time. A system requiring human input,
for example, will rarely require microsecond response times to that input. Even in fast applications, sometimes
it's easier to produce a simplistic RTOS, reinventing the wheel to do so, simply because existing ones are too large
or otherwise unsuitable (given that most come without source code, this can be a problem).
Some available RTOSs
- QNX — Generally x86 oriented; POSIX-compliant, and generally leans towards assuming the presence
of a filesystem.
- VxWorks — Available on many processors; POSIX-compliant, but leans away from the idea of having
a filesystem available. Comes with a large number of libraries that provide support for various tasks, including grabbing
files via ftp and providing a command shell.
- PSOS — A real-time operating system with a POSIX feel that seems to walk a middle road between QNX and VxWorks, PSOS supports filesystems simplistically and provides its own set of task, queue, and other primitives. PSOS was recently purchased by Wind River, who owns VxWorks, so its future may be in doubt.
- RTLinux — A real-time Linux solution that works by putting a preemptive layer under the kernel,
meaning that real-time tasks do not have the full set of Linux functionality available.