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 →