Виртуальная память: обработай единое и системное - PullRequest
2 голосов
/ 05 мая 2011

В этой статье http://msdn.microsoft.com/en-us/library/aa366912(v=vs.85).aspx говорится, что виртуальная память в среде win32 (предположительно 32-разрядная) предназначена для процессов пользовательского режима, а половина - для процессов в режиме ядра.

Если я запомню из нумерации страниц, каждый процесс должен иметь свое собственное адресное пространство от 0 до любого значения (максимум 0x7FFFFFFF в соответствии со статьей). Но что за драйвер ядра? Каждый драйвер / программа ядра имеет свое адресное пространство от 0x80000000 до 0xFFFFFFFF?

Или я просто ошибаюсь?

Ответы [ 3 ]

3 голосов
/ 05 мая 2011

Я считаю, что у вас сложилось впечатление, что драйверы - это отдельные процессы; с монолитными и гибридными ядрами (NT считается гибридом), они не являются. Думайте о драйверах как о модулях, которые ядро ​​загружает в себя в кольце 0. По сути, они становятся частью ядра.

Части этого адресного пространства могут изменяться между процессами, но большая часть адресного пространства ядра будет распределена между всеми процессами.

2 голосов
/ 05 мая 2011

В Windows драйверы режима ядра находятся в ядре и совместно используют адресное пространство ядра.

2 голосов
/ 05 мая 2011

Насколько я знаю, есть только одно ядро. : -)

Хотя диапазоны адресов в порядке, если система не сконфигурирована для 3 ГБ пространства пользователя.

...