Message processing overview
Tracing the flow of a message is a pragmatic way to introduce conventions
and terminology used by the z/TPF system and to make
the abstract control concepts a reality. Figure 1 represents some additional detail
to the contents of the control structure diagram in Figure 1. The boxes and solid lines
in Figure 1, as a matter of fact,
represent the control structure diagram in Figure 1. Additional conventions used
in Figure 1 follow:
- Solid lines represent a line of control as described earlier. Notice the solid lines do not have arrows, which is meant to emphasize that control lines are not necessarily branching paths.
- Dashed lines are used to show certain transfer paths (branches). This is meant to show that these transfers (branches) are made without losing control information as a result of some previous sequential (because interrupts are inhibited) processing on a queue or status indicator.
- The double lines represent data paths that become involved in maintaining control.
The principle idea of the design of the z/TPF system design is to place the z/TPF system in a state where the system is requesting message traffic (in the form of input messages) from the various communications facilities and updates to the database and outgoing messages (as responses to agents) as a result of application processing.
The CPU loop inspects the cross list, ready list, input list, and deferred list, and checks status indicators. Among other things, some of the checking of status indicators causes input messages to arrive in the z/TPF system.
An input message causes an Entry to be created and application
program segments to be dispatched for processing the input message.
The Entry makes requests of the control program for system services
such as:
- Input and output (I/O)
- Storage allocation (both file and main storage)
- Program fetches (called Enter/Back in the z/TPF system)
- Release of control.
Many of the system services requested by an Entry have other system
services implied. For example, if application program segment X calls
application program segment Y, and Y is not already in main storage,
then the system must:
- Obtain a working storage block in main storage for Y
- Issue the I/O commands necessary to retrieve Y from file storage
- Try to find another Entry that can be started or continued during the delay caused by the I/O.