POSIX (англ.portable operating system interface — переносимый интерфейс операционных систем) — набор стандартов, описывающих интерфейсы между операционной системой и прикладной программой (системный API), библиотеку языка C и набор приложений и их интерфейсов. Стандарт создан для обеспечения совместимости различных UNIX-подобных операционных систем и переносимости прикладных программ на уровне исходного кода, но может быть использован и для не-Unix систем.
Серия стандартов POSIX была разработана комитетом 1003 IEEE. Международная организация по стандартизации (ISO) совместно c Международной электротехнической комиссией (IEC) приняли стандарт POSIX под названием ISO/IEC 9945.[2] Версии стандарта POSIX являются основой соответствующих версий стандарта Single UNIX Specification. Стандарт POSIX определяет интерфейс операционной системы, а соответствие стандарту Single UNIX Specification определяет реализацию интерфейса и позволяет операционным системам использовать торговую марку UNIX.[3]
Название «POSIX» было предложено Ричардом Столлманом[4]. Введение в POSIX.1 гласит: «Ожидается произношение „позикс“ как в слове „позитив“, а не „посикс“. Произношение опубликовано в целях обнародования стандартного способа ссылки на стандартный интерфейс операционной системы». «POSIX» является зарегистрированным товарным знакомIEEE[4].
содействовать облегчению переноса кода прикладных программ на иные платформы;
способствовать определению и унификации интерфейсов заранее при проектировании, а не в процессе их реализации;
сохранять по возможности и учитывать все главные, созданные ранее и используемые прикладные программы;
определять необходимый минимум интерфейсов прикладных программ для ускорения создания, одобрения и утверждения документов;
развивать стандарты в направлении обеспечения коммуникационных сетей, распределенной обработки данных и защиты информации;
рекомендовать ограничение использования бинарного (объектного) кода для приложений в простых системах.
Состав
Стандарт состоит из четырёх основных разделов.
Основные определения (англ.Base definitions) — список основных определений и соглашений, используемых в спецификациях, и список заголовочных файлов языка Си, которые должны быть предоставлены соответствующей стандарту системой.
Оболочка и утилиты (англ.Shell and utilities) — описание утилит и командной оболочки sh, стандарты регулярных выражений.
До 2001 года было создано много стандартов POSIX, часть из которых использовались для формирования стандартов Single UNIX Specification. Множество операционных систем частично или полностью реализовывали поддержку этих стандартов, в связи с чем в руководствах к системным вызовам и к программам часто встречаются ссылки на данные стандарты. На данный момент эти стандарты являются устаревшими и представляют лишь историческую ценность.
POSIX.1. Системное API для языка Си
Стандарт: IEEE Std 1003.1-1988, затем IEEE Std 1003.1-1990; ISO/IEC 9945-1:1990.
Стандарт был выпущен в 1988 году, занимал 317 страниц, включал в себя стандарт ANSI C и являлся первым стандартом POSIX. До присвоения названия POSIX Ричардом Столлманом стандарт был известен как IEEE-IX. В 1990 вышло обновление стандарта с небольшими изменениями под названием IEEE Std 1003.1-1990, занимавшее 356 страниц. Заголовок обновлённого стандарта гласил: "Part 1: System Application Program Interface (API) [C Language]". Таким образом, было явно указано, что стандарт представляет из себя системное API для языка Си.[5]
Стандарт вышел в 1992 году в двух томах общим размером около 1300 страниц. Заголовок гласил: "Part 2: Shell And Utilities", что переводится как "Часть 2: Командный интерпретатор и утилиты".[5]
Изначально известный как IEEE P1003.4, стандарт являлся обновлением стандарта IEEE Std 1003.1-1990. Обновление из 590 страниц включало в себя расширения реального времени, разработанные рабочим комитетом P1003.4.[5] В 1995 году стандарт был дополнен техническими исправлениями (IEEE Std 1003.1i-1995).
В 1999 году было принято решение, согласно которому консорциум The Open Group и Институт инженеров по электротехнике и электронике (IEEE) приняли решение об объединении усилий в совместной разработке стандартов POSIX и Single UNIX Specification. Новый стандарт POSIX должен был заменить существующие на тот момент стандарты POSIX (POSIX.1 и POSIX.2 и др.), став основой для Single UNIX Specification version 3. Также было решено обнародовать будущий стандарт, разработку которого планировалось закончить к 2001 году.[12]
В 2001 году все предыдущие стандарты POSIX были объединены в один общий стандарт, который предполагалось использовать как основу для будущих стандартов Single UNIX Specification.[8]
В 2001 году основные опциональные стандарты POSIX, разработанные ранее, были объединены в единый стандарт POSIX.1-2001. С тех пор принято именовать стандарты POSIX, добавляя к ним в конец год издания.[13] POSIX.1-2001 является основой стандарта Single UNIX Specification version 3.[14]
Стандарт ориентирован на стандарт языка C99 и может включать в себя функции и заголовочные файлы из стандарта C99.[15]
Стандарт включает в себя:
основные понятия и определения;
системные интерфейсы и заголовочные файлы;
описание командного интерпретатора на уровне исходного кода и утилит командной строки.
POSIX.1-2004
Стандарт: IEEE Std 1003.1-2004.
Стандарт является незначительным обновлением стандарта POSIX.1-2001. Включает в себя два технических исправления[16]. Описание стандарта доступно в интернете[17].
Стандарт разработан в 2008 и является текущим. В 2013 году к стандарту было разработано технические исправление №1 под названием IEEE Std 1003.1-2008/Cor 1-2013. Общедоступную бесплатную копию стандарта можно найти в интернете[18]. POSIX.1-2008 лежит в основе стандарта Single UNIX Specification version 4.[19]
Стандарт описывает:
основные понятия и определения стандарта;
системные интерфейсы и заголовочные файлы;
описание командного интерпретатора на уровне исходного кода и утилит командной строки;
пояснения о необходимости стандарта, о причинах включения возможностей (или отказа от включения) в стандарт.
Профили POSIX 1003.13
Стандарт POSIX 1003.1 подходит не для всех операционных систем. Встраиваемые операционные системы не всегда реализуют поддержку тех или иных функций. Стандарт POSIX 1003.13 описывает подмножество стандарта POSIX 1003.1 для встраиваемых систем, которое разделено на 4 профиля. Профили были разработаны, чтобы обеспечить переносимость программ на уровне исходных кодов для операционных систем с ограниченными возможностями. Они представляют собой подмножество стандарта POSIX 1003.13, то есть описывают только часть возможностей, включенных в оригинальный стандарт (POSIX 1003.1). Таким образом, профили не конфликтуют с оригинальным стандартом.[20]
На 2016 год разработаны следующие профили:
POSIX PSE54 (многопользовательская многопроцессная операционная система с поддержкой потоков и файловой системы);
POSIX PSE53 (многопроцессная операционная система с поддержкой потоков и файловой системы);
POSIX PSE52 (однопроцессная операционная система с поддержкой потоков и файловой системы);
POSIX PSE51 (однопроцессная операционная система с поддержкой потоков, без файловой системы).
В зависимости от степени совместимости со стандартами, ОС могут быть полностью или частично совместимы с POSIX. Сертифицированные продукты могут быть найдены на сайте IEEE[21]. Бесплатный доступ к версии стандарта IEEE Std 1003.1-2004 находится на сайте «The open group»[22].
POSIX-сертифицированные
C 1996 года стандарт SUS включает в себя стандарт POSIX, поэтому сертифицированные на стандарт UNIX операционные системы можно считать одновременно сертифицированными и на стандарт POSIX.
«Microsoft Windows Services for UNIX» — обеспечивает полное соответствие POSIX для некоторых продуктов Microsoft Windows. Операционные системы на базе Windows NT до Windows 2000 имели POSIX-уровень, встроенный в ОС, и «UNIX Services for Windows» предоставляло UNIX-подобное окружение. Для получения POSIX-совместимости в Windows XP нужно скачать и установить бесплатный пакет «Windows Services for UNIX». UNIX-подсистема встроена в Enterprise и Ultimate редакции Windows Vista и не может быть добавлена в другие редакции.
UWIN — набор библиотек и утилит, обеспечивающих POSIX-совместимое окружение поверх Win32 API.[54]
ISO/IEC/IEEE 9945:2009 - Информационные технологии. Интерфейс переносимой операционной системы (POSIX). Базовые технические требования, Выпуск 7. www.iso.org. Проверено 12 февраля 2016.
ISO/IEC 9945. www.unix.org. Проверено 7 января 2016.
The UNIX System -- The Single UNIX Specification. www.unix.org. Проверено 7 января 2016.
↑ POSIX® 1003.1 Frequently Asked Questions (FAQ Version 1.12) (англ.) (2 February 2006). Проверено 5 марта 2008. Архивировано из первоисточника 22 августа 2011.
↑ ISBN 9780131411555.
↑ standards(7) - Linux manual page. man7.org. Проверено 6 февраля 2016.
POSIX.1 FAQ. www.opengroup.org. Проверено 5 февраля 2016.
↑ ISBN 9781593272203.
AUUGN. — AUUG, Inc., 1995-08-01. — 66 с.
Enhanced Single UNIX Press Release. www.unix.org. Проверено 4 января 2016.
The UNIX System Technical Whitepapers. www.unix.org. Проверено 6 февраля 2016.
The Open Group and IEEE to develop joint revision to POSIX and UNIX standards Collaborative Effort to Yield Version 3 of the Single UNIX Specification. opengroup.org (17 июля1999 года).
ISBN 9781449341541.
The Single UNIX Specification Version 3. www.unix.org. Проверено 4 января 2016.
Introduction. pubs.opengroup.org. Проверено 7 февраля 2016.
IEEE Std 1003.1, 2004 Edition. www.unix.org. Проверено 4 января 2016.
The Open Group Base Specifications Issue 6. pubs.opengroup.org. Проверено 4 января 2016.
The Open Group Base Specifications Issue 7, 2013 Edition. pubs.opengroup.org. Проверено 4 января 2016.
IEEE Std 1003.1, 2013 Edition. www.unix.org. Проверено 11 февраля 2016.
↑ Using POSIX to Maximize Code Portability in Embedded Systems. qnx-russia.ru. QNX Software Systems.
POSIX. Standards. IEEE. Архивировано из первоисточника 22 августа 2011.
The Open Group. Архивировано из первоисточника 3 февраля 2012.
Register of Open Branded Products. www.opengroup.org. Проверено 5 января 2016.
Register of Open Branded Products. www.opengroup.org. Проверено 5 января 2016.
Register of Open Branded Products. www.opengroup.org. Проверено 5 января 2016.
Register of Open Branded Products. www.opengroup.org. Проверено 5 января 2016.
Help - QNX SDP 6.6 Documentation. www.qnx.com. Проверено 7 февраля 2016.
QNX Neutrino RTOS. www.qnx.com. Проверено 7 февраля 2016.
Register of Open Branded Products. www.opengroup.org. Проверено 8 января 2016.
POSIX Certification - Product details. get.posixcertified.ieee.org. Проверено 5 января 2016.
Register of Open Branded Products. www.opengroup.org. Проверено 5 января 2016.
STANDARDS LEADERSHIP. www.windriver.com. Проверено 18 января 2016.
ISBN 9781558605329.
NetBSD Standards Conformance. www.netbsd.org. Проверено 21 января 2016.
Nucleus RTOS Kernel. www.mentor.com. Проверено 25 января 2016.
OpenBSD Project Goals. www.openbsd.org. Проверено 24 января 2016.
Sanos. www.jbox.dk. Проверено 21 января 2016.
Frequently Asked Questions | SkyOS. www.skyos.org. Проверено 21 января 2016.
Welcome to Syllable. web.syllable.org. Проверено 21 января 2016.
Posix Checklists. DragonFly BSD. dragonflybsd.org (5 января 2014).
RTEMS POSIX API User’s Guide. RTERMS. On-Line Applications Research Corporation (17 July 2015).
Подсистема приложений UNIX. technet.microsoft.com. Проверено 25 января 2016.
Подсистема для приложений UNIX и совместимость с POSIX. technet.microsoft.com. Проверено 25 января 2016.
att/uwin. GitHub. Проверено 26 января 2016.
Native Win32 ports of some GNU utilities. unxutils.sourceforge.net. Проверено 25 января 2016.
Литература
Donald Lewine. ISBN 9780937175736.
System application program interface (API) [C Language]: ISO/IEC 9945-1, ANSI/IEEE Std 1003.1. — New York: IEEE, 1996. — ISBN 1-55937-573-6
Информационная технология — интерфейс мобильной операционной системы (POSIX). Часть 1: Интерфейс прикладных программ (API) [Язык программирования С]: в 2 т. — М.: НИИСИ РАН, 1999. — ISBN 5-93838-001-4