access registers (multiple concurrent, active address spaces) & program
call started out as part of 811 (for 370/xa arch. documents dated
nov1978) for MVS. OS/360 was heavily pointer passing API. MVT (real
storage) was initially mapped to a single 16mbyte virtual address space
for VS2/R1 ... then for MVS, VS2/R2 each application and subsystem was
giving its own 16mbyte virtual address space. However, for the pointer
passing APIs, they mapped an 8mbyte image of the kernel into every
application virtual adddress space (leaving 8mbytes for application).
Then for subsystem calls (each in its own private 16mbyte virtual
address space), they created the common segment (1mbyte) mapped into
every 16mbyte virtual address space, parameter list/returns storage can
be allocated in the common segment area and the pointer passed to the
called subsystem.
Common area size requirement is somewhat proportional to number of
concurrent applications and number of subsystems ... by 3033 (before
370/xa & 31bit addressing, still 24bit/16mbytes)) installations were
requiring 5-6 mbytes for the common area (renamed from common segment
area, CSA, to common system area, CSA) leaving 2-3mbytes for
applications ... but threatening to increase to 8mbytes ... leaving zero
bytes for applications.
Come 3081, there is both 370 mode and 370/xa mode ... however customers
weren't migrating to MVS/XA as expected which was increasingly putting
enormous pressure for MVS operation as environments scaled up with more
concurrent applications executing and more running subsystems.
With 370/xa, program call and access registers ... there is privilege
("MVS") kernel table of subsystems and address space pointers.
Subsystem calls reference a specific entry in that table and the
hardware moves the caller's address space pointer into secondary (access
register) and loads the subsystem address space pointer as primarry and
transfers to the subsystem. The subsystem can now directly access the
caller's parameter list in its secondary address space (eliminating the
enormous pressure on the CSA as well as kernel call software overhead
for the switch). The return instruction restores the applications
address space to primary and returns to the caller
--
virtualization experience starting Jan1968, online at home since Mar1970