Introduction to real time concepts
A realtime application is an application where the correctness of the
application depends on the timelines and predictability of the application
as well as the results of computations.
Realtime applications are becoming increasingly important in our daily
lives and can be found in various environments such as automotive
applications, medical equipment etc.
Realtime applications provide an action or an answer to an external event
in a timely and predictable manner. While many realtime applications require
high-speed compute power, realtime applications cover a wide range of tasks
with differing time dependencies. Timelines has a different
definition in each realtime application. What may be fast in one application
may be slow or late in another. For example, a vehicle engine control
needs to collect data and control actuators with microseconds accuracy,
while a scientist monitoring the airpressure might need to collect data in
intervals of several minutes.
The concept of predictability may vary from field of operation,
but for realtime applications it generally means that a task or set of tasks
can always be completed within a predetermined amount of time. Depending on
the situation, an unpredictable realtime application can result in loss of
data, loss of deadlines, or loss of plant production. Examples of realtime
applications include process control, factory automation robotics, vehicle
simulation, scientific data acquisition, image processing, built-in test
equipment, music or voice synthesis, and analysis of high-energy physics.
Worst-case vc. average timeline
To have control over the predictability of an application, the programmer
must understand which time bounds are significant. For example, an
understanding of the average time it takes for a context switch does
not guarantee task completion within a predictable timeframe. Realtime
programmers must know the worst-case time requirements so that they
can design an application that will always meet worst-case deadlines.
Realtime applications can be classified as either hard or soft realtime.
Soft realtime applications do not fail if a deadline is missed. Some soft
realtime applications can process large amounts of data or require a very
fast response time, but the key issue is whether or not meeting timing
constraints is a condition for success. An example of a soft realtime
application is an airline reservation system where an occasional delay is
tolerable, but unwanted..
Many realtime applications require high I/O throughput and fast response time to asynchronous external events. The ability to process and store large amounts of data is a key metric for data collection applications. Realtime applications that require high I/O throughput rely on continuous processing of large amounts of data.
High data throughput requirements are typically found in signal-processing applications such as:
Likewise, a continuous stream of data points must be acquired for many of the qualitative and quantitative methods used in the following types of applications:
For some applications, the throughput requirements on a single channel are modest. However, an application may need to handle multiple data channels simultaneously, resulting in a high aggregate throughput. Realtime applications, such as medical diagnosis systems, need a response time of about one second while simultaneously handling data from, perhaps, ten external sources.
High I/O throughput may be important for some realtime control systems, but another key metric is the speed at which the application responds to asynchronous external events and its ability to schedule and provide communication among multiple tasks. Realtime applications must capture input parameters, perform decision-making operations, and compute updated output parameters within a given timeframe.
Some realtime applications, such as flight simulation programs, require a response time of microseconds while simultaneously handling data from a large number of external sources. The application might acquire several hundred input parameters from the cockpit controls, compute updated position, orientation, and speed parameters, and then send several hundred output parameters to the cockpit console and a visual display subsystem.
Realtime applications are usually characterized by a blend of
requirements. Some portions of the application may consist of hard, critical
tasks, all of which must meet their deadlines. Other parts of the
application may require heavy data throughput. Many parts of a realtime
application can easily run at a lower priority and require no special
realtime functionality. The key to a successful realtime application is the
developer's ability to accurately define application requirements at every
point in the program. Resource allocation and realtime priorities are used
only when necessary so that the application is not overdesigned.