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

Пользовательский режим в Windows
Когда вы запускаете программу в Windows, она запускается в пользовательском режиме. Всякий раз, когда программа в пользовательском режиме хочет запуститься, Windows создает для нее процесс. Процесс — это просто программа, которую выполняет процессор, или программа, выполнение которой запланировано Windows. И всякий раз, когда Windows создает процесс, она также создает для этого процесса виртуальное адресное пространство.
Виртуальное адресное пространство — это набор логических (нефизических) адресов, которые Windows назначает процессу. Процессы могут использовать эти адреса для хранения данных в физической памяти.
Кроме того, виртуальное адресное пространство изолировано. Таким образом, виртуальное адресное пространство одного процесса не мешает адресному пространству другого процесса. А поскольку программы в пользовательском режиме имеют отдельные адресные пространства, если одна программа выйдет из строя, эта программа выйдет из строя сама по себе и не повлияет своими последствиями на другие программы или всю операционную систему.
Другой способ описания приложений пользовательского режима — использовать термин «менее привилегированные». Windows ограничивает приложениям пользовательского режима прямой доступ к критическим системным ресурсам, тем самым делая их менее привилегированными. Например, если приложению требуется доступ к оборудованию, оно должно пройти через ядро ОС с помощью системных вызовов (стиль программирования, при котором компьютерная программа запрашивает услугу у ядра операционной системы). Оно выполняется).
Проще говоря, прикладные программы, такие как видеоигры, работают в пользовательском режиме. У них мало привилегий, поэтому они не имеют неограниченного доступа к системным ресурсам. Каждое приложение пользовательского режима имеет собственное адресное пространство. Приложение не может изменить адресное пространство другого приложения. Поэтому, если одно приложение выходит из строя, это не влияет на другие программы, работающие на компьютере.
Что такое режим ядра в Windows?

Режим ядра в Windows
Прежде чем обсуждать режим ядра, мы должны сначала узнать, что такое «ядро» и как оно работает с Windows.
Ядро — это мозг операционной системы. Это основной программный компонент, от которого зависят все остальные компоненты операционной системы. Ядро управляет компьютерным оборудованием, планирует запуски компьютера и обрабатывает взаимодействие между оборудованием и прикладным программным обеспечением.
Короче говоря, ядро — это наиболее привилегированная часть кода, работающая в системе, поскольку это код, который напрямую взаимодействует с оборудованием. Любая другая программа, желающая использовать аппаратные ресурсы, должна запрашивать доступ через ядро.
Когда прикладная программа работает в пользовательском режиме и хочет получить доступ к оборудованию, например веб-камере, она должна запросить ядро с помощью системных вызовов. Для обслуживания этих запросов ЦП во время выполнения программы переключается из режима пользователя в режим ядра.
После завершения выполнения ЦП возвращается в пользовательский режим и начинает выполнение следующего запланированного процесса. Это называется «переключение контекста» .
В чем разница между пользовательским режимом и режимом ядра?
Основное различие между пользовательским режимом и режимом ядра заключается в уровне привилегий, предоставляемых каждым режимом. В пользовательском режиме приложения имеют меньше привилегий. Они не имеют прямого доступа к аппаратным ресурсам и не могут писать в адресное пространство других приложений.
Код, работающий в режиме ядра, имеет повышенные привилегии. Он не только имеет прямой доступ к аппаратному обеспечению компьютера, но и все программы, работающие в режиме ядра, включая операционную систему, также используют одно адресное пространство. Поэтому, если программа в режиме ядра выходит из строя, это может привести к сбою всей операционной системы. Чтобы гарантировать, что такие проблемы не возникнут, Windows разрешает запуск только некоторых процессов в режиме ядра.
Windows использует многоуровневый подход для отделения пользовательских программ от системных ресурсов.
Windows использует многоуровневую модель для определения уровней привилегий процессов. Приложения, расположенные на самом внешнем уровне, — это приложения, имеющие права аренды. Сердцевиной этих слоев является ядро. Следовательно, ядро имеет неограниченный доступ к ресурсам операционной системы.
Многоуровневый подход также защищает критически важные функции операционной системы. Случайный сбой программ верхнего уровня не влияет на операционную систему. С другой стороны, когда ядро выходит из строя, это влияет на всю операционную систему.