To follow up on the heap question: Processes don't really have a notion of heap right now. They're given the bare minimum. So if you want to map something into a user process the easier way is have a system call and then call __virt_map_page() to where you want to map stuff and that should map it into whatever process called it. Otherwise if you want to map into another process from the current process you'd have to search all the processes and then call __virt_switch_page_directory() with the pcb->page_directory field of the pcb you found and then do the mapping, don't forget to map back with __virt_switch_page_directory(_current->page_directory) before you return > >