In a physical memory space, a pinned memory region is defined at one end of the
space and a non-pinned region is defined at the other end of the space. A free
region is between the pinned and non-pinned regions. Requests for pinned memory
allocations are satisfied either by using holes in the pinned region or by appending
the requested block to the end of the pinned region in the free region. The free
region may be widened to accommodate pinned memory allocations. Requests for non-pinned
memory allocations are satisfied by holes in the non-pinned region, by being appended
to the non-pinned region in the free region or by filling holes in the pinned region,
in that order.