requests .ay be
storage requests
restraints until the second
routine has been invoked:
All requests for user storage are changed to requests for nucleus
storage.
In particular, it is possible to release a block that was never
allocated.
All requests that are satisfied in high stcrage must be temporary,
because all high storage allocated is released when the second
free storage initialization routine is invoked.
When
at the point just after the system disk has been accessed. This
virtual storage is known, because the saved
size virtual machine. Thus, the first initialization routine
initializes
the second initialization routine performs the initialization
necessary to allow the full functions of
initialization routine. This routine is invoked after the size of
virtual storage is known, and it performs the initialization
necessary to allow all the functions of
second initialization routine performs the following steps:
Releases all storage that has been allocated in the highstorage
area.
Allocates the
byte for each 4096-byte page of virtual storage, and so cannot be
allocated until the size of virtual storage is known. It is
allocated in the low-address free storage area, if there is enough
storage area. For a 256K virtual machine,
bytes; for a 16
The
are initialized.
All completely non-allocated 4K pages
chain are
up operations are performed.
on the nucleus free storage
Any other necessary cleaning
purposes. It invokes a routine that performs a thorough check of all
free storage chains for consistency and correctness. Thus, it checks
to see whether any free storage pointers have been destroyed.
described in the preceding paragraph to be invoked each time any call
is made to
problem that is, for example, destroying free storage management
pointers. Care should be taken when using this
CHECK routine is coded to be thorough rather than efficient.
2-106