Hi All,<br><br>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&#39;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. But I know I am not getting something right. While going through Ch - 15 of Rubini&#39;s Linux Device Driver (Memory Management and DMA) I came across following line <br>
<br>&quot;a 64-bit architecture such as Intel’s x86-64 can fully map and handle 64-bits of memory.Thus, x86-64 has no ZONE_HIGHMEM and all physical memory is contained within ZONE_DMA and ZONE_NORMAL.&quot;  So, if it can be directly mapped why not in 32 bit architecture.<br>
<br>I am really confused. Please Help. Thanking you in Advance <br><br><br>Yours,<br>Niroj Pokhrel<br>