Virtual address space
In computing, a virtual address space is an area of contiguous virtual memory locations, called virtual addresses, which an operating system makes available to a process for executing instructions and storing data, and which it maps to the address space of physical addresses in a computer's hardware memory. The range of virtual addresses usually starts at a low address and can extend to the highest address allowed by the computer's instruction set architecture and supported by the operating system's pointer size implementation, which can be 4 bytes for 32-bit or 8 bytes for 64-bit OS versions. This provides several benefits including security through process isolation, assuming each process is given a separate address space.
Example
When a new application on a 32-bit OS is executed, the process has a VAS: each one of the memory addresses in that space can have a single byte as a value. Initially, none of them have values. Using or setting values in such a VAS would cause a memory exception.Then the application's executable file is mapped into the VAS. Addresses in the process VAS are mapped to bytes in the EXE file. The OS manages the mapping:
The symbol represents values from bytes in the mapped file. Required DLL files are then mapped :
The process then starts executing bytes in the EXE file. However, the only way the process can use or set values in its VAS is to ask the OS to map them to bytes from a file. A common way to use VAS memory in this way is to map it to the page file. The page file is a single file, but multiple distinct sets of contiguous bytes can be mapped into a VAS:
And different parts of the page file can map into the VAS of different processes:
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 and enabling the switch in the file.
On Microsoft Windows 64-bit, in a process running an executable that was linked with, 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 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.