Hi,
I was studying "Understanding the Linux Kernel" regarding memory management. I have few questions on that.
"
Linear addresses from 0x00000000 to 0xbfffffff can be addressed when the process runs in user mode / kernel mode.
Linear addresses from 0xc0000000 to 0xffffffff can be addressed only when the process runs in kernel mode.
The mapping entries that map the linear addresses greater than 0xc0000000 should be the same for all processes and equal to the entries of the master kernel page global directory.
"
My question is :
1. Does this mean that irrespective of which process is in kernel mode, a linear address X will only map to the same physical address Y ?
( Because in user mode, linear address X can map to physical address Y for process P1, but for another
process P2 the same linear address X will map to another physical address Z. )
2. If so, does this mean two different processes in kernel mode cannot access the same linear address X ( unless the address maps to common kernel code or data ) ?
Also when explaining ZONE_DMA , ZONE_NORMAL etc , the author says "The ZONE_DMA and ZONE_NORMAL zones include the 'normal' page frames that can be directly accessed by the kernel through the linear mapping in the fourth gigabyte of the linear address space".
Why only the fourth gigabyte of the linear address space ? Do not the 0-3GB of user mode address space use the page frames of these Zones ?
Please clarify.
Thanks,
Rajaram.
Rajaram.
Looking for a deal? Find great prices on flights and hotels with Yahoo! FareChase.