Page of GC20-1807-7 As Updated April 1, 1981 by TNL GN25-0829 OtheL DMSFREE storage pointers are maintained in the DMSFRT CSECT, in NUCON; The four chain header blocks are the most important fields in DMSFRT. The four chains of unallocated elements are: The low storage nucleus chain The low storage user chain The high storage nucleus chain The high storage user chain
For each of these chains of unallocated elements, there is a control
block consisting of four words, with the following format: POINTER NUM MAX FLAGS r 1 0(0) I I 4 (4)
8 (8)
12 (C)
i POINTER -- pointer to the first
free element on the chain
6
or
zero, if the chain is empty. ----I 1 1---- NUM -- the number of elements on
the chain. MAX -- a value equal to or grea ter
than the size of the largest
element. I I FLAGS- I SKEY I TCODE -I Unused Flag IStorage IFREETAB byte 1 key I code
1
points to the first element on this chain of free elements.
If there are no elements on this free chain, then the POINTER field contains all zeros.
contains the number of elements on this
elements. If there are no elements on this
this field contains all zeros.
chain of free
free chain, then
is used to avoid searches that will fail. It contains a
number equal to or greater than the size, in bytes, of the
largest element on the free chain. Thus, a search for an
element of a given size will not be made if that size exceeds
the MAX field. However, this number may actually be larger
than the size of the largest free element on the chain.
The following flags are used:
FLCLN (X'80') -- Clean-up flag. This flag is set if the chain
must be updated. This will be necessary in the following
circumstances: If one of the two high storage chains contains a 4K page to
which FREELOWE points, then that page can be removed from
the chain, and FREELOWE can be increased. All completely unallocated 4K -pa-g-€-s are kep-t on th-e user
chain, by convention. Thus, if one of the nucleus chains
(low storage or high storage) contains a full page, then
this page must be transferred to the corresponding user
chain. Part 3. Conversational Monitor System (CMS) 249
SKEY TCODE
April 1, 1981
FLCLB (X'40') -- Destroyed flag. Set if the chain has been
destroyed.
FLHC (X'20') -- High storage chain.
and user high-storage chains. Set for both the nucleus FLNU (X'10') -- Nucleus chain. Set for both the low storage
and high storage nucleus chains. FLPA (X'08') -- Page available. This flag is set if there is
a full 4K page available on the chain. This flag may be set
even if there is no such page available.
contains the one-byte storage key assigned to storage on this
chain.
contains the one-byte FREETAB table code for storage on this
chain. When DMSFREE with TYPE=USER (the default) is called, one or more of the
following steps are taken in an attempt to satisfy the request. As soon
as one of the following steps succeeds, then user free storage
allocation processing terminates.
1. search the low storage user chain for a block of the required size.
2. Search the high storage user chain for a block of the required
size.
3. Extend high storage user storage downward into the user program
area, modifying FREELOWE in the process.
4. For a variable request, put all available storage in the user program area onto the high storage user chain, and then allocate
the largest block available on either the high storage user chain
or the low storage user chain. The allocated block will not be
satisfactory unless it is larger than the minimum requested size. When DMSFREE with TYPE=NUCLEUS is called, the following steps are taken
in an attempt to satisfy the request, until one succeeds:
1. Search the low storage nucleus chain for a block of the required
size.
2. Get free pages from the low storage user chain, if any are
available, and put them on the low storage nucleus chain.
3. Search the high storage nucleus chain for a block of the required
size.
4. Get free pages from the high storage user chain, if they are
available, and put them on the high storage nucleus chain. 250 IBM VM/370 System Programmer's Guide
Previous Page Next Page