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
Each spool file in the systea is controlled by a spool file control
block (SFBLOK) that is resident in storage. While the file is open,
these blocks are chained from the devices (either real or virtual) that
are processing the file, and from device type file anchors after the
file is closed. There is one file chain each for printer, reader, and
punch files. Each SFBLOK contains information about the file that
describes its owner and originator (these can be different for
transferred files), the filename and filetype, and the class and nu.ber
of copies for output files. All of these attributes can be exaained and most can be changed by the file's owner or the system operator. The SFBLOK also contains information such as the starting and ending buffer
addresses for the file, the record size, certain file status flags, etc. SPOOL BUFFER !ANAGE!ENT Buffers that temporarily store spool data on its way between DASD secondary storage and the user's virtual machine are allocated froa a
pool of virtual storage space that belongs to CP. The size of this pool
varies with the real storage available to V!/370 (the storage specified
at system generation or actual real storage, whichever is less).
Allocation is as follows:
384K to 655,360 bytes
655,361 bytes to 1.1 megabytes 1.1 aegabytes to 3 megabytes
over 3 megabytes Virtual Buffers
__ Allo£ateL_ 128 320 640 1280 Virtual storage buffers are allocated in 1-page increments by D!KPGT at the tiae the spool file is opened for either input or output. If no
virtual storage space is available, the virtual machine is terminated
with a PGT008 abend. This places li.its on the nuaber of concurrent
spooling operations peraitted by the system because spooling operates as
a high-priority task.
Real storage is not allocated for a spooling buffer until a virtual machine actually issues a SIO that attempts to transfer data between the
buffer and the user's virtual storage space. At this time, a page of
real storage is allocated to the buffer via the real storage paging
aanager. The buffer is locked in main storage (that is, is unavailable
to be paged out) only for the amount of time necessary to transfer the
data. After the data transfer is complete, the buffer is treated as a normal page of virtual storage, and can be selected to be paged out.
This ensures that low-usage spool files do not have buffers in real
storage, while the buffers for high-usage files should reaain resident.
(Two spool file buffers are maintained for a 3800 printer.) The
location of the spool buffer in real storage is transparent to the
virtual spooling executive, because all references to the data therein
are accomplished through the DAT feature of the processor.
1-138 IBM VM/370 System Logic and Problem Deteraination--Voluae 1
Previous Page Next Page