Открыть сервис

POSIX

POSIX (Portable Operating System Interface, произносится «по́зикс») — это семейство стандартов, разработанных институтом IEEE (Institute of Electrical and Electronics Engineers) и регламентирующих интерфейсы взаимодействия между операционной системой (ОС) и прикладным программным обеспечением. Основная цель POSIX — обеспечение переносимости исходного кода программ между различными Unix-подобными операционными системами, а также между системами, не являющимися производными Unix, но поддерживающими данный стандарт. Стандарт описывает программный интерфейс (API), командную оболочку, утилиты, а также системные вызовы и библиотеки C.

История

Предпосылки создания

В 1980-х годах рынок Unix-систем был фрагментирован. Разные производители (AT&T, Sun Microsystems, IBM, Hewlett-Packard, Digital Equipment Corporation) выпускали собственные версии Unix (System V, BSD, AIX, HP-UX, Ultrix), которые, несмотря на общую концепцию, имели несовместимые интерфейсы. Перенос программы с одной системы на другую требовал значительных изменений в исходном коде. В ответ на это в 1985 году комитет IEEE начал работу над стандартизацией Unix-подобного API, получившей название IEEE 1003. Название POSIX было предложено Ричардом Столлманом как аббревиатура от «Portable Operating System Interface», с добавлением буквы «X» для обозначения Unix-подобного происхождения.

Развитие стандарта

  • 1988 год: принят первый стандарт IEEE Std 1003.1-1988, известный как POSIX.1. Он описывал системный интерфейс на языке C.
  • 1990 год: стандарт POSIX.1 был принят как международный стандарт ISO/IEC 9945-1:1990.
  • 1993–1997 годы: вышли расширения (POSIX.2 — командная оболочка и утилиты, POSIX.4 — потоки и синхронизация, POSIX.6 — безопасность).
  • 2001 год: выпущена единая спецификация POSIX:2001 (IEEE Std 1003.1-2001), объединившая все предыдущие части. Этот стандарт также известен как Single UNIX Specification (SUS) версии 3.
  • 2008 год: принята версия POSIX:2008 (IEEE Std 1003.1-2008), которая стала основой для SUSv4.
  • 2016–2018 годы: выпущены технические корректировки (POSIX:2016, POSIX:2018), уточняющие и исправляющие предыдущие версии.
  • 2024 год: актуальная версия — POSIX:2024 (IEEE Std 1003.1-2024), которая включает поддержку современных языков программирования (C17, C23) и новые системные вызовы.

Состав и структура стандарта

POSIX состоит из нескольких основных частей, которые вместе определяют полный интерфейс операционной системы.

Системные интерфейсы (POSIX.1)

Данный раздел описывает:

  • Системные вызовы (например, fork(), exec(), open(), read(), write(), close(), wait(), kill()).
  • Библиотечные функции языка C (например, malloc(), printf(), strcpy()).
  • Типы данных (например, pid_t, size_t, off_t).
  • Структуры (например, stat, timeval).
  • Макросы и константы (например, PATH_MAX, OPEN_MAX).

Командная оболочка и утилиты (POSIX.2)

Этот раздел регламентирует:

  • Синтаксис и поведение командной оболочки (sh), включая управляющие конструкции, перенаправление ввода-вывода, переменные окружения.
  • Набор стандартных утилит: cat, grep, sed, awk, ls, cp, mv, rm, chmod, ps, kill, find, sort, uniq, wc, diff, patch и многие другие.
  • Правила разбора аргументов командной строки.

Каталоги и файловая система

POSIX определяет иерархическую файловую систему с корнем «/». Стандарт описывает:

Потоки и синхронизация (POSIX Threads)

POSIX Threads (pthreads) — это стандарт для многопоточного программирования. Он включает:

  • Управление потоками: создание (pthread_create), завершение (pthread_exit), ожидание (pthread_join), отмена (pthread_cancel).
  • Мьютексы (pthread_mutex_t) для взаимного исключения.
  • Условные переменные (pthread_cond_t) для синхронизации.
  • Барьеры (pthread_barrier_t).
  • Атрибуты потоков и мьютексов.

