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


Пользовательское пространство — адресное пространство виртуальной памяти операционной системы, отводимое для пользовательских программ, в отличие от пространства ядра, которое резервируется для работы ядра операционной системы, его расширений и, возможно, некоторых драйверов устройств. В англоязычной компьютерной литературе термин «Userland»[en] часто используется для обозначения совокупности приложений, которые выполняются в пространстве пользователя.

Каждый процесс в пользовательском пространстве обычно выполняется в собственной области виртуальной памяти, и при отсутствии явной необходимости, не может получить доступа к памяти, используемой другими процессами. Такой подход является базисным для обеспечения защиты памяти большинства современных операционных систем, и своего рода «фундаментом» для обеспечения права доступа. В зависимости от привилегий процесс может запросить ядро отобразить часть адресного пространства другого процесса на своё, как, например, это делают отладчики. Программы также могут запрашивать для себя область разделяемой памяти совместно с другими процессами.

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

Важным элементом при проектировании системного программного обеспечения является решение по реализации в пространстве ядра или пользовательском пространстве. В частности, в UNIX-системах до появления технологии FUSE в 2000-х годах при монтировании файловой системы требовалось, чтобы её код выполнялся в пространстве ядра, из-за чего, например, только суперпользователь мог монтировать компакт-диск.