On 3/13/13, Niroj Pokhrel <nirojpokhrel@xxxxxxxxx> 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 _______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies