Need of different memory zones

Mulyadi Santosa mulyadi.santosa at gmail.com
Thu Mar 14 11:49:16 EDT 2013


On 3/13/13, Niroj Pokhrel <nirojpokhrel at gmail.com> wrote:
> Hi All,
>
> I have been studying Memory Management in linux. But I am confused with the
> division of different ZONE. The use of ZONE_DMA and ZONE_NORMAL is fine.
> But I am confused with ZONE_HIGHMEM, if the system is 32 bit then why can't
> it map 4GB memory (2^32). I had thought that ZONE_NORMAL was for the kernel
> usage so directly mapped and ZONE_HIGHMEM for the user process and is not
> directly mapped to facilitate virtual addressing.

The thing is, although 32 bit system indeed has 4 GB address space,
kernel space only has 1 GB address space. This is due to 3:1 VM split,
which means user space has 3 GB address space, while kernel space has
1 GB.

Furthermore, this 1 GB is also used for certain mapping like vmalloc
etc, so actually kernel has 896 MB (1 GB - 128 MB) address space.
Thus, ZONE_HIGHMEM represents memory mapping beyond 896 MB.

And don't forget that Linux kernel does identical mapping, so this 896
MB address space also means your first 896 MB of the RAM.
-- 
regards,

Mulyadi Santosa
Freelance Linux trainer and consultant

blog: the-hydra.blogspot.com
training: mulyaditraining.blogspot.com



More information about the Kernelnewbies mailing list