For 32bit OS. linux kernel occupies the high logical address 3~4GB (and 2~4GB for windows). I wonder why the designer choose the high address, instead of 0~1GB for linux, and because the kernel is actually in the phiscal low address, the choice of low logical address will lead to a more harmonious logical/physical relationship. why not?
Asked
Active
Viewed 122 times
-1
-
Related: [What's the advantage of the 3G/1G VM split](https://stackoverflow.com/questions/8712863/whats-the-advantage-of-3g-1g-vm-split-32bit-linux-kernel) – Mark Plotnick Jan 27 '18 at 01:00
-
@MarkPlotnick I did know the advantages of 3G/1G split, but why not 1G/3G, the question doesn;'t answered it – Qiang Jan 27 '18 at 09:51
-
@sawdust I cannot understand the advantage that user programs able to occupy the low address from ZERO. on the one hand it make little difference with from ONE Giga (as a C/C++ programer, I never concern about where my program will be located), one the other hand, actually, gcc/g++ links the program not from 0 as default, I found this by `objdump -h /bin/ls` – Qiang Jan 27 '18 at 09:58
1 Answers
1
Before PIC (Position-independent code) was popular, there are lots of static linked programs can only be loaded at specified address, likely 0x400000
To be able to compatible with these programs, the kernel must not obtain the address space. So the kernel is located at high 1G address space.

Zang MingJie
- 5,164
- 1
- 14
- 27