32位Windows操作系统支持32位寻址,因此2的32次方就等于4GB,每个程序在运行时都会被映射进4GB空间的内存空间,这4GB空间不全是用户可以使用的,其中0x7fffffff-0xffffffff是2GB的内核空间,这部分用来保存内核的数据,用户程序是无法直接访问的。
进程空间的地址是一个逻辑地址,它首先通过分段机制的段选择子和偏移地址计算出一个线性地址,再由分页机制分解线性地址,最终找到实际的物理地址上的数据。
下图中32位系统的进程虚拟内存空间布局:
64位Windows操作系统的进程虚拟内存空间布局是不一样的,就不详细解释了: