But coming to kernel they distinguish logical address from virtual> address. What is the main difference.
kernel logical address has linear (one-to-one) mapping of physicaladdress to virtual address range. e.g. kernel logical address (linearaddress) from 3G to 4G (on x86) can map physical memory of 0-1G, so itis intutive to get physical address from a logical address bysubtrating 3G from logical address.while kernel virtual address can be though of as logical address withno restriction of linear mapping. Then how they map to physical pages?Well this is achieved through page tables mapping like user spaceaddress, however the virtual address range falls in 3G-4G (on x86)range only. Basically you can say it is the process mapping of kernelvirtual address range (3G-4G) in its page tables. CPU works throughpage-tables hence requires kernel virtual address in codeinstructions. So, it is possible thats a kernel page has kernelvirtual address as well as logical address.
> Also, they emphasize on high memory and low memory. Why can not high> memory can be mapped in to kernel completely.> Why is that kernel has less visibility of complete space available on RAM.
For a limited address space range of linear mapping, physical memoryhas to be limited (one-to-one mapping). So, if your system (x86) hasmore than 1G physical RAM, Linux provides some mechanism releasingsome small slot between (3G + 896M) to 4G for dynamically mapping Highphyical memory page frames (>896M physical address), since you can'talways map the complete physical RAM all the time. This dynamicmapping is done through kmap().
> what is very minimal implementation of MMU for real time systems.
# CONFIG_MMU is not setmeans linear mapping of all physical address to virtual address. Notsure, but seems it requires processor support to work on linearaddress bypassing page-tables conversion.Rajat
it from linux kernel maillist
