Many computers are used in embedded systems, which are composed of hardware, software, sensors, controllers and displays, and which are intended to be run indefinitely and without continuous supervision. One only has to think of airplanes, medical monitors, and cell phone networks to appreciate the complexity of embedded systems. Invariably, these systems contain several processes that must sample sensors and perform computations at roughly the same time; for example, a medical monitor samples heart rate, blood pressure, and temperature, and determines if they are within a predetermined range. Programming for multiprocess systems is called concurrent programming.
Frequently, embedded systems contain several processors; microprocessors have become so inexpensive that it is feasible to devote a separate processor to each subsystem. Furthermore, many systems like cell phone networks are by nature geographically dispersed, relying on communications networks for passing data between processors. Programming for such systems is called distributed programming.
SPIN supports modeling of both concurrent and distributed systems. This chapter is the first of several on writing and verifying concurrent programs; in Chapter 7 we discuss the use of channels to model distributed systems.
KeywordsEmbed System Assignment Statement Critical Section Mutual Exclusion Concurrent Program
Unable to display preview. Download preview PDF.