Что такое режим пользователя и режим ядра в Windows


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

Понимание того, что делает операционная система

Компьютер состоит из аппаратного обеспечения, электронных компонентов и программного обеспечения — компьютерного кода, исполняемого этим оборудованием. Но что может быть менее ясно, так это то, как они работают вместе.

Самый важный элемент компьютера — это бит или «двоичная цифра». Все, что делает компьютер, представлено в виде единиц и нулей. Различные компоненты компьютера представляют биты по-разному. В Процессор микроскопические транзисторы представляют собой единицы и нули, будучи включенными или выключенными. Эти транзисторы объединены в логические структуры, называемые логическими вентилями.

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

Независимо от того, как достигается физическое представление двоичного кода, в конечном итоге вы можете свести все компоненты потребительского компьютера к этому необработанному машинному коду.

Так как же перейти от дружественного к человеку интерфейса компьютера к необработанным низкоуровневым процессам самого компьютера? Вот тут-то и появляется операционная система. Она напрямую управляет аппаратным обеспечением компьютера.

Это программное обеспечение преобразует все, что требуется приложениям (и, следовательно, пользователю), в инструкции машинного кода, понятные ЦП и другим компонентам. Наиболее важной частью программного обеспечения в этом процессе является ядро.

Что такое ядро?

Ядро, как следует из названия, является ядром операционной системы. Ядро — это программное обеспечение, которое находится в БАРАН и управляет всем, что делает компьютер. Когда что-то записывается в память, выполнением управляет ядро.

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

Здесь играют роль драйверы оборудования. Драйверы сообщают вашей операционной системе, как работать с конкретными компонентами, поэтому вам нужны разные драйверы, например, для графических процессоров Nvidia и AMD.

Оборудованное правильными драйверами ядро ​​является высшим органом управления компьютером, в том числе выполняет действия, которые могут привести к катастрофическому уничтожению данных.

Роль интерфейсов прикладного программирования (API)

Во времена MS-DOS разработчикам программного обеспечения приходилось писать свое программное обеспечение специально для аппаратного обеспечения пользователя. Самым известным примером этого в системах MS-DOS были драйверы звуковых карт.

Каждая видеоигра должна поддерживать самые популярные карты (Sound Blaster, Ad-lib, Gravis Ultrasound и т. д.) и надеяться, что большинство игроков будут ими обеспечены. Сегодня благодаря API все работает совсем по-другому.

Microsoft DirectX — отличный пример. Если вам нужно подробное объяснение, ознакомьтесь с Что такое DirectX и почему это важно?. Однако самое важное, что нужно знать, это то, что API предлагает разработчикам программного обеспечения стандартный способ запроса аппаратных ресурсов у таких компонентов, как графический процессор. Кроме того, производители оборудования должны только гарантировать, что их продукты соответствуют DirectX, чтобы обеспечить полную совместимость с любым аналогичным совместимым программным обеспечением.

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

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

Современные операционные системы одновременно запускают сотни или тысячи «процессов», динамически выделяя им процессорное время по мере необходимости в зависимости от их приоритетов и требований к вычислительной мощности.

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

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

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

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

Ловушки и исключения

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

Опасности режима ядра: синий экран смерти

Если вы когда-либо сталкивались с «синим экраном смерти» (а кто не сталкивался?), из-за которого ваш компьютер выключался или перезагружался, велика вероятность, что виноват процесс режима ядра.

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

Это одна из областей, где API играют важную роль, поскольку именно API запрашивает привилегии режима ядра. Приложения пользовательского режима по сути делегируют API запросы, для которых потребовались бы привилегии режима ядра.

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

Если у вас возникли проблемы с синим экраном смерти, обязательно прочитайте наш Руководство по устранению неполадок «Синего экрана смерти» для Windows 10!.

.

Похожие сообщения:


31.12.2021