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

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 19:53, 13 марта 2017.
Пространство пользователя и ядра

Большинство операционных систем выделяют в виртуальной памяти ОС пространство ядра и пространство пользователя.

Пользовательское пространство ("User space") - адресное пространство виртуальной памяти операционной системы, в которой выполняются процессы пользователя и содержатся некоторые библиотеки[Источник 1]. В англоязычных источниках так же используется такой термин как "Userland"[1] , обозначающий весь код, не относящийся к ядру операционной системы.

Характеристика

PPU4.png

Пользовательское пространство - своего рода песочница, в которой пользователь может работать с различными программными продуктами. В него могут включаться различные программы, написанные на C, Java, Python, Ruby и других языках. В некоторых ОС, например Debian , существуют процессы, запускаемые в фоновом режиме (без участия пользователя), так называемые "демоны". Они так же являются частью пользовательского пространства. Отделение пользовательского пространства, от пространства ядра позволяет работать пользователю в среде, при этом не обращаться напрямую к сложному устройству пространства ядра, которое работает самостоятельно, обеспечивая работу самой ОС и взаимодействие с аппаратными средствами.

Разделение адресного пространства виртуальной памяти в ОС

Существуют несколько принципиально разных концепций разделения адресного пространства виртуальной памяти ОС.

Системы UNIX

В таких системах пространство ядра ("Kernel space") отделяется от пользовательского и отводится для обеспечения работы ядра операционной системы ,его расширений и подсистем. Данное разделение служит для обеспечения безопасности памяти и аппаратных средств от вмешательства пользователя или некорректного поведения программного обеспечения.

Организация взаимодействия адресных пространств в системе Linux

В большинстве Unix-образных операционных системах каждый процесс в пользовательском пространстве обычно выполняется в собственной области виртуальной памяти, и при отсутствии явной необходимости, не может получить доступа к памяти, используемой другими процессами. Такой подход является основным для обеспечения защиты памяти большинства современных операционных систем и фундаментом для обеспечения права доступа.
В зависимости от привилегий процесс может запросить ядро отобразить часть адресного пространства другого процесса на своё, как, например, это делают отладчики. Программы также могут запрашивать для себя область разделяемой памяти совместно с другими процессами.[Источник 2] Пользовательские приложения так же не могут напрямую взаимодействовать с оборудованием, осуществлено это, опять же, по соображениям безопасности. Пространство ядра может быть доступно процессам пользователя только с помощью системных вызовов ("System calls").То есть, системные вызовы - это точки входа в ядро, так что ядро может выполнять работу от имени приложения[Источник 3]. Доступ пользователя к оборудованию так же может осуществляться посредством использования драйверов.

Единое пространство

В некоторых экспериментальных операционных системах используется другой подход — для всех программных продуктов используется единое адресное пространство, с учётом того, что реализация виртуальной машины обеспечивает невозможность произвольного доступа — приложения попросту не могут получить ссылки на объекты, к которым они не имеют доступа, этот подход был использован в таких операционных системах, как JXOS, Unununium, Phantom OS, Microsoft Singularity[Источник 2].

Примечания

  1. Данный термин является жаргонизмом, и тождественен термину User space (пользовательское пространство).

Источники

  1. The Linux Information Project [Электронный ресурс]: User Space Definition — Дата обращения: 04.03.2017. Режим доступа: http://www.linfo.org/user_space.html
  2. 2,0 2,1 Wikipedia [Электронный ресурс]: User Space — Дата обращения: 04.03.2017. Режим доступа: https://en.wikipedia.org/wiki/User_space
  3. Red hat enterprice Linux blog [Электронный ресурс]: Architecting Containers Part 1: Why Understanding User Space vs. Kernel Space Matters — Дата обращения: 04.03.2017. Режим доступа: http://rhelblog.redhat.com/2015/07/29/architecting-containers-part-1-user-space-vs-kernel-space/

Ссылки