WAKEUP External Call "wake-up" an idle processor. If the system was running a user, reload the external old PSW. If the system was not running a user, then try to obtain the SYSTEa lock. If the SYSTEM lock is obtained, give control to the dispatcher at DMKDSPCH. If the lock is not obtained, give control to the dispatcher at DMKDSPRU. DISPATCH External Call
Inform the other processor of a processor related CPEXBLOK. Try to obtain the global system lock. If the system lock is obtained, go to the dispatcher at DMKDSPCH. If the lock is not obtained and the system Was in a wait state, go to DMKDSPRU. If the lock was not obtained and the system was not in a wait state,
reload the external old PSi. Time-of-Day SYNC Check Call DMKCLKSC. DMKCLKSC signals the attached processor to quiesce.
It then sends message DMKCLK970W to the operator and calls D8KCLK8P. DMKCLKMP issues a SYNC emergency signal to synchronize the clocks. DMKCLKSC issues a RESUME signal to allow the attached processor to
continue. If the SYSTEM lock is held, go to the dispatcher at DHKDSPCH. If the SYSTEM lock is not held, go to the dispatcher at DHKDSPRU. I/O Subsystem
The I/O subsystem of V8/370 runs under the global system lock on either
the main processor (processor with I/O capability) or the attached
processor (processor without I/O capability). The I/O first level
interrupt handler (DHKIOSIN) is the only exception; it runs unlocked
during its normal error free processing. The main processor owns all
real I/O blocks (RCHBLOK, RCUBLOK and RDEVBLOK). DHKIOSII always runs on
the main processor because only the main processor can receive I/O interrupts. All other routines that set any fields within the real I/O control blocks or that are dependent upon the status of a real I/O control block remaining static, must use the SWITCH macro to force their
processing to the main processor. All routines within DHKIOS with the
exception of DHKIOSRW, reissue the SWITCH macro whenever loss of control
is a possibility, to ensure that processing remains on the main processor.
The SWITCH macro tests to see if it is running on the attached
processor or the main processor. If it is running on the attached
processor it issues an SVC 24 to transfer control to the .ain processor
and to resume execution at the next sequential instruction. CP Introduction 1-179
If DKKIOS receives an unsolicited interrupt or an I/O error for
scheduled I/O, a call is made to DKKFREE for either an IOBLOK, CPEXBLOK, or an IOERBLOK. DKKFREE will ensure that control is returned to the
processor that initiated the request. Shared Segment The shared seqment suufunction of VK/370 (DftKITS, DftKCFG, DftKCFB, DKKPGS, and DKKVKl) runs under the global system lock on either the main processor or the attached processor. All protected shared segments are
duplicated in a system that is generated for attached processor mode and
that is initialized on a machine with the multiprocessing feature. DKKCFG obtains sufficient storage to construct the duplicate page and
swap tables in contiguous storage. The SHRTIBLE SHRPIGE pointer points
to the page and swap tables for the main processor, and the page and
swap tables for the attached processor are at a fixed displacement from
the page and swap tables for the main processor. DftKCFG initializes
both sets of page and swap tables. Initially, the two swap tables point
to the DlSD locations specified in DKKSBT. However, as the pages are
read into storage and then stolen, each shared page is allocated its own DlSD slot and is pointed to by only one swap table entry.
The last user to purge a shared system causes both sets of page and
swap tables to be released. One shared page table is reserved for use by each processor. This
includes both problem state and supervisor state execution on behalf of
a virtual machine. To accomplish this, each time a virtual machine running a shared system is locked, a test is made to determine whether
or not the virtual machine was last serviced on this processor. If it
was last serviced on the other processor, all of its shared page table
pointers in its segment tables are switched to this processor's shared
pages.
DKKPTR is able to steal a shared page from a shared page table
reserved for the processor it is running on without notifying the other
processor. The virtual page could not appear in the look-aside buffer
of the other processor.
The dispatcher releases the VKBLOK lock on LlSTUSER following the
check for pending interrupts (assuming no fast redispatch possible)
unless the virtual machine was running one or more shared systems. In
the latter case the VKBLOK lock is not released until the DftKVKl scan
for a changed page is completed. DKKVKA scans all protected shared segments that the virtual machine used. For every changed page that it finds, DftKVKl checks whether or
not the system lock is held. If the system lock is held, the changed
page is returned to CP free storage. If the system lock is not held, DKKVKl marks the page table entry as invalid, marks the swap table entry
as in transit, and indicates that the core table entry is on the free
and flush lists. The other virtual machines can continue to use the
shared segments. The changed pages are replaced when the next reference
to the changed page is made.
If the shared segment is violated, an error message (DKKVft1456) is
sent to the violator, and he is placed in console function mode. The user may examine his PSW and registers to determine what caused the
viOlation. The user enters the BEGIN command to resume execution at the
point of interruption. 1-180 IBM VK/370 System Logic and Problem Deter.ination--Voluae 1
Previous Page Next Page