内存管理之虚拟地址空间布局——虚拟地址空间划分

因为目前应用程序没有那么大的内存需求,所以ARM64处理器不支持完全的64位虚拟地址,实际支持情况如下:

虚拟地址的最大宽度是48位:

  • 内核虚拟地址在64位地址空间的顶部,高16位是全1,范围是[0xFFFF_0000_0000_0000, 0xFFFF_FFFF_FFFF_FFFF];
  • 用户虚拟地址在64位地址空间的底部,高16位全是0,范围是[0x0000_0000_0000_0000, 0x0000_FFFF_FFFF_FFFF];

高16位是全1或全0的地址称为规范的地址,两者之间是不规范的地址,不允许使用。

内存管理之虚拟地址空间布局——虚拟地址空间划分_第1张图片

在ARM64架构的Linux内核中,内核虚拟地址和用户虚拟地址的宽度相同。

所有进程共享内核虚拟地址空间,每个进程有独立的用户虚拟地址空间,同一个线程组的用户线程共享用户虚拟地址空间,内核线程没有用户虚拟地址空间。

你可能感兴趣的:(Linux内核深度解析,操作系统,linux)