Shared libraries (IBM)

BRUCE at umdb BRUCE at umdb
Fri Jul 29 23:10:00 AEST 1983


From:  Bruce Crabill <BRUCE at umdb>

There was nothing intrinsic to IBM's 360 architecture that made dynamic linking
possible.  It was all done with software and should be do-able on almost any
machine.  Univac does however have hardware features that make shared libraries
very efficient to use.  They have a memory mapping concept that allows upto 4
address spaces ("banks") to be visible at any given time.  They have an
instruction that says to make a given bank visible and to jump to it.  If the
bank is not currently in memory at the time, the operating system is given an
interrupt and it swaps it in.  Entry points to these "common banks" (as Univac
calls these pieces of shared code) are usually handled by having a jump vector
at the beginning of the common bank.  Thus, the entry points always have a fixed
address and changes to the common bank will not require modifications to
existing programs.  Back to IBMs, VM/370 has a feature of shared code much like
Univac's common banks except that it is implemented via software.  In VM, a
program must issue a DIAGNOSE (a operating system call) to cause a given piece
shared code to be mapped into a user's address space.  This requires much more
work on the part of the operating system than Univac's approach since it always
requires OS intervention rather than only when the shared code is not in memory,
which, for commonly used routines, it probably is.  IBM has a feature called
DAS ("Dual Address Space") that appears to do this all in hardware the same
as Univac.  It is only available on the 308x as a standard feature and on the
3031, 3033 and 4341 as optional features.  It appears to have been designed
for MVS.

                                       Bruce

Arpanet:  BRUCE%UMDB.BITNET at BERKELEY
Bitnet:   BRUCE at UMDB



More information about the Comp.unix.wizards mailing list