DMSFREE FREE STORAGE POINTERS The pointers FREEUPPR and FREELOWE in NUCON indicate the amount of
storage which DMSFREE has allocated from the high portion of the user
program area. These pointers are initialized to the teginning of the
system loader tables.
The pointer FREELOVE is the pointer to the levest address of D8SPREE storage in the user program area, As storage is allocated fros the user
program area to satisfy D8SFREE requests, this pointer is adjusted
downward. Such adjustments are always in multiples of 4K, so that this
pointer is always on a 4K boundary. As the allocated storage is
released, this pointer is adjusted upward when whole 4K pages are
completely free.
The pointer FREELOVE can never be lower than ftAINHIGH, the pointer to
the highest address of GETHAIN storage. If a D5SFREE request cannot be satisfied without extending FREELOVE below 8AINHIGH, then D8SPBEE takes
an error exit, indicating that insufficient storage is available to
satisfy the request.
The FREETAB free storage table is kept in free storage, usually just
below the master file directory for the system disk. If there was no
space available there, then FREETAB was allocated from the top of the
user program areao This table contains one byte for each page ef
virtual storage. Each such byte contains a code indicating the use of
that page of virtual storage. The codes in this table are as follows: (1): If the page is assigned to user storage. If the page is assigned to nucleus storage. (J): If the page is part of the transient program area. If the page is part of the user program area. If the page is none of the above.
In these cases, the page is assigned to system storage, system code,
or the loader tables. Other DMSFREE storage pointers are maintained in the DMSFRT control
section, in NUCON. The most important fields there are the four chain
header blocks.
Four chains of elements are not allocated to be associated with DMSFREE storage: The low-storage nucleus chain, the low-storage user
chain, the high-storage nucleus chain, and the high-storage user chain.
For each of these chains, exists a control block consisting of four
words, with the following format: CMS Method of Operation and program organization 2-101
These <------------- 4 bytes -------------) .-- IPOINTER -- pointer to the first
o (0) I I I free element on the chain, or
zero, if the chain is empty. I NUM -- the number of elements on
4 (4) 1 the chain. I I I MAX -- the value in this werd is
8 (8) I the size of the largest free I element on the chain. I I FLAGS- I SKEY - I TCODE -I Unused
12(C) I Flag IStorage IFREETAB I I byte I key I code , L-- __________________________________ the follcving uses; POINTER This field 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 a zero. NUM This field contains the number of elements on this chain of
free elements. If there are no elements on this free chain,
then this field contains a zero. MAX This field is used for the purpose of avoiding searches which
will fail. It contains 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 ftAX field. FLAGS The following flags are used:
FLCLN (X' 80') Clean-up flag -This flag is set if the chain must be cleaned up.
This is necessary in the following circumstances:
- If one of the two high-core chains contains a 4K page that is
pointed to by FREELOWE, then that page can be removed from the
chain, and FREELOVE can be increased.
- All completely non-allocated 4K pages are kept on the user
chain, by convention. Thus, if one of the nucleus chains
(low-core or high-core) contains a full page, then this page must be transferred to the corresponding user chain.
FLCLB (X'40') Clobbered flag -Set if the chain has been destroyed.
FL H
C (X ' 20 )
High-core chain -Set for both the nucleus and user high-core
chains. FLHU (X' 10') Nucleus chain -Set for both the low-core and high-core nucleus
chains. 2-102 IBM VM/370 System Logic and program Deter.ination--Volume 2
Previous Page Next Page