Linux kernel 与内核/用户页面的正常关联

Linux kernel 与内核/用户页面的正常关联,linux-kernel,kernel,arm,linux-device-driver,embedded-linux,Linux Kernel,Kernel,Arm,Linux Device Driver,Embedded Linux,上面给出了一个我只有512MB物理内存的例子。到目前为止,我读到的是ZONE_NORMAL映射到内核虚拟地址空间,如图所示。实际上,我有一个512MB的物理内存,其中496MB的ZONE_NORMAL映射到内核虚拟空间。基于这一理解,我的问题如下: ZONE_NORMAL是否只包含内核空间页 如果ZONE_NORMAL仅由内核页面组成,并且被映射到内核空间虚拟地址范围,那么用户空间页面位于哪里??物理内存中似乎没有任何空间容纳用户空间页 我完全混淆了物理内存小于4GB的情况,如我提出的这个例

上面给出了一个我只有512MB物理内存的例子。到目前为止,我读到的是ZONE_NORMAL映射到内核虚拟地址空间,如图所示。实际上,我有一个512MB的物理内存,其中496MB的ZONE_NORMAL映射到内核虚拟空间。基于这一理解,我的问题如下:

  • ZONE_NORMAL是否只包含内核空间页
  • 如果ZONE_NORMAL仅由内核页面组成,并且被映射到内核空间虚拟地址范围,那么用户空间页面位于哪里??物理内存中似乎没有任何空间容纳用户空间页
我完全混淆了物理内存小于4GB的情况,如我提出的这个例子所示。我是否“错过”了这里的区域?如何确定,有多少物理内存进入ZONE_NORMAL,有多少进入ZONE_HIGHMEM


如果有人能说明这一点,我将不胜感激。

正常区域是否只包含内核空间页面

==否

ZONE_NORMAL意味着它被线性映射到物理内存中。虚拟地址和相应物理地址之间的偏移量是一个常量值(通常为0xC0000000)。例如,如果虚拟地址为0xC1230000,则其物理地址为0x01230000

分区_NORMAL中的页面可以由内核或用户级进程使用,只要它们彼此不冲突


ZONE_HIGHMEM仅在物理内存大于896MB时才存在。

注意问题,答案是关于32位体系结构的。在新的64位世界中,正常区域要大得多,可能您不需要zone_HIGHMEM。我不认为您所说的“zone_normal意味着它线性映射到物理内存”是正确的。