system_page_file mapping |||| |||||| |||| || | VAS 2 |--------vvvv--vvvvvv---vvvv-------vv---v------| On Microsoft Windows 32-bit, by default, only are made available to processes for their own use. The other are used by the operating system. On later 32-bit editions of Microsoft Windows it is possible to extend the user-mode virtual address space to while only is left for kernel-mode virtual address space by marking the programs as IMAGE_FILE_LARGE_ADDRESS_AWARE and enabling the /3GB switch in the boot.ini file. On Microsoft Windows 64-bit, in a process running an executable that was linked with /LARGEADDRESSAWARE:NO, the operating system artificially limits the user mode portion of the process's virtual address space to 2 GiB. This applies to both 32- and 64-bit executables. Processes running executables that were linked with the /LARGEADDRESSAWARE:YES option, which is the default for 64-bit Visual Studio 2010 and later, have access to more than of virtual address space: up to for 32-bit executables, up to for 64-bit executables in Windows through Windows 8, and up to for 64-bit executables in Windows 8.1 and later. Allocating memory via C's malloc establishes the page file as the backing store for any new virtual address space. However, a process can also explicitly map file bytes. Linux For x86 CPUs, Linux 32-bit allows splitting the user and kernel address ranges in different ways: 3G/1G user/kernel (default), 1G/3G user/kernel or 2G/2G user/kernel. See also Linear address space Single address space operating system Notes References "Advanced Windows" by Jeffrey Richter, Microsoft Press Virtual memory de:Virtueller Adressraum