Пользовательское пространство

редактировать
Чтобы узнать о термине «пространство пользователя», используемом в Википедии, см. « Википедия: страницы пользователей». "Пространство ядра" перенаправляется сюда. Для математического определения см. Нулевое пространство.

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

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

СОДЕРЖАНИЕ
  • 1 Обзор
  • 2 Реализация
  • 3 См. Также
  • 4 Примечания
  • 5 ссылки
  • 6 Внешние ссылки
Обзор

Термин пользовательские программы (или в пространстве пользователя) относится ко всему коду, который работает вне ядра операционной системы. Userland обычно относится к различным программам и библиотекам, которые операционная система использует для взаимодействия с ядром: программное обеспечение, которое выполняет ввод / вывод, управляет объектами файловой системы, прикладное программное обеспечение и т. Д.

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

Различные уровни в Linux, также демонстрирующие разделение между пользовательским пространством и пространством ядра.
Пользовательский режим Пользовательские приложения bash, LibreOffice, GIMP, Blender, 0 AD, Mozilla Firefox,...
Системные компоненты Демоны : Systemd, runit, udevd, polkitd, SSHD, Smbd. .. Оконный менеджер : X11, Wayland, SurfaceFlinger (Android) Графика: Mesa, AMD Catalyst,... Другие библиотеки: GTK, Qt, EFL, SDL, SFML, FLTK, GNUstep,...
Стандартная библиотека C fopen , execv , malloc , memcpy , localtime , pthread_create ... (до 2000 подпрограмм ) Glibc цели, чтобы быть быстрой, MUSL и uClibc целевых встроенные системы, бионические, написанные для Android и т.д. Все стремятся быть POSIX / SUS -Совместимы.
Режим ядра Ядро Linux stat , splice , dup , read , open , ioctl , write , mmap , close , exit И т.д. (около 380 системных вызовов) Ядро Linux Интерфейс системных вызовов (SCI, цели быть POSIX / SUS -Совместим)
Подсистема планирования процессов Подсистема IPC Подсистема управления памятью Подсистема виртуальных файлов Сетевая подсистема
Другие компоненты: ALSA, DRI, evdev, LVM, устройство картографа, Linux Network Scheduler, Netfilter Модули безопасности Linux : SELinux, Tomoyo, AppArmor, Хлопайте
Аппаратное обеспечение ( ЦП, основная память, устройства хранения данных и т. Д.)
Реализация

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

Многие операционные системы представляют собой операционные системы с единым адресным пространством - у них есть единое адресное пространство для всего кода пользовательского режима. (Код режима ядра может находиться в том же адресном пространстве или во втором адресном пространстве). Многие другие операционные системы имеют адресное пространство для каждого процесса, отдельное адресное пространство для каждого процесса в пользовательском режиме.

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

Смотрите также
Примечания
использованная литература
внешние ссылки
Последняя правка сделана 2023-03-29 09:39:42
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте