Пользовательское пространство и пространство ядра
Эта статья нуждается в дополнительных цитатах для проверки . ( октябрь 2012 г. ) |
Современная компьютерная операционная система обычно использует виртуальную память для предоставления отдельных адресных пространств или отдельных областей единого адресного пространства, называемого пользовательским пространством и пространством ядра . [1] [а] В первую очередь такое разделение служит для обеспечения защиты памяти и оборудования от вредоносного или ошибочного поведения программного обеспечения.
Пространство ядра строго зарезервировано для запуска привилегированного ядра операционной системы , расширений ядра и большинства драйверов устройств . Напротив, пользовательское пространство — это область памяти, в которой выполняются прикладное программное обеспечение и некоторые драйверы, обычно одно адресное пространство на каждый процесс.
Обзор [ править ]
Термин «пространство пользователя» (или «страна пользователя» ) относится ко всему коду, который выполняется вне ядра операционной системы. [2] Под пользовательским пространством обычно понимаются различные программы и библиотеки , которые операционная система использует для взаимодействия с ядром: программное обеспечение, выполняющее ввод/вывод , манипулирующее файловой системы объектами , прикладное программное обеспечение и т. д.
пользовательского пространства Каждый процесс обычно выполняется в собственном пространстве виртуальной памяти и, если это явно не разрешено, не может получить доступ к памяти других процессов. Это основа защиты памяти в современных основных операционных системах и строительный блок для разделения привилегий . Отдельный пользовательский режим также можно использовать для создания эффективных виртуальных машин — см. требования к виртуализации Попека и Голдберга . Обладая достаточными привилегиями, процессы могут запросить ядро отобразить часть пространства памяти другого процесса в его собственное, как в случае с отладчиками . Программы также могут запрашивать общие области памяти с другими процессами, хотя доступны и другие методы, обеспечивающие межпроцессное взаимодействие .
Пользовательский режим | Пользовательские приложения | bash , LibreOffice , GIMP , Blender , 0 AD , Mozilla Firefox , ... | ||||
---|---|---|---|---|---|---|
Компоненты системы | демон инициализации : OpenRC , runit , systemd ... | Системные демоны : polkitd , smbd , sshd , udevd ... | Оконный менеджер : X11 , Wayland , SurfaceFlinger (Android) | Графика : Меса , катализатор AMD , ... | Другие библиотеки: GTK , Qt , EFL , SDL , SFML , FLTK , GNUstep , ... | |
Стандартная библиотека C | fopen , execv , malloc , memcpy , localtime , pthread_create ... (до 2000 подпрограмм ) glibc стремится быть быстрым, musl стремится быть легким, uClibc нацелен на встраиваемые системы, bionic написан для Android и т. д. Все стремятся быть POSIX / SUS -совместимыми. | |||||
Режим ядра | Ядро Linux | stat , splice , dup , read , open , ioctl , write , mmap , close , exit и т. д. (около 380 системных вызовов) ядра Linux Интерфейс системных вызовов (SCI) должен быть POSIX / SUS -совместимым. [3] | ||||
планирования процессов Подсистема | IPC Подсистема | управления памятью Подсистема | виртуальных файлов Подсистема | Сетевая подсистема | ||
Другие компоненты: ALSA , DRI , evdev , klibc , LVM , устройство отображения устройств , сетевой планировщик Linux , Netfilter. Модули безопасности Linux : SELinux , TOMOYO , AppArmor , Smack | ||||||
Аппаратное обеспечение ( ЦП , основная память , устройства хранения данных и т. д.) |
Реализация [ править ]
Самый распространенный способ реализации пользовательского режима отдельно от режима ядра операционной системы включает в себя защитные кольца .Кольца защиты, в свою очередь, реализованы с помощью режимов ЦП .Обычно программы пространства ядра работают в режиме ядра , также называемом режимом супервизора ;обычные приложения в пользовательском пространстве запускаются в пользовательском режиме.
Некоторые операционные системы представляют собой операционные системы с единым адресным пространством — они имеют единое адресное пространство для всего кода пользовательского режима. (Код режима ядра может находиться в том же адресном пространстве или во втором адресном пространстве).Другие операционные системы имеют адресное пространство для каждого процесса и отдельное адресное пространство для каждого процесса пользовательского режима.
Другой подход, используемый в экспериментальных операционных системах, заключается в том, чтобы иметь единое адресное пространство для всего программного обеспечения и полагаться на семантику языка программирования, чтобы гарантировать невозможность доступа к произвольной памяти — приложения просто не могут получить какие-либо ссылки на объекты, доступ к которым им запрещен. доступ. [4] [5] Этот подход был реализован в JXOS , Unununium, а также в исследовательском проекте Microsoft Singularity .
См. также [ править ]
- БИОС
- Режимы процессора
- Раннее пользовательское пространство
- Защита памяти
- Виртуализация на уровне ОС
Примечания [ править ]
- ^ Старые операционные системы, такие как DOS и Windows 3.1x , не используют эту архитектуру.
Ссылки [ править ]
- ^ «Адресное пространство» . Параметры адресного пространства для 32-битных систем.
- ^ "пользовательское пространство, n." Файл жаргона . Эрик С. Рэймонд . Проверено 14 августа 2016 г.
- ^ «Руководство администратора README» . Git-репозитории Kernel.org .
- ^ «Введение в систему Унунуниум» . Архивировано из оригинала 15 декабря 2001 г. Проверено 14 августа 2016 г.
- ^ "uuu/docs/system_introduction/uuu_intro.tex" . Руководство по ознакомлению с системой UUU . 01.06.2001 . Проверено 14 августа 2016 г.
Внешние ссылки [ править ]
- Определение пространства ядра Linux
- Вход в пользовательский режим на Wayback Machine (архивировано 26 марта 2016 г.)