r , TIPCALL=I.§!£ I IBALRI L .J
indicates how control is passed to DESSTG, the routine that
processes the STRINIT macro. Since DMSSTG is a
nucleus-resident routine, other nucleus-resident routines can
branch directly to it ( TYPCALL=BALR) while routines that are
not nucleus-resident must use linkage SYC (TIPCALL=SYC). If no
operands are specified, the default is TYPCALL=SVC. When the STRINIT macro is executed, both MAINSTRT and MAINHIGH are
initialized to the end of the user's program, in the user program area.
As storage is allocated from the user program area to satisfy GET MAIN requests, the MAINHIGH pointer is adjusted upward. Such adjustments
are always in multiples of doublewords, so that this pointer is always
on a doubleword boundary. As the allocated storage is released, the MAIN HIGH pointer is adjusted downward.
The pointer MAINHIGH can never be higher than FREELOWE, the "low extend" pointer for DMSFREE storage allocated in the user program area.
If a GETMAIN request cannot be satisfied without extending MAINHIGH above FREELOWE, then GETMAIN will take an error exit, indicating that
insufficient storage is available to satisfy the request.
The area between MAINSTRT and may contain blocks of storage
that are not allocated and that are, therefore, available for allocation
by a GETMAIN instruction. These blocks are chained together, with the
first one pointed to by the NUCON location MAINSTRT. Refer to Figure 3
for a description of CMS virtual storage usage.
The format of an element on the GETMAIN free element chain is as
follows: .- 1 I I FREPTR -- pointer to next free
o (0) I eleme nt in the chain I or 0 I if there is no next element I I 'I I I FRELEN --length, in bytes, of
4 (4) I this element I I I I 1------- I Remainder of this free element When issuing a variable-length GETMAIN, two and one-half pages are
reserved for CMS usage; this is a design value. A user who needs
additional reserved pages (for example, for larger directories) should
free up some of the variable GETMAIN storage from the high end. eMS Introduction 2-15
VIRTUAL STORAGE FREELOWE MAINHIGH MAINSTRT DMSFREE requests when
no more low storage available T
Unused portion of User
Program Area •• H .... f't:'V ---------z-- GETMAIN requests Storage __________ The User's Program
(program is loaded via the LOAD command) CMS Nucleus In "saved systems" this area
is a protected segment
(that is, all code must be
reentrant and cannot be
modified) X'tOOOO -1-------------------'----'------1 Transient Area X'EOOO' Low Storage DMSFREE Free Storage Area DMSFREE requests are filled from
this area. The upper part of this
area contains the System Disk MFD
followed by the FREETAB, if there is
enough room.
X'3000' DMSNUC System Control Blocks, flags, constants,
and pointers, __ --------------__ __ __ 'The half-page containing OPSFCT and TSOBLOKS has a storage key; X'E'
Figure 3. eKS Storage CONTROL BLOCKS BRR BEJG 2-16 IBK VK/370 System Logic and Program Determination--Volume 2
Previous Page Next Page