About Real-time
Real-time technology ensures that computer results are not only correctly calculated, but also delivered at the correct times. A traffic light should be green, but at the time of passing.
Real-time indicates that the demands come from the real world. Gravity, e.g., cannot be decreased to accomodate slow processing.
This is essential in applications ranging from safety critical systems, such as airplanes and cars, to a wide range of everyday devices, notably of consumer electronics, and mobile communication devices.
The predominant approach of standard computer systems, to focus on minimizing average delays is inappropriate for such systems, otherwise planes and cars may crash, phone calls lost, or movies disturbed. Fast, or timely on average behaviour is not acceptable, rather the worst case situations have to be handled. Compare to crossing a river: not the average depth determines safe passage, but the deepest one.
As even vigorous testing cannot cover all cases and detect the worst case reliably, proofs are needed before the system is deployed that all deadlines are met.
As boundaries between hardware and software become less distinct, real-time methodology becomes increasingly important in hardware design. On the other hand, hardware aspects become more relevant for real-time system design.
Hard real-time
A real-time task is said to be hard if missing a single deadline may cause catastrophic consequences on the controlled system. Hard Real Time preserves temporal and functional feasibility, even in the worst case. A scheduling algorithm is defined as a set of rules defining the execution of tasks at system run-time. It is provided with a schedulability or feasibility test, which determines, whether a set of tasks with parameters describing their temporal behavior will meet their temporal constraints if executed at run-time according to the rules of the algorithm. The result of such a test is typically a yes or no answer indicating whether feasibility will be met in the worst case or not. These schemes and tests demand precise assumptions about task properties, which hold for the entire system lifetime. Examples of hard real-time systems include digital controllers for aircraft, nuclear power plants, missiles, and high-performance production lines.
Soft real-time
A real-time task is said to be soft if missing one or few deadlines does not jeopardize the correct system behaviour, but only causes a performance degradation Often, task parameters and constraints are known only partially beforehand or can change during system runtime; the necessary worst-case assumptions may not be available or too costly to apply. Then, standard feasibility tests cannot be applied and yes or no types of answers are not appropriate. Rather, a quantitative answer about how good or bad an algorithm will perform with the task set is needed.
However, the question of what "few" deadlines and "degradation" mean precisely is a very difficult one. "Hard" real-time is a qualitative question, i.e., all deadlines are met or not, where "soft" constitutes a quantitative one. It has to include a notion of time as well, as missing all of the "few deadlines" at once will have stronger impact than if they if they are spread out over time.
Often, "soft" seems to be used as "tried hard, but failed - so it has to be better than nothing at all".
Adaptive real-time
A real-time system is adaptive if it is able to adjust its internal strategies in response to a change in the environment, to keep the system performance at a desired level. In adaptive real-time systems, resource needs of applications are usually highly data dependent and vary over time. In this context, it is more important to obtain systems, which can very well adapt their execution to the changing environment than to apply the too pessimistic hard real-time techniques. In many modern application areas, e.g., media processing, resource demands and availability vary widely over time, due to e.g., coding schemes and mobility. Aiming at meeting worst case demands results in extremely costly over dimensioning of resources. Rather, schemes should aim at provide efficient resource usage and acceptable user perceived quality.
The implementation of adaptive real-time embedded systems requires several issues to be considered at the same time. They involve predictable scheduling strategies, time-bounded operating systems mechanisms, resource management policies, adaptive middleware software, and expressive programming languages. Moreover, most of embedded systems work under several resource constraints, due to space, weight, energy, and cost limitations imposed by the specific application. Often, such limitations also affect memory and computing power. As a consequence, efficient resource management is a critical aspect in embedded systems, that must be considered at different architecture levels.