
create_user_program() called:
OS loads user program's executable into memory. (or at this stage copy its executable but then how will we manage seperated address spaces?) Physical address of loaded file's buffer is important since we can correctly map user program's address space.
I think I can link all user programs programs to same virtual address, since mapping is done by memory manager after loading is done.
Well I know that there is currently nothing about protection stuff (i.e. the ringU, privileges) but they will be applied after loading is finished while mapping is done and also appropriate ldt or gdt is created for new user process.
How do you think is that start?