IEEE 1003
IEEE 1003 — это международный стандарт, разработанный Институтом инженеров электротехники и электроники (IEEE), который определяет интерфейс переносимой операционной системы (Portable Operating System Interface, POSIX). Стандарт устанавливает единый набор правил и спецификаций для обеспечения совместимости и переносимости программного обеспечения между различными операционными системами, преимущественно семейства Unix. IEEE 1003 описывает системный интерфейс прикладного программирования (API), командную оболочку и утилиты, а также требования к безопасности и локализации.
История
Предпосылки создания
В 1980-х годах рынок операционных систем был фрагментирован: существовало множество вариантов Unix (BSD, System V, Xenix), каждый из которых имел собственные, несовместимые друг с другом системные вызовы и утилиты. Разработчикам приходилось адаптировать программы под каждую платформу отдельно, что увеличивало затраты и время. В 1985 году американская ассоциация /usr/group (позднее вошедшая в состав IEEE) начала работу над стандартизацией Unix-систем.
Разработка и принятие
В 1988 году проект был передан комитету IEEE P1003. Первая версия стандарта, IEEE Std 1003.1-1988, была опубликована в 1988 году. Она получила неофициальное название POSIX (Portable Operating System Interface for Computer Environments). В 1990 году стандарт был принят как международный стандарт ISO/IEC 9945. С тех пор он неоднократно пересматривался и дополнялся: вышли версии 1996, 2001, 2004, 2008, 2013, 2016 и 2018 годов. Последняя на сегодняшний день редакция — IEEE Std 1003.1-2017 (с поправками 2018 года), также известная как POSIX.1-2017.
Влияние на российскую разработку
В России стандарт IEEE 1003 использовался при разработке операционных систем на базе Linux и BSD, в частности в дистрибутивах, сертифицированных для государственных нужд (например, Astra Linux, RED OS, Альт Линукс). Соблюдение POSIX-совместимости является обязательным требованием для ряда продуктов, проходящих сертификацию в Федеральной службе по техническому и экспортному контролю (ФСТЭК России).
Структура стандарта
Стандарт IEEE 1003 состоит из нескольких частей, каждая из которых описывает определённый аспект операционной системы:
IEEE Std 1003.1 — Базовые определения
Основная часть, определяющая:
- Системные интерфейсы (system interfaces) — набор функций на языке C (около 1200), включая управление процессами, файлами, памятью, сигналами, сетевыми сокетами и потоками.
- Командная оболочка и утилиты (shell and utilities) — спецификации для командного интерпретатора (sh) и более 200 стандартных утилит (ls, grep, find, awk, sed, make и др.).
- Файловая система — иерархическая структура каталогов, права доступа (rwx), типы файлов (обычные, каталоги, символьные ссылки, устройства, сокеты, именованные каналы).
- Локализация — поддержка национальных алфавитов, кодировок (например, UTF-8) и региональных настроек (locale).
IEEE Std 1003.2 — Командная оболочка и утилиты (отдельная часть)
Ранее выделялась как отдельный стандарт (POSIX.2), но в современных редакциях включена в IEEE Std 1003.1.
IEEE Std 1003.4 — Реальное время (Realtime)
Дополнение, определяющее расширения для систем реального времени: приоритетное планирование, синхронизация с высокой точностью, асинхронный ввод-вывод, сообщения, семафоры, разделяемая память.
IEEE Std 1003.5 — Ada
Спецификация привязок системных вызовов для языка программирования Ada.
IEEE Std 1003.6 — Безопасность
Расширения для мандатного управления доступом, списков контроля доступа (ACL), аудита и других механизмов безопасности. В России требования к таким расширениям частично отражены в профилях защиты операционных систем (ГОСТ Р ИСО/МЭК 15408).
IEEE Std 1003.7 — Системное администрирование
Определяет интерфейсы для управления учётными записями, принтерами, терминалами, резервным копированием.
IEEE Std 1003.8 — Сети
Спецификации сетевых интерфейсов (протоколы, сокеты, RPC).
IEEE Std 1003.9 — Фортрановские привязки
Привязки системных вызовов для языка Fortran.
Ключевые понятия
POSIX-совместимость
Операционная система считается POSIX-совместимой, если она прошла официальную сертификацию на соответствие одному из профилей стандарта. На практике многие системы (Linux, FreeBSD, OpenBSD, macOS, Solaris, QNX, Windows с подсистемой WSL) реализуют большую часть IEEE 1003, но не всегда сертифицированы.
Профили
Стандарт определяет несколько профилей — наборов функций, обязательных для конкретных классов систем:
- POSIX1 — минимальная базовая система.
- POSIX1b — расширения реального времени.
- POSIX1c — потоки (threads).
- POSIX1j — дополнительные расширения реального времени.
Переносимость
Основная цель IEEE 1003 — обеспечить переносимость исходного кода. Программа, написанная с использованием только стандартных функций, может быть скомпилирована и запущена на любой POSIX-совместимой системе без изменений. Это достигается за счёт:
- Единого набора системных вызовов.
- Единого формата командной строки и утилит.
- Единой файловой иерархии (например, /bin, /usr, /etc, /tmp).
Применение
В операционных системах
- Unix и Unix-подобные системы: Linux, FreeBSD, OpenBSD, NetBSD, macOS (сертифицирован как POSIX-совместимый), Solaris, AIX, HP-UX.
- Windows: начиная с Windows NT, частичная поддержка через подсистему POSIX (позднее — Windows Services for UNIX, затем Windows Subsystem for Linux (WSL)).
- Встраиваемые системы: QNX, VxWorks, Integrity — реализуют профили реального времени.
- Российские ОС: Astra Linux Special Edition, RED OS, Альт Линукс, ROSA Linux — проходят сертификацию на соответствие профилям POSIX для использования в государственных информационных системах.
В разработке программного обеспечения
- Кроссплатформенное программирование: библиотеки и приложения, использующие только POSIX API, легко портируются между системами.
- Системное программирование: разработка драйверов, сервисов, демонов, сетевых приложений.
- Скриптовые языки: оболочки (bash, sh), утилиты (awk, sed, grep) — основа автоматизации администрирования.
В образовании и сертификации
- Курсы по операционным системам: IEEE 1003 является основой для изучения Unix-подобных систем.
- Сертификация: существуют программы профессиональной сертификации (например, LPIC, RHCSA), проверяющие знание POSIX-стандартов.
Критика и ограничения
Сложность и объём
Стандарт насчитывает несколько тысяч страниц, что затрудняет его полную реализацию. Многие системы реализуют лишь подмножество функций.
Устаревание некоторых частей
Некоторые спецификации (например, терминальные интерфейсы, управление терминалами) были разработаны в 1980-х годах и не учитывают современные технологии (графические интерфейсы, контейнеризацию, облачные вычисления).
Неполная совместимость на практике
Даже сертифицированные системы могут иметь расхождения в поведении отдельных утилит или системных вызовов из-за различий в реализации. Например, поведение команды ps может различаться в Linux и FreeBSD.
Отсутствие стандартизации графического интерфейса
IEEE 1003 не затрагивает оконные системы (X Window System, Wayland) и пользовательские интерфейсы, что ограничивает его применимость для настольных приложений.
Интересные факты
- Название POSIX было предложено Ричардом Столлманом, основателем проекта GNU.
- Первая версия стандарта (1988) была разработана всего за три года — рекордный срок для стандартизационного процесса IEEE.
- В 1990-х годах Microsoft пыталась продвигать собственный стандарт Windows API как альтернативу POSIX, но он не получил широкого распространения за пределами платформы Windows.
- В России стандарт IEEE 1003 используется как основа для ГОСТ Р ИСО/МЭК 9945 — «Информационная технология. Интерфейс переносимой операционной системы (POSIX)».
Источники
- IEEE Std 1003.1-2017 — Portable Operating System Interface (POSIX). Base Definitions, System Interfaces, Shell and Utilities.
- ISO/IEC 9945:2009 — Information technology — Portable Operating System Interface (POSIX).
- Таненбаум Э., Бос Х. — «Современные операционные системы» (4-е издание, 2015).
- Стивенс У. Р. — «UNIX. Профессиональное программирование» (3-е издание, 2014).
- Документация ФСТЭК России — «Требования к операционным системам для государственных информационных систем» (2020).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →