its DASD address is then determined and passed back to the calling
routine. If DKKPGT cannot find a cylinder with a de-allocated slot, it
enters the cylinder allocation phase. When an available cylinder is
found, it constructs a page allocation block for this cylinder and
allocates a page to the caller. D!KPGT controls the paging and spooling I/O load of the systea by allocating cylinders evenly across all available channels and devices.
In order for a device to be considered available for the allocation of
paging and spooling space: Its volume serial number must appear in the system's owned list. It must have at least one cylinder of temporary space aarked as
available in the cylinder allocation block which is located on
cylinder 0, head 0, record 3. I It must not be an KSS 3330V volume. At system initialization time, CPINIT reads in the allocation records
for each volume and constructs the chains of device allocation blocks from which D!KPGT allocates the cylinders. In managing the cylinder
allocation, D!KPGT takes three factors into consideration: device type,
device address, and possible status as a preferred paging device. A request for a cylinder of virtual storage page space is satisfied by allocating space on a preferred paging device, provided that one
exists on the system and that it has page space available. Preferred paging devices are specified by the installation at systea generation time, and generally should be devices on which excessive seek times do
not occur. A typical preferred paging device would be the IBM 2305 Pixed Head Storage facility. If the 2305 is assigned as a preferred
device, it is possible to allocate some of its space for other
high-priority data files without excessively degrading paging. An example of such usage would be for high activity read-only saved systea pages that are not shared in real storage, and high-activity systea residence disks.
It is also possible to designate movable-head DASD devices such as
the 3330, 3340, 3350 and 2314/2319 Direct Access storage facilities as
preferred paging devices. The module(s) so designated should not be
required to seek outside of a relatively narrow cylinder band around the
center of the paging areas. It is advisable to share the access ara of
a movable-head preferred paging device with only the lowest-usage data
files.
If one or more preferred devices are defined on the systea, CP allocates all of the page space available space on these before it
allocates on any other available owned volumes. Within the class of
preferred devices, space is allocated first on the fastest devices, and
these are spread out across channels and devices. Allocation on
nonpreferred devices is spread out in the same aanner. cylinders for
spooling space are not allocated from preferred devices. Allocation on
a given device is done from the relative center of the volume outward, a
cylinder at a time in a zig-Zag fashion in an attempt to miniaize seek
tiaes.
1-112 IBM V!/370 System Logic and Problem Deteraination--Voluae 1
When a request to allocate a slot for virtual storage paging is
received by DMKPGTGT and the slot aust be allocated on a moveable head
(2314/2319, 3330, 3340, or 3350) device, a cylinder and slot are
selected in the following manner:
1. CP tries to allocate a space on the cylinder at which the arm on
the selected device is currently positioned.
2. If slots are not available on the current cylinder, CP tries to
allocate space on a cylinder for which paging I/O has been queued.
3. If the above conditions cannot be met, CP allocates space as close
to the center of the volume as is possible.
Before DMKIOSQR is called, the queue of IOBLOKs currently scheduled
on the device is examined. If paging I/O has already been scheduled on
a device, the paging channel programs are slot-sorted and chained together with TICs.
PAGING I/O DMKPAGIO handles all input/output requests for virtual storage and
spooling pages. DMKPAGIO constructs the necessary task blocks and
channel programs, expands the compressed slot addresses, and maintains a
queue of CPEXBLOKs for pages to be moved. Once the I/O scheduled by DMKPAGIO completes, it unchains the CPEXBLOKs that have been queued and
calls DMKSTKCP to stack them for execution. DMKPAGIC is entered by a GOTO from: DMKPTRAH to read and write virtual storage pages DMKRPA to read and write virtual storage spool buffers
In either case, all that needs to be passed to DMKP1GIO is the
address of the CORT1BLE entry for the page that is to be .oved, the
address of a SWPTABLE entry for the slot, a read or write operation
code, and the address of a CPEXBLOK that is to be stacked for
dispatching after the 110 associated with the page has completed. DMKPAGIO obtains an IOBLOK and builds a channel program to do the
necessary I/O, and uses the device code that is part of the page address
to index into the syste.'s OWHDLIST and locate the real device to which
the I/O request should be directed. If the device is capable of
rotational position sensing, the required sector is computed and a SET SECTOR co.mand is inserted into the channel program. The real SIO supervisor DKKIOSQR is then called to schedule the operation on the
proper device. When the interruption for the paging operation is processed by the
primary I/O interruption handler, the IOBLOK that controls the operation
is unstacked to the interruption return address, waitpage, in DKKP1GIO. waitpage then unchains the CPEXBLOKs that are queued to DKKP1GO. and
then stacks the queued CPEXBLOKs, by calls to DKKSTKCP, in the order in
which they were received. The address of the real page frame is filed
into the appropriate page table entry and the pointers denoting the
ownership of the real page fraae are filed into the CORT1BLE entry by
the processing routines in DKKPTR1H. If a fatal I/O error occurred for
the related page fraae, the CPEXBLOKs associated with it are flagged,
and the dispatcher, DMKSDPCH. sets a nonzero condition code when it
activates the pending task. The error recovery followed depends on the
operation being perforaed. Paging I/O errors associated with spooling
operations are discussed in "D1SD Errors During Spooling" in this
CP Introduction 1-113
Previous Page Next Page