hi,
I have a few questions I couldn't quite get a handle on it ...
- what is it exactly when people talk about kernel address space? is it physical or virtual, does it refer to the 1G (low memory)?
- I read that user process's virtual address space (32 bit arch) was split 1G/3G, where kernel takes the 1G, and user process takes the 3G. why the 1G/3G split? why can't user process think the whole 4G is its own?
TIA,
oliver
answers
Kernel address space is the portion of the virtual address space marked supervisor-mode-only. In many systems, it includes the first 700+ MB of RAM, mapped to virtual address 0xC0000000.
The split is usually referred to as 3G/1G. There have been experiments with the organization you suggest, 4G/4G. The problem with it is that switching between the user-mode and supervisor-mode address maps takes a lot of time because the poorly-designed Intel MMU requires that the TLBs be flushed. The PowerPC MMU, by contrast, includes the supervisor/user attribute in each TLB entry and so does not require this flush.
By dedicating the first 3G of a 32-bit virtual address space to user mode and the last 1G to kernel mode, the Intel MMU can describe both user and kernel spaces simultaneously.