Если это первый, то чем это означает, что обычная пользовательская программа не может иметь более 3 ГБ памяти (если разделение составляет 3 ГБ + 1 ГБ)?
Да, это так в обычной системе Linux. В какой-то момент существовал набор патчей "4G / 4G", которые делали адресные пространства пользователя и ядра полностью независимыми (за счет снижения производительности, поскольку это затрудняло доступ ядра к памяти пользователя), но я не думаю они когда-либо были объединены в восходящий поток, и интерес уменьшился с появлением x86-64
Кроме того, в этом случае, как ядро может использовать High Memory, потому что на какой адрес виртуальной памяти будут отображаться страницы из верхней памяти, как 1 ГБ ядра пространство будет логически отображено?
Linux работал (и до сих пор работает в системах, где память мала по сравнению с адресным пространством) заключался в том, что вся физическая память постоянно отображалась в ядро части адресного пространства . Это позволило ядру получить доступ ко всей физической памяти без переназначения, но очевидно, что оно не масштабируется до 32-разрядных машин с большим количеством физической памяти.
Так родилась концепция низкой и высокой памяти. "низкая" память постоянно отображается в адресное пространство ядра. "высокой" памяти нет.
Когда процессор выполняет системный вызов, он работает в режиме ядра, но все еще в контексте текущего процесса. Таким образом, он может напрямую обращаться как к адресному пространству ядра, так и к пользовательскому адресному пространству текущего процесса (при условии, что вы не используете вышеупомянутые патчи 4G / 4G). Это означает, что «верхняя» память может быть выделена процессу пользователя без проблем.
Использование «верхней» памяти для целей ядра представляет большую проблему. Чтобы получить доступ к верхней памяти, которая не отображена в текущий процесс, она должна быть временно отображена в адресное пространство ядра. Это означает дополнительный код и снижение производительности.
brd
— это сокращение от broadcast
.
147.202.85.255
— это широковещательный адрес для любого интерфейса, которому принадлежит эта линия.