| OCR Text |
Show 4 critical regions to more comprehensive specifications like monitors and path expressions. Variations of shared memory model multiprocessor system include machines with pipeline architectures, machines with multiple functional units, and some array processors. 1.1.2 Multiple processes with message passing As a means of either eliminating sources of indeterminacy, or isolating their effects, some systems [30] forbid general sharing of memory locations~ employing message passing as the fundamental means of communication. In such schemes, one process specifies a message to be sent to another, either by naming the other, direct naming, or by naming a common channel linking them, channel naming. Certain disciplines can be imposed on a message passing system to guarantee determinacy. For example, if 1. A process, once it decides to examine an input message buffer, is committed to wait for a message to be there, and 2. no two processes can share a common input buffer, and 3. no two processes can share a common output buffer then the behavior is guaranteed to be determinate. Put another way, a collection of conventional processes has an overall functional behavior, provided the above criteria are met. This fact is used in a limited form to connect Unix processes via pi pes [52]. Functional programming systems attempt to exploit this phenomenon in a more general form. It is easy to show that pipe composition is just a special case of ordinary functional composition when functions computing on streams are involved [35]. 1.1.3 Dataflow Dataflow computers [ 14, 16, 69] use the technique suggested in the previous section at a fine level of granularity. Typically, each primitive operator is really a process performing the same operation time after time on streams of values. Obviously, this could be represented as a sequential process, but |