update first free block pointer.
allocate a block of memory.
free a previously allocated block of memory.
allocate adjacent blocks of memory.
free all blocks allocated by the current process.
called by exit() and kmain().