Прочитать на английском

Поделиться через


Пользовательский режим и режим ядра

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

Пользовательский режим

При запуске приложения в пользовательском режиме Windows создает для него процесс . Этот процесс предоставляет приложению частное виртуальное адресное пространство и таблицу частных дескрипторов. Так как виртуальное адресное пространство каждого приложения является частным, одно приложение не может изменять данные другого приложения. Каждое приложение выполняется изолированно, гарантируя, что в случае сбоя одно из них не повлияет на другие приложения или операционную систему.

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

Режим ядра

Весь код, выполняемый в режиме ядра, использует одно виртуальное адресное пространство. В результате драйвер в режиме ядра не изолируется от других драйверов или операционной системы. Если драйвер, работающий в режиме ядра, по ошибке записывает данные на неправильный виртуальный адрес, это может привести к компрометации данных, принадлежащих операционной системе или другому драйверу. Если происходит сбой драйвера в режиме ядра, это приводит к сбою всей операционной системы.

На следующей схеме показано взаимодействие между компонентами пользовательского режима и режима ядра.

Схема, показывющая взаимодействие между компонентами пользовательского режима и режима ядра в компьютерной системе.

Виртуальные адресные пространства