Massive Memory Management Modification

The memory management scheme now works a little bit better in the paging world.

Memory management is now divided to two parts, physical and virtual.

Physical Memory Manager (pmm) consists of pmm_getframe() and pmm_releaseframe(). It uses a stack approach to push and$

Virtual Memory Manager (vmm) consists of vmmlist_use(), vmmlist_delete() and vmmlist_merge(). They are based on the p$

Finally, other parts of the kernel will be using kmalloc(), krealloc() and kfree(). They mainly utilize the virtual m$

Caveats:
1. krealloc() is a complete mess and should not be used until a full revision has been made
2. the mapping of virtual to physical should be done in vmmlist_use(). This is currently not done. Thus, the code onl$
3. we utilize the address of kernel_pagedir from paging.c in mm.c. In the future this won't do, since there'll be mul$

All in all, this should help dealing with virtual addresses (loading ELF files, mostly) a lot.