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

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

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

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

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

Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)

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

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

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

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

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

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

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

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

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

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

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

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

Экран выбора звуковой карты от Wolf3D

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован.