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

Single UNIX Specification

Single UNIX Specification (SUS) — это общее название для семейства стандартов, определяющих интерфейс операционной системы, соответствие которому даёт право называться «UNIX». SUS разрабатывается и поддерживается консорциумом Austin Group (совместная работа The Open Group, IEEE и ISO/IEC). Стандарт описывает системные интерфейсы, заголовочные файлы, утилиты командной строки и сетевые протоколы, необходимые для обеспечения переносимости приложений между различными UNIX-подобными системами.

История

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

В конце 1980-х годов на рынке существовало несколько конкурирующих версий UNIX (System V от AT&T, BSD от Калифорнийского университета в Беркли, Xenix от Microsoft и другие). Приложения, написанные для одной реализации, часто не работали на других. Это привело к «войнам UNIX» и необходимости стандартизации.

POSIX

Первым серьёзным шагом к унификации стал стандарт POSIX (Portable Operating System Interface), разработанный IEEE (Институт инженеров электротехники и электроники). В 1988 году был принят стандарт IEEE 1003.1-1988, описывающий базовые системные вызовы и библиотеки. Однако POSIX не охватывал многие аспекты, такие как утилиты командной строки и полноценная среда разработки.

Появление SUS

В 1994 году The Open Group (консорциум, образованный из X/Open и OSF) опубликовала Spec 1170 — спецификацию, объединившую POSIX, стандарты X/Open и дополнительные элементы из реальных систем. Номер 1170 означал количество интерфейсов (системных вызовов, библиотек, утилит), включённых в спецификацию. В 1995 году эта спецификация была переименована в UNIX 95 и стала основой для торговой марки UNIX. Версия UNIX 98 (1998 год) добавила поддержку 64-битных архитектур и потоков (POSIX Threads).

Austin Group

В 1998 году началось объединение усилий IEEE, The Open Group и ISO/IEC JTC 1/SC 22/WG 15. В результате в 2001 году был опубликован IEEE Std 1003.1-2001 (POSIX:2001), который одновременно является Single UNIX Specification Version 3. Эта версия стала единым эталонным стандартом. С тех пор обновления выходили в 2004, 2008, 2013, 2016 и 2018 годах. Текущая версия — SUSv4 (IEEE Std 1003.1-2018).

Структура стандарта

Single UNIX Specification состоит из четырёх основных частей:

1. Base Definitions (Том 1)

Содержит глоссарий терминов, требования к файловой системе, структуре каталогов, правам доступа, а также перечень всех заголовочных файлов (header files) с описанием их содержимого.

2. System Interfaces (Том 2)

Описывает системные вызовы (system calls) и библиотечные функции (library functions). Каждая функция документируется в формате man-страницы: прототип, описание, возвращаемые значения, ошибки. Примеры: fork(), exec(), open(), read(), write(), mmap().

3. Shell and Utilities (Том 3)

Определяет синтаксис и поведение командного интерпретатора (sh — Bourne shell) и более 200 утилит (например, grep, awk, sed, ls, cp, make). Для каждой утилиты указаны опции, аргументы, поведение в особых случаях.

4. Rationale (Том 4)

Пояснительная записка, объясняющая мотивы принятия тех или иных решений, исторические справки и обсуждение альтернатив. Не является нормативной частью, но полезна для разработчиков.

Ключевые требования для соответствия SUS

Чтобы операционная система могла быть сертифицирована как UNIX (и использовать соответствующую торговую марку), она должна:

  • Полностью реализовывать все обязательные (mandatory) интерфейсы из SUS.
  • Пройти формальное тестирование с помощью набора тестов VSX (Validation Suite for X/Open).
  • Не иметь недокументированных отклонений от стандарта.
  • Поддерживать многозадачность, многопользовательский режим, иерархическую файловую систему, защиту памяти.

Сертификация проводится The Open Group. После успешного прохождения система получает право называться UNIX® (например, macOS — с версии 10.5 Leopard, AIX, HP-UX, Solaris).

Отличия от POSIX

Хотя SUS и POSIX технически очень близки (начиная с SUSv3 они синхронизированы), есть два принципиальных отличия:

  1. Объём: SUS включает в себя POSIX плюс дополнительные интерфейсы (например, X/Open Curses, поддержка международных локалей, расширенная обработка сигналов). POSIX — это минимальный набор, SUS — расширенный.
  2. Юридический статус: POSIX — это стандарт IEEE/ISO, который может быть реализован любой системой (например, Linux, FreeBSD) без каких-либо лицензионных отчислений. SUS — это спецификация, владельцем которой является The Open Group, и соответствие ей даёт право на использование торговой марки UNIX.

Реализации и влияние

Системы, сертифицированные как UNIX

  • macOS (Apple Inc.) — сертифицирована как UNIX 03 (SUSv3). Ядро XNU основано на Mach и FreeBSD.
  • AIX (IBM) — сертифицирована как UNIX 03.
  • HP-UX (Hewlett Packard Enterprise) — сертифицирована как UNIX 03.
  • Solaris (Oracle) — сертифицирована как UNIX 03 (последняя версия 11.4).
  • z/OS (IBM) — сертифицирована как UNIX 95.

Системы, соответствующие SUS, но не сертифицированные

  • Linux — большинство дистрибутивов (Debian, Red Hat, Ubuntu) реализуют POSIX и значительную часть SUS, но не проходят платную сертификацию. Существуют проекты LSB (Linux Standard Base), которые пытались стандартизировать Linux, но они основаны на SUS.
  • FreeBSD — также реализует SUS на уровне исходного кода, но не сертифицирована.

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

SUS послужил основой для:

  • LSB (Linux Standard Base) — попытка унифицировать дистрибутивы Linux.
  • FIPS 151-2 — федеральный стандарт США для операционных систем.
  • ГОСТ Р ИСО/МЭК 9945 — российский аналог POSIX.

Критика

  • Сложность и размер: SUSv4 содержит более 3700 страниц. Многие разработчики считают стандарт слишком громоздким для изучения.
  • Медленное обновление: Процесс согласования между IEEE, ISO и The Open Group занимает годы. Новые технологии (контейнеризация, cgroups, современные файловые системы) не попадают в стандарт оперативно.
  • Стоимость сертификации: Процедура сертификации UNIX стоит десятки тысяч долларов, что делает её недоступной для небольших проектов.
  • Неоднозначность некоторых интерфейсов: Например, поведение read() при прерывании сигналом (EINTR) в разных реализациях может отличаться, несмотря на стандарт.

Источники

  • The Open Group. Single UNIX Specification, Version 4. 2018.
  • IEEE Std 1003.1-2017. Standard for Information Technology—Portable Operating System Interface (POSIX).
  • McKusick, M. K. The Design and Implementation of the FreeBSD Operating System. 2nd ed. Addison-Wesley, 2014.
  • Stevens, W. R., Rago, S. A. Advanced Programming in the UNIX Environment. 3rd ed. Addison-Wesley, 2013.
  • Материалы конференции USENIX Annual Technical Conference, 1990–2020.

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

На главную BFOmetr →