Понятия «пользовательский режим» и «режим ядра»
При обсуждении архитектуры ОС Windows NT постоянно используются
понятия «режим пользователя» и «режим ядра», поэтому стоит определить,
что это значит. Начнем с обсуждения разницы между пользовательским режимом
и режимом ядра (user mode/kernel mode).
Пользовательский режим - наименее привилегированный режим, поддерживаемый
NT; он не имеет прямого доступа к оборудованию и у него ограниченный доступ
к памяти.
Режим ядра - привилегированный режим. Те части NT, которые исполняются
в режиме ядра, такие как драйверы устройств и подсистемы типа Диспетчера
Виртуальной Памяти, имеют прямой доступ ко всей аппаратуре и памяти.
Различия в работе программ пользовательского режима и режима ядра поддерживаются
аппаратными средствами компьютера (а именно - процессором).
Большинство архитектур процессоров обеспечивают, по крайней мере, два
аппаратных уровня привилегий. Аппаратный уровень привилегий процессора
определяет возможное множество инструкций, которые может вызывать исполняемый
в данный момент процессором код. Хотя понятия «режим пользователя» и «режим
ядра» часто используются для описания кода, на самом деле это уровни привилегий,
ассоциированные с процессором. Уровень привилегий накладывает три типа
ограничений: 1) возможность выполнения привилегированных команд, 2) запрет
обращения к данным с более высоким уровнем привилегий, 3) запрет передачи управления коду с уровнем привилегий, не равным уровню привилегий вызывающего кода.