Мы знаем, что каждый процесс в ОС выполняется в своем собственном пространстве памяти, а виртуальные адреса отображаются в физической памяти с помощью таблиц страниц.
Пример пространства приватной памяти процесса
Это пространство приватной памяти разделено на две секции: (пространство системы / ядра) и (пространство пользователя).
- Память пользовательского пространства содержит все связанные с процессом (и его потоками) выделения памяти (например, PEB, TEB, отображаемый исполняемый файл, загруженные библиотеки DLL, стек [s], куча [s] и т. Д.)
- память пространства ядра содержит объект _EPROCESS и некоторые другие объекты ядра (например, SID, VAD и т. Д.), Необходимые для запуска процесса.
Насколько мне известно, я бы предположил, что все пространство частной памяти (содержащее пространство пользователя и ядра процесса) уникально для каждого процесса;Мои дальнейшие исследования подтвердили, что это верно для пространства пользователя, однако, читая книгу «Внутренний Windows», я натолкнулся на два нижеследующих абзаца в книге, которые бросают вызов этому предположению:
«Хотя каждый процесс Windows имеет своиСобственная личная область памяти, операционная система в режиме ядра и код драйвера устройства совместно используют единое виртуальное адресное пространство "
". Windows похожа на большинство систем UNIX в том, что она является монолитной операционной системой в том смысле, что основная массакод операционной системы и драйвера устройства находится в одном и том же защищенном пространстве памяти в режиме ядра. "
Какое предположение верно?Означает ли это, что область ядра частного пространства памяти всех процессов одинакова?Это означает, что во всех процессах существует одна и та же частная память пространства ядра?
Спасибо