Hi;
It's a known fact that Windows applications usually have 2Gb of private addess space on a 32bit system. This space can be extended to 3Gb with the /3Gb switch.
The operating system reserves itself the remaining of the 4Gb.
My question is WHY?
Code running in kernel mode (ie device driver code) has its own address space. Why, on top of a exclusive 4Gb address space, the operating system still want to reserve 2Gb of each user-mode process?
I thought the reason is the transition between user-mode and kernel-mode call. For example, a call to NtWriteFile will need an adress for the kernel dispatch routine (hence why the system reserve 2Gb in each application). But, using SYSENTER, isn't the system service number enough for the kernel-mode code to know which function/service is being called?
If you could clarify to me why it's so important for the operating system to take 2Gb (or 1Gb) of each user-mode process, I'll be thankful.
Thank you.