Почему ядро ​​находится в адресном пространстве процесса? - PullRequest
16 голосов
/ 01 сентября 2011

Это может быть глупый вопрос, но он всплыл у меня в голове.Весь текст об адресном пространстве процесса и макете виртуальной памяти упоминает, что в адресном пространстве процесса есть место, зарезервированное для ядра.Например, в 32-разрядных системах адресное пространство процесса составляет 4 ГБ, из которых 1 ГБ зарезервировано для ядра в Linux (в других ОС может отличаться).

Мне просто интересно, почему говорят, что ядро ​​находится в процессеадресное пространство, когда процесс не может обратиться к ядру напрямую.Почему бы нам не сказать, что ядро ​​имеет отдельное адресное пространство, нежели процесс, и почему у нас не может быть другой таблицы страниц для самого ядра, которая отделена от таблиц страниц процессов?

1 Ответ

15 голосов
/ 06 апреля 2012

Когда процесс выполняет системный вызов, нам не нужно переключать таблицы страниц (из таблицы страниц адресного пространства процесса в таблицу страниц адресного пространства ядра) для обслуживания системного вызова (что должно быть сделано только в режиме ядра),Говорят, что ядро ​​работает в контексте процесса.

Некоторые события ядра, которые не запускаются в контексте процесса, загрузят таблицы страниц только для ядра.

Понятно?

...