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.
---------------------------------
Looking for a deal? Find great prices on flights and hotels with Yahoo!
FareChase.