Multiprocessing and multiprogramming

System diversity provides multiprogramming and multiprocessing capabilities within the z/TPF system. Multiprogramming and multiprocessing are incorporated to increase the number of messages that can be processed over some interval of time, usually given in messages for each second.
  • Multiprogramming means that several programs (sequences of z/Architecture® instructions) in different stages of execution are coordinated to run on a single I-stream engine (CPU).
  • Multiprocessing is the coordination of the simultaneous execution of several programs running on multiple I-stream engines (CPUs).

    In addition, the input/output (I/O) support in the z/TPF system coordinates the processing of channel programs (sequences of z/Architecture I/O commands) on multiple engines in the channel subsystem. However, unless a distinction is made, multiprocessing refers to the coordination of programs running on multiple I-stream engines. Two forms of multiprocessing incorporated in the z/TPF system are called loosely coupled and tightly coupled.

The phrase parallel processing is useful to describe multiprogramming and multiprocessing because whatever the name, the three Ss cannot be overemphasized:
  • Shared
  • Synchronized
  • Sequential.

A description of parallel processing emphasizes those moments where a program or processor must wait because a shared resource is already accessed by another program or processor. Some of the moments of synchronization are handled exclusively by the hardware, while others form part of the z/TPF system software structure. When the software becomes involved in synchronization moments, the granules of time become longer than those taken by the hardware and the details become more important if the system is to be understood. When there is a failure to synchronize processes properly, competing processes can mutually block each other, possibly degrading the performance of the entire system (this is called deadlock).

There are some ideas we assume from the outset. For instance, the notion of operations executed (or run) on a computer is taken for granted. An operation is a rule for deriving output from a given input within a finite time; that is, when an operation is executed by a computer, it always ends in a prescribed interval. z/Architecture instructions are examples of operations. A sequential process (or simply process) involves the execution of a set of operations in a prescribed order for the purpose of producing a result. The result of a process is not required to be produced in a prescribed interval, but a process must end. Some useful sequences of operations, however, never end; for example, a control sequence of code that accepts work on demand. A program is the passive form of a process.