Пространство ядра и Пространство пользователя являются логическими пространствами.
Большинство современных процессоров предназначены для работы в разных привилегированных режимах. Машины x86 могут работать в 4 различных привилегированных режимах.
И конкретная машинная инструкция может быть выполнена, когда в / выше определенного привилегированного режима.
Из-за этого дизайна вы предоставляете системную защиту или песочницу для среды исполнения.
Ядро - это фрагмент кода, который управляет вашим оборудованием и обеспечивает системную абстракцию. Таким образом, он должен иметь доступ ко всем инструкциям машины. И это самая надежная часть программного обеспечения. Так что я должен быть казнен с высшей привилегией. И Уровень звонка 0 является наиболее привилегированным режимом. Так Уровень звонка 0 также называется Режим ядра .
Пользовательское приложение - это часть программного обеспечения от сторонних поставщиков, и вы не можете им полностью доверять. Кто-то со злым умыслом может написать код для сбоя вашей системы, если у него был полный доступ ко всем инструкциям машины. Поэтому приложение должно иметь доступ к ограниченному набору инструкций. И Уровень звонка 3 является наименее привилегированным режимом. Таким образом, все ваше приложение работает в этом режиме. Следовательно, Уровень звонка 3 также называется Режим пользователя .
Примечание: я не получаю Кольцевые Уровни 1 и 2. В основном это режимы с промежуточными привилегиями. Так может быть код драйвера устройства выполняется с этой привилегией. AFAIK, linux использует только Ring Level 0 и 3 для выполнения кода ядра и пользовательского приложения соответственно.
Таким образом, любая операция, происходящая в режиме ядра, может рассматриваться как пространство ядра.
И любая операция, происходящая в пользовательском режиме, может рассматриваться как пространство пользователя.