Почему ядра используют старший логический адрес

Для 32-битной ОС. Ядро Linux занимает старший логический адрес 3~4GB (и 2~4GB для Windows). Интересно, почему разработчик выбрал старший адрес вместо 0~1 ГБ для Linux, и поскольку ядро ​​на самом деле имеет физический младший адрес, выбор низкого логического адреса приведет к более гармоничным логическим/физическим отношениям. почему бы нет?


person Qiang    schedule 26.01.2018    source источник
comment
Связанный: В чем преимущество 3G/1G Разделение ВМ   -  person Mark Plotnick    schedule 27.01.2018
comment
@MarkPlotnick Я знал о преимуществах разделения 3G/1G, но почему не 1G/3G, на вопрос нет ответа   -  person Qiang    schedule 27.01.2018
comment
@sawdust Я не могу понять преимущества того, что пользовательские программы могут занимать младший адрес от ZERO. с одной стороны мало чем отличается от ONE Giga (как программист на C/C++ я никогда не заморачиваюсь где будет находиться моя программа), с другой стороны на самом деле gcc/g++ линкует программу не с 0 по умолчанию , я нашел это objdump -h /bin/ls   -  person Qiang    schedule 27.01.2018


Ответы (1)


До того, как PIC (позиционно-независимый код) стал популярен, существует множество статически связанных программ, которые можно загрузить только по указанному адресу, вероятно 0x400000

Для совместимости с этими программами ядро ​​не должно получать адресное пространство. Таким образом, ядро ​​​​расположено в высоком адресном пространстве 1G.

person Zang MingJie    schedule 30.01.2018