Безопасность и права доступа

POSIX определяет модель безопасности на основе пользователей (UID), групп (GID) и прав доступа (чтение, запись, исполнение для владельца, группы и остальных). Дополнительно поддерживаются:

  • Set-UID и Set-GID биты для временного повышения привилегий.
  • Sticky bit для защиты каталогов.
  • Списки контроля доступа (ACL) — расширение базовой модели (опционально).

Сертификация и соответствие

Операционная система может быть сертифицирована как соответствующая стандарту POSIX. Сертификацию проводит организация IEEE, а также The Open Group в рамках программы Single UNIX Specification. Полная сертификация требует прохождения набора тестов (POSIX Conformance Test Suite). Наиболее известные сертифицированные системы:

  • macOS (начиная с версии 10.5 Leopard) — сертифицирована как UNIX 03 (соответствие POSIX:2001).
  • Solaris (Oracle Solaris) — сертифицирована как UNIX 03.
  • AIX (IBM) — сертифицирована как UNIX 03.
  • HP-UX (Hewlett Packard Enterprise) — сертифицирована как UNIX 03.
  • eCos — встраиваемая ОС, сертифицированная по POSIX.

Многие другие системы, включая Linux, FreeBSD, OpenBSD, NetBSD, а также Windows (через подсистемы WSL или Cygwin), не проходят полную сертификацию, но стремятся к максимальной совместимости с POSIX. Linux, в частности, не является официально сертифицированной POSIX-системой, однако её разработчики сознательно следуют стандарту, и большинство POSIX-совместимых программ работают на Linux без изменений.

Применение

POSIX играет ключевую роль в следующих областях:

  • Разработка кроссплатформенного ПО: программы, написанные с использованием только POSIX-функций, могут быть скомпилированы и запущены на любой POSIX-совместимой системе (Linux, macOS, BSD, Solaris).
  • Встраиваемые системы: многие встраиваемые ОС (например, VxWorks, QNX, eCos) реализуют подмножество POSIX для упрощения переноса кода.
  • Серверные и облачные технологии: стандарт является основой для Unix-подобных серверов, кластеров и контейнеров (Docker, Kubernetes).
  • Научные и инженерные расчёты: большинство суперкомпьютеров в мире работают под управлением Linux, что обеспечивает совместимость с POSIX.
  • Образование: POSIX широко используется в учебных курсах по операционным системам и системному программированию.

Критика и ограничения

Несмотря на широкое распространение, POSIX подвергается критике по нескольким направлениям:

  • Консервативность: стандарт медленно обновляется, что затрудняет внедрение современных технологий (например, асинхронного ввода-вывода, файловых систем нового поколения).
  • Сложность: некоторые функции (например, fork()) являются устаревшими и неэффективными в современных многопоточных и многопроцессорных системах.
  • Неполнота: POSIX не описывает графический интерфейс, сетевые протоколы (кроме базовых сокетов), управление устройствами и драйверами.
  • Фрагментация: разные реализации POSIX могут иметь незначительные отклонения, что иногда приводит к проблемам с переносимостью.

Влияние на другие стандарты

POSIX оказал значительное влияние на развитие других стандартов и технологий:

  • Linux Standard Base (LSB) — проект по стандартизации дистрибутивов Linux, во многом базирующийся на POSIX.
  • Single UNIX Specification (SUS) — коммерческая спецификация, являющаяся надмножеством POSIX.
  • C POSIX library — библиотека языка C, реализующая POSIX-интерфейсы.
  • Windows Subsystem for Linux (WSL) — слой совместимости в Windows, реализующий POSIX-интерфейсы для запуска Linux-приложений.

Источники

  • IEEE Std 1003.1-2024 — Portable Operating System Interface (POSIX) Base Specifications, Issue 8.
  • The Open Group. Single UNIX Specification, Version 4.
  • Andrew S. Tanenbaum, Herbert Bos. «Современные операционные системы» (4-е издание).
  • W. Richard Stevens, Stephen A. Rago. «Advanced Programming in the UNIX Environment» (3-е издание).
  • Документация GNU C Library (glibc) — раздел POSIX Compliance.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →