Hi,
My current understanding is that the default kernel configuration can recognize only 896 MB of RAM. Explicit options need to be selected while compiling the kernel. I read that this is due to limitations of 32-bit address space in x-86 architecture. What are these limitations?
Also my concepts of high memory are a bit hazy. This page is the best i have got until now.
http://kerneltrap.org/node/2450
It has a paragraph saying...
"Since Linux can't access memory which hasn't been directly mapped into its address space, to use memory > 1 GB, the physical pages have to be mapped in the kernel virtual address space first. This means that the pages in ZONE_HIGHMEM have to be mapped in ZONE_NORMAL before they can be accessed".
Someone please explain this to me. If we have 32 bits we can map upto 4 GB, just that these addresses need to be converted to physical addresses. Then what does the para imply.
Also why were these zones...HIGHMEM, NORMAL....created in the first place. If anyone has good links, it will really be helpful if you could share it.