For example, I launched a self-made SDL program that I compiled and linked as a Windows PE on Win 7 64-bit. I checked the Assembly output, both the linked libraries and source from the file, and read the stack frame in memory.
(We will use x86-64, IA-32/IA-64 as an example here)
But I know that since there's virtual memory, a virtual address space is used (of 4 gigabytes I think) and all other files, such as the SDL library that is dynamically linked, will be loaded all in the same address space to run in memory.
BUT ... how can I find out how, in the basic sense or not, the operating system's kernel manages this?
I am an aspiring OS developer, but I can't find clarity on this subject in particular.
How does the kernel and the VAD quickly traslate the virtualized addresses/address space to the real stack where it's processed in RAM?
Anyone know any idea how this works? I'd be honored to hear it in detail, or any ideas. Thanks.