Many developers, sometimes in open competition, have been trying to add real-time support to Linux and thereby fill the major gap in its capabilities as an embedded system. But although real-time is critical to some applications, most embedded systems can get by without it. Some programmers who assume they need real-time (for streaming media, for instance) may not need it, whereas real-time may prove valuable in industries where one wouldn’t expect it, such as finance.
In this chapter, we will explain the kinds of situations where you will want real-time, define real-time requirements, and summarize how Linux can be enhanced to support those requirements. Chapters 13 and 14 will describe two particular real-time solutions.
The canonical definition of a real-time system is as follows: “A real-time system is one in which the correctness of the computations not only depends upon the logical correctness of the computation but also upon the time at which the result is produced. If the timing constraints are not met, system failure is said to have occurred,” (see http://www.faqs.org/faqs/realtime-computing/faq). In other words, whatever task the real-time application carries out, it must do it not only properly but on time.
Real-time doesn’t mean fast. Some programmers who assume they need a real-time system can actually get the performance they need just by choosing a suitably fast hardware platform (processor, memory ...