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
While a spool buffer is inactive, it resides in real storage or on the
paging device. After it has been filled with data from the virtual
.achine or a real input reader, it is written to a page of secondary
DASD storage. The allocation of pages on the spooling disk(s) is managed by DMKPGT, which handles requests for both pages of virtual
storage and semipermanent spool file residence. DMKPGT maintains
separate allocation block chains for virtual storage and spooling pages.
Each block contains control information and a bit map that allocates
pages on a single cylinder. If none of the cylinders allocated have any
available pages, DMKPGT enters its cylinder allocation routine. DMKPGT attempts to even out the spooling and paging I/O load by allocating cylinders across channels and devices. To minimize seek
ti.es on a given device, cylinders are allocated as close to the
relative center of the spooling or paging area as possible. Suppor!: All actual I/O for the page buffers on any device
is controlled by the paging I/O executive DMKPAGIO. VIRTUAL SPOOLING MANAGER (DMKVSP) The two functions of the virtual spooling manager are (1) to simulate the operation of all spooled unit-record devices attached to the user's
virtual machine, and (2) to read and write the spool files associated
with those devices. The following virtual devices are supported for
spooling, with the exceptions noted: IBM 2540 Card Reader/Punch, except for punch feed read and column
binary I. IBM 3203 Printer Model 4 and Model 5 (132 positions) IBM 1403 Printer Models 2 and N1 (132 positions) IBM 3211 Printer (150 print positions) IBM 3505 Card Reader (except for .ark senses reading) IBM 3525 Punch (except for the card read, print, and data protect
features).
The following consoles are supported for spooling when entered into
the directory as the virtual system console: IBM 1052 printer-Keyboard, Model 7 (via the 2150 Console) IBM 3210 Console Printer-Keyboard, Models 1 and 2 IBM 3215 Console Printer-Keyboard, Model 1
All virtual printers must have the universal character set feature. 10 checking is done on the spooled printer data. However, any UCS buffer commands issued by the virtual .achine (load UCS buffer, block
data checks, etc.) are ignored. It is up to the user and the
installation to ensure that the output is directed to the proper real
printer via use of the output CLASS feature described below. For the
3211 or 3203 printer, forms control buffer (FCB) co •• ands are accepted
CP Introduction 1-139
Previous Page Next Page