Режим ядра по сравнению с режимом пользователя фактически отражает работу процессора.
В современных операционных системах код выполняется (с процессором) только в режиме ядра, если ему доверяют операционная система и все остальныекод выполняется в пользовательском режиме.
Функциональное различие в современных операционных системах заключается в том, что код режима ядра выполняется в одном (виртуальном) адресном пространстве, которое представляет все системные ресурсы, поэтому все функции в режиме ядра могут влиять на каждыйпосмотри напрямую.Например, все действия драйвера режима ядра могут напрямую влиять на работу самой операционной системы и любого другого драйвера режима ядра.(Детали реализации специфики несколько различаются в зависимости от типа операционной системы, например, между Windows, Linux, BSD и т. Д., Но основные принципы одинаковы)
Это означает, что если вы пишете код, который будет выполняться внутривнутренняя работа операционной системы или в драйвере режима ядра, тогда это можно назвать кодом режима ядра.В противном случае это будет код пользовательского режима.Код, который пытается выполнить какое-либо действие, которое может быть выполнено только в режиме ядра, будет предотвращен от этого самим процессором, если только сам процессор не находится в режиме ядра.Сама операционная система выступает в роли посредника, когда процессор переходит в режим ядра, поэтому код должен распознаваться операционной системой (или устанавливаться, в случае драйверов режима ядра), чтобы выполнять действия, которые могут выполняться только в режиме ядра.Код пользовательского режима не может произвольно перевести процессор в режим ядра без помощи некоторого кода, который уже распознается операционной системой.
Практически современные операционные системы также предоставляют набор функций (например, вAPI), который можно вызвать из пользовательского режима.Многие из этих функций выполняются исключительно в пользовательском режиме.Некоторые, однако, приводят к тому, что процессор переключается в режим ядра для выполнения некоторых конкретных действий, а затем процессор переключается обратно в режим пользователя, когда управление временем возвращается к вызывающей стороне.Какой код внутри самой ОС выполняется в пользовательском режиме или в режиме ядра, зависит как от конструкции операционной системы, так и от административных настроек (например, только пользователи с соответствующими правами (например, администраторы) могут, например, устанавливать драйверы режима ядра).