Пространство ядра в a.out - PullRequest
0 голосов
/ 17 января 2012

Я немного запутался в пространстве пользователя и в пространстве ядра. Является ли пространство ядра включенным в виртуальную память 4 ГБ a.out в Linux или пространство ядра другим и не входит в это пространство памяти 4 ГБ. Также часть виртуальной памяти 4 ГБ, которая зарезервирована для операционной системы, включает в себя ядро ​​или пространство ядра. Пожалуйста, исправьте меня, если все вышеперечисленные мои понятия неверны

Ответы [ 2 ]

3 голосов
/ 17 января 2012

Стандартная модель памяти для 32-разрядной системы Linux использует 1 ГБ для ядра и 3 ГБ для пространства пользователя.

Суммируется с общим объемом доступной памяти 4 ГБ, поэтому «да»,Пространство ядра включено в адресное пространство.

В этой статье есть несколько графиков, которые показывают разделение.

2 голосов
/ 17 января 2012

Все зависит от ОС.

Большинство операционных систем делят пространство в 4 ГБ, например, 2/2 или 3/1, потому что это облегчает переход из режима пользователя в режим ядра, таблицы страниц ненужно было переназначить во время переключения.

Однако в Linux даже предусмотрено 4 ГБ пользовательского пространства и 4 ГБ пространства ядра.Но, как вы можете себе представить, это требует переназначения полной памяти каждый раз, когда вам нужно переключиться в режим ядра, что влечет за собой некоторые накладные расходы.

Хотя она находится в вашем пространстве памяти, ОС не позволяет получить доступ к пространству ядра из кода режима пользователя.Этот тип управления доступом возможен из-за битов привилегий в таблице страниц.

Все вызовы ядра из пространства пользователя на самом деле являются вызовами int 80h.Этот вызов переводит вызов в обработчик прерываний ядра и делает доступным как ядро, так и пространство пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...