主旨

运行进程需要将必须数据存放在内存上。为了安全高效使用物理内存,每个进程都使用自己的虚拟内存空间。

进程虚拟内存空间布局

cat或pmap看进程的虚拟内存空间布局

cat /proc/pid/maps
或
pmap pid

32位机器上进程虚拟空间的分布

32位机器的寻址范围是2^32,即4G。其中用户态空间3G、内核态空间1G。

image.png

进程的虚拟地址空间分布如图所示,其中从低地址到高地址依次是

64位机器上进程虚拟内存空间分布

64位机器上,指针的寻址空间是2^64,也即16EB。这个空间太大了,因此不会这样使用,而是只用48位来描述虚拟内存空间,也就是2^48,256TB。

低128T(0x0000 0000 0000 0000 ~ 0x0000 7FFF FFFF F000)表示用户态虚拟内存空间。