当处理器读取或写入内存位置时,它会使用虚拟地址。 在读取或写入操作过程中,处理器会将虚拟地址转换为物理地址。 通过虚拟地址访问内存有以下优势:
程序可以使用一系列连续的虚拟地址来访问物理内存中不连续的大内存缓冲区。
程序可以使用一系列虚拟地址来访问大于可用物理内存的内存缓冲区。 当物理内存的供应量变小时,内存管理器会将物理内存页(通常大小为 4 KB)保存到磁盘文件。 数据或代码页会根据需要在物理内存与磁盘之间移动。
不同进程使用的虚拟地址彼此隔离。 一个进程中的代码无法更改正在由另一进程或操作系统使用的物理内存。
进程可用的虚拟地址范围称为该进程的“虚拟地址空间” 。 每个用户模式进程都有其各自的专用虚拟地址空间。 对于 32 位进程,虚拟地址空间通常为 2 GB,范围从 0x00000000 至0x7FFFFFFF。 对于 64 位Windows 上的 64 位进程,虚拟地址空间为 128 TB,范围从 0x000'00000000 至0x7FFF'FFFFFFFF。 一系列虚拟地址有时称为一系列“虚拟内存” 。 有关详细信息,请参阅内存和地址空间限制。
此图说明了虚拟地址空间的一些重要功能。