Возможно, вы слышали о приложениях, работающих в «ядерном» или «пользовательском» режиме. Все зависит от того, как работают операционные системы, когда они выполняют свою работу. Как только вы это поймете, легко понять разницу между пользовательским режимом и режимом ядра.
Понимание того, что делает операционная система
Компьютер состоит из оборудования, электронных компонентов и программного обеспечения, компьютерный код выполняется это оборудование. Но что может быть менее ясно, так это то, как они работают вместе.
Оглавление
Самым важным элементом компьютера является бит или «двоичная цифра». Все, что делает компьютер, представлено в виде единиц и нулей. Различные компоненты компьютера по-разному представляют биты. В ЦП микроскопические транзисторы отображают единицы и нули, будучи включенными или выключенными. Эти транзисторы организованы в логические структуры, называемые логическими вентилями.
В памяти электронного компьютера биты представлены ячейками памяти, имеющими заряд выше или ниже определенного порога. На механическом жестком диске биты представлены как магнитные колебания, измеренные на вращающемся диске. На оптических дисках углубления и площадки, которые отражают или не отражают лазерный свет, выполняют ту же работу.
Независимо от того, как достигается физическое представление двоичного кода, вы можете в конечном итоге сократить все компоненты потребительского компьютера до этого необработанного машинного кода.
Итак, как перейти от удобного интерфейса компьютера к необработанному, низкому-уровневые процессы в самом компьютере? Здесь на помощь приходит операционная система. Она напрямую управляет оборудованием компьютера.
Это программное обеспечение переводит все, что требуется приложениям (и, следовательно, пользователю), в инструкции машинного кода, понятные процессору и другим компонентам. Самой важной частью программного обеспечения в этом процессе является ядро.
Что такое ядро?
Ядро, как следует из названия, является ядром операционной системы. Ядро-это программа, которая находится в оперативной памяти и управляет всем, что делает компьютер. Когда что-то записывается в память, это ядро управляет выполнением.
Ядро знает, как взаимодействовать с оборудованием, таким как графические процессоры и сетевые карты, но оно может не знать, как использовать их в полной мере. , опираясь на общие стандарты компьютерной индустрии.
Здесь играют роль драйверы оборудования. Драйверы сообщают вашей операционной системе, как работать с конкретными компонентами, поэтому вам нужны разные драйверы, например, для графических процессоров Nvidia и AMD.
Оснащенное правильными драйверами, ядро является высшим авторитетом в компьютере , включая выполнение действий, которые могут катастрофически уничтожить данные.
Роль интерфейсов прикладного программирования (API)
Во времена MS-DOS разработчикам программного обеспечения приходилось писать свое программное обеспечение специально для оборудование пользователя. Наиболее известным примером этого в системах MS-DOS были драйверы звуковой карты.
Данная видеоигра должна поддерживать самые популярные карты (Sound Blaster, Ad-lib, Gravis Ultrasound и т. Д.) И надеяться, что охватит большинство игроков. Сегодня все работает по-другому, благодаря API.
Экран выбора звуковой карты от Wolf3D
Microsoft DirectX-отличный пример. Если вам нужно подробное объяснение, посмотрите, что такое DirectX и почему это важно? Однако наиболее важно знать, что API предлагает стандартный способ для разработчиков программного обеспечения запрашивать аппаратные ресурсы у таких компонентов, как графический процессор. Кроме того, производители оборудования должны гарантировать, что их продукты соответствуют DirectX, чтобы гарантировать полную совместимость с любым аналогичным программным обеспечением.
API-интерфейсы предлагают уровень трансляции между программными приложениями и низкоуровневым ядром с его драйверами оборудования. Да, это немного снижает производительность. Тем не менее, на современных компьютерах это ничтожно мало и имеет ряд преимуществ, и именно здесь мы наконец переходим к режиму пользователя и режиму ядра.
Пользовательский режим и режим ядра
Современные операционные системы запускают сотни или тысячи «процессов» одновременно, динамически выделяя им процессорное время по мере необходимости в зависимости от их приоритетов и требований к вычислительной мощности.
Когда вы запускаете приложение, оно генерирует процессы, и ЦП может выполнять их как в пользовательском режиме, так и в режиме ядра.
Процесс Windows, работающий в пользовательском режиме, имеет доступ только к своему собственному частному адресному пространству виртуальной памяти и таблице дескрипторов. Программное обеспечение использует эти таблицы для хранения данных в ОЗУ и запроса ресурсов. Нет прямого доступа к памяти или другому оборудованию, и операционная система должна сопоставить эти виртуальные пространства с фактическим оборудованием компьютера.
Это хорошо по многим причинам, но наиболее важным преимуществом является то, что приложение не может перезаписывать или изменять данные за пределами адресного пространства виртуальной памяти. Кроме того, некоторые функции недоступны для процессов пользовательского режима, в основном те, которые могут привести к сбою системы или уничтожению данных.
Когда процесс запускается или повышается до режима ядра, он имеет полный доступ к системе. ресурсы, даже те, которые зарезервированы для операционной системы. Таким образом, теоретически он может перезаписать важные данные, необходимые операционной системе для правильной работы.
Ловушки и исключения
Важно понимать, что эти два режима применяются на аппаратном уровне самим ЦП. Если приложение, работающее в пользовательском режиме, пытается сделать что-то, что требует доступа в режиме ядра, оно генерирует «ловушку» или «исключение». Затем операционная система будет иметь дело с приложением, обычно путем его выключения и создания журнала сбоев, чтобы разработчики могли видеть, что произошло в памяти, когда что-то пошло не так.
Опасности режима ядра: Синий экран смерти
Если вы когда-либо сталкивались с синим экраном смерти (а кто нет?), Который заставлял ваш компьютер выключаться или перезагружаться, велика вероятность, что это был режим ядра. виноват процесс.
Когда процесс в режиме ядра делает что-то, чего он не должен делать, операционная система не может восстановиться после этого, и весь компьютер останавливается. Когда процесс в пользовательском режиме выходит из строя, происходит сбой только приложения, а остальное программное обеспечение и операционная система могут работать без каких-либо проблем.
Это одна из областей, в которой API-интерфейсы играют важную роль, поскольку это API-интерфейс, запрашивающий привилегии режима ядра. Приложения пользовательского режима по сути делегируют API запросы, которые потребовали бы привилегий режима ядра.
Вот почему режим ядра обычно предоставляется только низкоуровневым системным процессам, которым необходим прямой доступ к оборудованию компьютера.. Обычно эта привилегия распространяется на процесс, потому что ему требуется более высокая производительность, чем может обеспечить пользовательский режим. Некоторые инструкции ЦП работают только в режиме ядра, поэтому, если процессу необходимо использовать эти функции, его необходимо повысить.
Если у вас возникли проблемы с синим экраном смерти, обязательно прочтите наш «Синий экран смерти»: руководство по устранению неполадок в Windows 10!