stringtranslate.com

Пространство пользователя и пространство ядра

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

Пространство ядра строго зарезервировано для запуска ядра привилегированной операционной системы , расширений ядра и большинства драйверов устройств . Напротив, пространство пользователя — это область памяти, где выполняется прикладное программное обеспечение и некоторые драйверы, обычно одно адресное пространство на процесс.

Обзор

Термин «пространство пользователя» (или «пользовательская среда» ) относится ко всему коду, который выполняется вне ядра операционной системы. [2] Под пространством пользователя обычно подразумеваются различные программы и библиотеки , которые операционная система использует для взаимодействия с ядром: программное обеспечение, которое выполняет ввод/вывод , манипулирует объектами файловой системы , прикладное программное обеспечение и т. д.

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

Выполнение

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

Некоторые операционные системы являются операционными системами с одним адресным пространством — они имеют одно адресное пространство для всего кода пользовательского режима. (Код режима ядра может находиться в том же адресном пространстве или во втором адресном пространстве). Другие операционные системы имеют адресное пространство для каждого процесса с отдельным адресным пространством для каждого процесса пользовательского режима.

Другой подход, используемый в экспериментальных операционных системах, заключается в наличии единого адресного пространства для всего программного обеспечения и использовании семантики языка программирования для обеспечения невозможности доступа к произвольной памяти — приложения не могут получать ссылки на объекты, к которым им не разрешен доступ. [4] [5] Этот подход был реализован в JXOS , Unununium, а также в исследовательском проекте Microsoft Singularity .

Смотрите также

Примечания

  1. ^ Более старые операционные системы, такие как DOS и Windows 3.1x , не используют эту архитектуру.

Ссылки

  1. ^ "Адресное пространство". Параметры адресного пространства для 32-битных систем.
  2. ^ "userland, n." Файл жаргона . Эрик С. Рэймонд . Получено 14 августа 2016 г.
  3. ^ "Руководство администратора README". Репозитории Git Kernel.org .
  4. ^ "Введение в систему Unununium". Архивировано из оригинала 2001-12-15 . Получено 2016-08-14 .
  5. ^ "uuu/docs/system_introduction/uuu_intro.tex". Руководство по введению в систему UUU . 2001-06-01 . Получено 2016-08-14 .

Внешние ссылки