Most of the routines in the CP nucleus are reenterable and multiple
control program or virtual machine tasks can make use of one routine at
the same time. However, there are certain areas where requests for a
resource must be serialized (as in paging) or delayed while previous
requests are serviced (as in requests to schedule I/O). The routine handling the request obtains a CPEXBLOK from free storage
and stores the caller's registers in it; when the requested resource is free, the CPEIBLOK is stacked for the dispatcher via a call to the
request stack manager (DMKSTK). The dispatcher unstacks the block and
exits to the requesting routine the next time it is entered. I/O requests are stacked in the same manner, except that the stacking
vehicle is the IOBLOK, and return is passed to the address specified in
the interrupt return address (IOBIR1). In either case, it should be
noted that the dispatcher always unstacks and gives control to any
stacked IOBLOKs and CPEXBLOKs prior to dispatching a user. This
guarantees that CP information needed by a virtual machine (such as page
availability) is always as up to date as possible. CP SPOOLING The spooling support in CP performs three functions. Simulates the operation of the virtual unit record devices that are
attached to each user's virtual machine configuration. The simulation is done in such a way that it appears to the program in
the virtual .achine that it is controlling a real unit record device.
This support involves the interception and interpretation of virtual machine SIOs, the move.ent of data to and from the virtual machine's virtual storage space, and the reflection of the necessary
interruption codes and ending conditions in PSiS, CSWs, and sense
bytes. This support is provided by the virtual spooling executive. Operates the real unit record equipment, attached to the syste., that
transcribes virtual machine output spool files to the real printer or
punch and input from the real card reader to D1SD storage. This
function is provided by the real spooling executive. Provides an interface among the virtual machines, the system operator, and the spooling system so that the location, format, priority and utilization of the systems spooling data and resources
can be controlled.
1-136 IBM VM/370 System Logic and Problem Deter.ination--Volume 1
SPOOL DATA AND FILE FORBAT The buffers that collect and write spool data are all one page (4096
bytes) in length, and contain the data to be transcribed and all eels necessary for operating the unit record devices that perfora the
transcription. The data is provided in the exact for.at required with
no compression except that trailing blanks are suppressed. The first
two doublevords of each buffer contain linkage inforaation described
below, followed by the data and ecws, except for the first spool buffer
which contains 3800-related information. Each spool logical record (card or print line) is stored as one eew that moves data (READ or WRITE), a TIC to the following eew, and the
full data record. Space is left at the end of each buffer so that a SENSE command can be inserted to force concurrent channel end and device
end. For card punch channel programs there is an additional back chain
field that points to the card previously punched so that error recovery
for punch equip.ent checks can back up one card. The only exception to
the format of RE1D/WRITE-Tle-Data is in buffers of files directed to the
printer. In this case, immediate operation code cews (skips and spaces)
are followed by the next ccw. In addition to the data and CCWs contained in each spool buffer, the
first two doublewords contain forward and backward links to the next and
previous buffers in the file. This two-way linkage allows the file to
be backspaced or restarted from any point at any time. llso, it aeans
that if I/O errors are encountered while reading one buffer, the file is
put in system hold status. If purged, all buffers except those in error
are released. The two-way chain allows this control of the file while
preventing fragaentation by allowing pages to be assigned and released individually regardless of their ownership. The first spool buffer of an output spool file contains a special
data record called the tag record. This record i •• ediately follows the
two doublewords containing the forward and backward buffer linkage
pointers. The tag record allows VM/310 users to specify information to
be associated with spool files that they generate. The inforaation is
entered via the CP T1G command, although the tag record is not
considered a spool file data record and is not printed or punched as
part of the spool file. However, the contents may be interrogated via
the CP TAG QUERY command. The format of the tag record is a NOP cew, followed by a TIC to the next cel and a 136-byte data field. To differentiate the tag record from an immediate NOP ecw (no TIC-data sequence) independently of the command code, the "skip" bit (bit 35) in the ecw has the following
convention:
Bit 35 = 0 for NOP CCW, TIC, data (tag record)
= 1 for NOP eew (immediate NOP command) ep Introduction 1-131
Previous Page Next Page