与内核/用户页面的ZONE_NORMAL关联

时间:2010-12-25 23:59:19

标签: linux-kernel kernel arm linux-device-driver embedded-linux

alt text

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

  • 是否,ZONE_NORMAL由内核空间页面组成?
  • 如果ZONE_NORMAL仅由内核页面组成,并且完全映射到内核空间虚拟地址范围,那么用户空间页面位于何处?在物理内存中似乎没有任何用户空间页面的空间。

我完全混淆了物理内存小于4GB的情况,如我所提出的这种情况所示。我在ZONE_HIGHMEM上“错过”了吗?如何确定,物理内存有多少用于ZONE_NORMAL以及有多少用于ZONE_HIGHMEM?

如果有人能够对此有所了解,我将非常感激。

1 个答案:

答案 0 :(得分:3)

是否,ZONE_NORMAL只包含内核空间页面?

=== NO。

ZONE_NORMAL表示它被线性映射到物理内存中。虚拟地址和相应的物理地址之间的偏移量是一个常数值(通常为0xc000,0000)。例如,如果虚拟地址为0xc123,0000,则其物理地址为0x0123,0000。

ZONE_NORMAL中的页面可以由内核或用户级进程使用,只要它们不相互冲突即可。

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