Real-Time Systems Development

A common characteristic of embedded, real-time systems is often the significance of input/output data transfers. Much equipment in the field of communications does little else. Where an operating system will provide the run-time support, it is important to investigate its API before making a firm decision to purchase. To assist with sizing and scoping the application, either simulation or queuing theoretic studies can be carried out before finalizing the design.
To many desktop programmers, the extent to which real-time systems explicitly pass data to and from the external world is their most defining characteristic. This only reflects the success with which contemporary operating systems mask the details of I/O activity from application programmers. However, accessing I/O hardware from within an operating system environment can involve more software complexity than the direct hardware methods described earlier in Chapter 3. So, partly to avoid hidden software complexity, and partly to improve run-time performance, many real-time programmers prefer to access ports directly, even though such activity effectively cancels much of the run-time protection provided by the operating system.
From the perspective of the systems programmer, the provision of device drivers, which interface to the external devices and carry out the various service requests arising from the application tasks, is an essential part of the operating system. By identifying families of similar devices which can share at least part of the device driver code, an initial level of abstraction is introduced, insulating the...