POSIX: различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[отпатрулированная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
м Добавить прямую ссылку на последнюю редакцию стандарта
 
(не показаны 42 промежуточные версии 15 участников)
Строка 22: Строка 22:
'''POSIX''' ({{lang-en|'''P'''ortable '''O'''perating '''S'''ystem '''I'''nterface}} — переносимый интерфейс [[Операционная система|операционных систем]]) — набор стандартов, описывающих интерфейсы между [[Операционная система|операционной системой]] и [[Прикладное программное обеспечение|прикладной программой]] (системный [[Интерфейс программирования приложений|API]]), библиотеку языка C и набор приложений и их интерфейсов. Стандарт создан для обеспечения совместимости различных [[UNIX]]-подобных операционных систем и переносимости прикладных программ на уровне [[исходный код|исходного кода]], но может быть использован и для не-Unix систем.
'''POSIX''' ({{lang-en|'''P'''ortable '''O'''perating '''S'''ystem '''I'''nterface}} — переносимый интерфейс [[Операционная система|операционных систем]]) — набор стандартов, описывающих интерфейсы между [[Операционная система|операционной системой]] и [[Прикладное программное обеспечение|прикладной программой]] (системный [[Интерфейс программирования приложений|API]]), библиотеку языка C и набор приложений и их интерфейсов. Стандарт создан для обеспечения совместимости различных [[UNIX]]-подобных операционных систем и переносимости прикладных программ на уровне [[исходный код|исходного кода]], но может быть использован и для не-Unix систем.


Серия стандартов POSIX была разработана комитетом 1003 [[IEEE]]. Международная организация по стандартизации ([[ISO]]) совместно c Международной электротехнической комиссией ([[IEC]]) приняли стандарт POSIX под названием '''ISO/IEC 9945'''<ref>{{Cite web|accessdate = 2016-01-07|title = ISO/IEC 9945|url = http://www.unix.org/version3/iso_std.html|publisher = www.unix.org}}</ref>. Версии стандарта POSIX являются основой соответствующих версий стандарта [[Single UNIX Specification]]. Стандарт POSIX определяет интерфейс операционной системы, а соответствие стандарту [[Single UNIX Specification]] определяет реализацию интерфейса и позволяет операционным системам использовать торговую марку [[UNIX]]<ref>{{Cite web|accessdate = 2016-01-07|title = The UNIX System -- The Single UNIX Specification|url = http://www.unix.org/what_is_unix/single_unix_specification.html|publisher = www.unix.org}}</ref>.
Серия стандартов POSIX была разработана комитетом 1003 [[IEEE]]. Международная организация по стандартизации ([[ISO]]) совместно c Международной электротехнической комиссией ([[IEC]]) приняла стандарт POSIX под названием '''ISO/IEC 9945'''<ref>{{Cite web|accessdate = 2016-01-07|title = ISO/IEC 9945|url = http://www.unix.org/version3/iso_std.html|publisher = www.unix.org|archive-date = 2016-03-04|archive-url = https://web.archive.org/web/20160304185829/http://www.unix.org/version3/iso_std.html|deadlink = no}}</ref>. Версии стандарта POSIX являются основой соответствующих версий стандарта [[Single UNIX Specification]]. Стандарт POSIX определяет интерфейс операционной системы, а соответствие стандарту [[Single UNIX Specification]] определяет реализацию интерфейса и позволяет операционным системам использовать торговую марку [[UNIX]]<ref>{{Cite web|accessdate = 2016-01-07|title = The UNIX System -- The Single UNIX Specification|url = http://www.unix.org/what_is_unix/single_unix_specification.html|publisher = www.unix.org|archive-date = 2011-08-22|archive-url = https://www.webcitation.org/617wppgOg?url=http://www.unix.org/what_is_unix/single_unix_specification.html|deadlink = no}}</ref>.


Название «POSIX» было предложено [[Столлман, Ричард Мэттью|Ричардом Столлманом]]<ref name="opengroup.org">{{Cite web
Название «POSIX» было предложено [[Столлман, Ричард Мэттью|Ричардом Столлманом]]<ref name="opengroup.org">{{Cite web
Строка 40: Строка 40:
* Сохранять по возможности и учитывать все главные, созданные ранее и используемые прикладные программы.
* Сохранять по возможности и учитывать все главные, созданные ранее и используемые прикладные программы.
* Определять необходимый минимум интерфейсов прикладных программ для ускорения создания, одобрения и утверждения документов.
* Определять необходимый минимум интерфейсов прикладных программ для ускорения создания, одобрения и утверждения документов.
* Развивать стандарты в направлении обеспечения коммуникационных сетей, распределенной обработки данных и защиты информации.
* Развивать стандарты в направлении обеспечения коммуникационных сетей, распределённой обработки данных и защиты информации.
* Рекомендовать ограничение использования бинарного (объектного) кода для приложений в простых системах.
* Рекомендовать ограничение использования бинарного (объектного) кода для приложений в простых системах.


Строка 54: Строка 54:


=== Версии POSIX до 2001 года ===
=== Версии POSIX до 2001 года ===
До 2001 года было создано много стандартов POSIX, часть из которых использовались для формирования стандартов Single UNIX Specification. Множество операционных систем частично или полностью реализовывали поддержку этих стандартов, в связи с чем в руководствах к системным вызовам и к программам часто встречаются ссылки на данные стандарты. На данный момент эти стандарты являются устаревшими и представляют лишь исторический интерес.
До 2001 года было создано много стандартов POSIX, часть из которых использовалась для формирования стандартов Single UNIX Specification. Множество операционных систем частично или полностью реализовывало поддержку этих стандартов, в связи с чем в руководствах к системным вызовам и к программам часто встречаются ссылки на данные стандарты. На данный момент эти стандарты являются устаревшими и представляют лишь исторический интерес.


==== POSIX.1. Системное API для языка Си ====
==== POSIX.1. Системное API для языка Си ====
Стандарт: IEEE Std 1003.1-1988, затем IEEE Std 1003.1-1990; ISO/IEC 9945-1:1990.
Стандарт: 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]] для [[Си (язык программирования)|языка Си]]<ref name=":0">{{Книга|автор = W. Richard Stevens, Bill Fenner, Andrew M. Rudoff|год = 2004-01-01|isbn = 9780131411555|страниц = 1032|издательство = Addison-Wesley Professional|заглавие = UNIX Network Programming|ссылка = https://books.google.com/books?id=ptSC4LpwGA0C|страницы = 25—28}}</ref>.
Стандарт был выпущен в 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]] для [[Си (язык программирования)|языка Си]]<ref name=":0">{{Книга|автор = W. Richard Stevens, Bill Fenner, Andrew M. Rudoff|год = 2004-01-01|isbn = 9780131411555|страниц = 1032|издательство = Addison-Wesley Professional|заглавие = UNIX Network Programming|ссылка = https://books.google.com/books?id=ptSC4LpwGA0C|страницы = 25—28|archivedate = 2016-07-02|archiveurl = https://web.archive.org/web/20160702160056/https://books.google.com/books?id=ptSC4LpwGA0C}}</ref>.


===== Разделы стандарта =====
===== Разделы стандарта =====

* Создание и управление процессами<ref name=":0" />
* Создание и управление процессами<ref name=":0" />
* Сигналы<ref>{{Cite web|url=http://man7.org/linux/man-pages/man7/signal.7.html|title=signal(7) — Linux manual page|author=|website=|quote=First the signals described in the original POSIX.1-1990 standard|date=|publisher=man7.org|lang=en|accessdate=2018-12-15}}</ref>
* Сигналы<ref>{{Cite web|url=http://man7.org/linux/man-pages/man7/signal.7.html|title=signal(7) — Linux manual page|author=|website=|quote=First the signals described in the original POSIX.1-1990 standard|date=|publisher=man7.org|lang=en|accessdate=2018-12-15|archive-date=2018-12-15|archive-url=https://web.archive.org/web/20181215053402/http://man7.org/linux/man-pages/man7/signal.7.html|deadlink=no}}</ref>
**Исключения плавающей точки
** Исключения плавающей точки
**Нарушение сегментации
** Нарушение сегментации
**Запрещённые директивы
** Запрещённые директивы
**Ошибки шины
** Ошибки шины
**Таймеры
** Таймеры
* Операции над файлами (каталогами)<ref name=":0" />
* Операции над файлами (каталогами)<ref name=":0" />
* Каналы<ref>{{Книга|автор=Bill Gallmeister|заглавие=POSIX.4 Programmers Guide: Programming for the Real World|ссылка=https://books.google.ru/books?id=4Kb_1sKprCMC&pg=PA88&lpg=PA88&dq=pipes+posix.1&source=bl&ots=vahFM2EXIO&sig=QmwGjagKVzJLfrGdM6mNyLSh914&hl=ru&sa=X&ved=2ahUKEwjqysyg6aTfAhVLqIsKHdiQCmMQ6AEwBXoECAEQAQ#v=onepage&q=pipes%20posix.1&f=false|издательство="O'Reilly Media, Inc."|год=1995|страниц=580|isbn=9781565920743}}</ref>
* Каналы<ref>{{Книга|автор=Bill Gallmeister|заглавие=POSIX.4 Programmers Guide: Programming for the Real World|ссылка=https://books.google.ru/books?id=4Kb_1sKprCMC&pg=PA88&lpg=PA88&dq=pipes+posix.1&source=bl&ots=vahFM2EXIO&sig=QmwGjagKVzJLfrGdM6mNyLSh914&hl=ru&sa=X&ved=2ahUKEwjqysyg6aTfAhVLqIsKHdiQCmMQ6AEwBXoECAEQAQ|издательство="O'Reilly Media, Inc."|год=1995|страниц=580|isbn=9781565920743|archivedate=2018-12-17|archiveurl=https://web.archive.org/web/20181217014712/https://books.google.ru/books?id=4Kb_1sKprCMC&pg=PA88&lpg=PA88&dq=pipes+posix.1&source=bl&ots=vahFM2EXIO&sig=QmwGjagKVzJLfrGdM6mNyLSh914&hl=ru&sa=X&ved=2ahUKEwjqysyg6aTfAhVLqIsKHdiQCmMQ6AEwBXoECAEQAQ#v=onepage&q=pipes%20posix.1&f=false}}</ref>
*[[Стандартная библиотека языка Си|Библиотека Си]] (стандарт Си)
* [[Стандартная библиотека языка Си|Библиотека Си]] (стандарт Си)
* Интерфейс и контроль ввода-вывода
* Интерфейс и контроль ввода-вывода
* Триггеры процессов
* Триггеры процессов
Строка 79: Строка 78:
Из числа описанного в стандарте стоит отметить следующее:
Из числа описанного в стандарте стоит отметить следующее:


* добавлена функция <code>[[mkfifo]]()</code>, как более простой вариант создания именованных каналов по сравнению с активно использовавшейся в то время функцией <code>mknod()</code><ref name=":7">{{Книга|автор=Керриск Майкл|заглавие=Linux API. Исчерпывающее руководство|ссылка=https://books.google.ru/books?id=OeVIDwAAQBAJ&pg=PA893&lpg=PA893&dq=mkfifo+posix.1+1990&source=bl&ots=VZ3kPLcoWG&sig=6oD_8dw60gnkSZoKe8B22ID8Yf0&hl=ru&sa=X&ved=2ahUKEwix173GyqLfAhXIkywKHRy6DkgQ6AEwBXoECAUQAQ#v=onepage&q=mkfifo%20posix.1%201990&f=false|издательство="Издательский дом ""Питер"""|год=2017-10-18|страниц=1248|isbn=9785496026895}}</ref>;
* добавлена функция <code>[[mkfifo]]()</code>, как более простой вариант создания именованных каналов по сравнению с активно использовавшейся в то время функцией <code>mknod()</code><ref name=":7">{{Книга|автор=Керриск Майкл|заглавие=Linux API. Исчерпывающее руководство|ссылка=https://books.google.ru/books?id=OeVIDwAAQBAJ&pg=PA893&lpg=PA893&dq=mkfifo+posix.1+1990&source=bl&ots=VZ3kPLcoWG&sig=6oD_8dw60gnkSZoKe8B22ID8Yf0&hl=ru&sa=X&ved=2ahUKEwix173GyqLfAhXIkywKHRy6DkgQ6AEwBXoECAUQAQ|издательство="Издательский дом ""Питер"""|год=2017-10-18|страниц=1248|isbn=9785496026895|archivedate=2018-12-16|archiveurl=https://web.archive.org/web/20181216031925/https://books.google.ru/books?id=OeVIDwAAQBAJ&pg=PA893&lpg=PA893&dq=mkfifo+posix.1+1990&source=bl&ots=VZ3kPLcoWG&sig=6oD_8dw60gnkSZoKe8B22ID8Yf0&hl=ru&sa=X&ved=2ahUKEwix173GyqLfAhXIkywKHRy6DkgQ6AEwBXoECAUQAQ#v=onepage&q=mkfifo%20posix.1%201990&f=false}}</ref>;
* описан формата архивов [[tar]] и [[cpio]]<ref name=":0" />;
* описан формат архивов [[tar]] и [[cpio]]<ref name=":0" />;
*описаны файлы с информацией [[/etc/passwd|о пользователях]] и [[/etc/group|о группах]]<ref name=":0" />.
* описаны файлы с информацией [[/etc/passwd|о пользователях]] и [[/etc/group|о группах]]<ref name=":0" />.


==== POSIX.2. Командная оболочка и утилиты ====
==== POSIX.2. Командная оболочка и утилиты ====
Стандарт: IEEE Std 1003.2-1992; ISO/IEC 9945-2:1993<ref name=":1">{{Cite web|accessdate = 2016-02-06|title = standards(7) - Linux manual page|url = http://man7.org/linux/man-pages/man7/standards.7.html|publisher = man7.org}}</ref>.
Стандарт: IEEE Std 1003.2-1992; ISO/IEC 9945-2:1993<ref name=":1">{{Cite web|accessdate = 2016-02-06|title = standards(7) - Linux manual page|url = http://man7.org/linux/man-pages/man7/standards.7.html|publisher = man7.org|archive-date = 2016-02-14|archive-url = https://web.archive.org/web/20160214024932/http://man7.org/linux/man-pages/man7/standards.7.html|deadlink = no}}</ref>.


Стандарт вышел в 1992 году в двух томах общим размером около 1300 страниц. Заголовок гласил: «Part 2: Shell And Utilities», что переводится как «Часть 2: Командный интерпретатор и утилиты»<ref name=":0" />.
Стандарт вышел в 1992 году в двух томах общим размером около 1300 страниц. Заголовок гласил: «Part 2: Shell And Utilities», что переводится как «Часть 2: Командный интерпретатор и утилиты»<ref name=":0" />.


===== Разделы стандарта =====
===== Разделы стандарта =====

* Командный интерпретатор
* Командный интерпретатор
* Программные утилиты
* Программные утилиты
Строка 104: Строка 102:


===== Разделы стандарта =====
===== Разделы стандарта =====

* Планировка приоритетов<ref name=":0" />
* Планировка приоритетов<ref name=":0" />
* Сигналы реального времени<ref name=":6">{{Статья|автор=Michael González Harbour, Departamento de Electrónica, Universidad de Cantabria, Avda. los Castros|заглавие=REAL-TIME POSIX: AN OVERVIEW|ссылка=https://www.ctr.unican.es/publications/mgh-1993a.pdf|язык=en|издание=www.ctr.unican.es|тип=сайт|место=Сантандер|год=|месяц=|число=|том=|номер=|страницы=|issn=}}</ref>
* Сигналы реального времени<ref name=":6">{{Статья|автор=Michael González Harbour, Departamento de Electrónica, Universidad de Cantabria, Avda. los Castros|заглавие=REAL-TIME POSIX: AN OVERVIEW|ссылка=https://www.ctr.unican.es/publications/mgh-1993a.pdf|язык=en|издание=www.ctr.unican.es|тип=сайт|место=Сантандер|год=|месяц=|число=|том=|номер=|страницы=|issn=|archivedate=2017-08-10|archiveurl=https://web.archive.org/web/20170810103207/https://www.ctr.unican.es/publications/mgh-1993a.pdf}}</ref>
* Часы и таймеры<ref name=":0" />
* Часы и таймеры<ref name=":0" />
*[[Семафор (информатика)|Семафоры]]<ref name=":0" />
* [[Семафор (информатика)|Семафоры]]<ref name=":0" />
* Передача сообщений<ref name=":0" />
* Передача сообщений<ref name=":0" />
* Управление памятью{{efn|Cистемный вызов mmap и [[разделяемая память]].}}<ref name=":0" />
* Управление памятью{{efn|Системный вызов mmap и [[разделяемая память]].}}<ref name=":0" />
* Синхронизация файлов и асинхронный [[ввод-вывод]]<ref name=":0" />
* Синхронизация файлов и асинхронный [[ввод-вывод]]<ref name=":0" />
* Интерфейс блокировки виртуальной памяти<ref name=":6" />
* Интерфейс блокировки виртуальной памяти<ref name=":6" />
Строка 118: Строка 115:


===== Разделы стандарта =====
===== Разделы стандарта =====

* Создание, контроль и завершение выполнения потоков
* Создание, контроль и завершение выполнения потоков
* Планировщик потоков
* Планировщик потоков
Строка 125: Строка 121:


===== Особенности стандарта =====
===== Особенности стандарта =====
Основной задачей стандарта являлось обеспечение возможности написания реентерабельного кода для использования в многопоточных программах. Из числа значительных изменений стоит отметить следующие:
Основной задачей стандарта являлось обеспечение возможности написания [[Реентерабельность|реентерабельного]] кода для использования в многопоточных программах. Из числа значительных изменений стоит отметить следующие:


* глобальная переменная <code>[[Errno.h|errno]]</code> языка [[Си (язык программирования)|Си]] более не является глобальной переменной и должна указывать на отдельную память для каждого потока<ref name=":5">{{Cite web|url=http://www.unix.org/whitepapers/reentrant.html|title=Thread-safety and POSIX.1|author=|website=The Open Group|date=|publisher=www.unix.org|lang=en|accessdate=2018-12-16}}</ref>;
* глобальная переменная <code>[[Errno.h|errno]]</code> языка [[Си (язык программирования)|Си]] более не является глобальной переменной и должна указывать на отдельную память для каждого потока<ref name=":5">{{Cite web|url=http://www.unix.org/whitepapers/reentrant.html|title=Thread-safety and POSIX.1|author=|website=The Open Group|date=|publisher=www.unix.org|lang=en|accessdate=2018-12-16|archive-date=2018-12-24|archive-url=https://web.archive.org/web/20181224230158/http://www.unix.org/whitepapers/reentrant.html|deadlink=no}}</ref>;
*добавлены [[Реентерабельность|реентерабельные]] аналоги некоторых функций, к которым добавляется суффикс «<code>_r</code>»<ref name=":5" />;
* добавлены [[Реентерабельность|реентерабельные]] аналоги некоторых функций, к которым добавляется суффикс «<code>_r</code>»<ref name=":5" />;
*все функции для работы с вводом-выводом должны быть реализованы реентерабельными, иначе в их названии необходимо явно обозначать их небезопасность (например, суффиксом «<code>_unlocked</code>»)<ref name=":5" />;
* все функции для работы со вводом-выводом должны быть реализованы реентерабельными, иначе в их названии необходимо явно обозначать их небезопасность (например, суффиксом «<code>_unlocked</code>»)<ref name=":5" />;
*добавлены функции <code>flockfile()</code>, <code>ftrylockfile()</code> и <code>funlockfile()</code> для осуществления блокирующих операций над потоками данных в рамках многопоточной программы<ref name=":5" />.
* добавлены функции <code>flockfile()</code>, <code>ftrylockfile()</code> и <code>funlockfile()</code> для осуществления блокирующих операций над потоками данных в рамках многопоточной программы<ref name=":5" />.


==== POSIX.1-1996 ====
==== POSIX.1-1996 ====
Стандарты: IEEE Std 1003.1, 1996 Edition (или IEEE 1996); ISO/IEC 9945-1:1996 .
Стандарт: IEEE Std 1003.1, 1996 Edition, также известный как IEEE 1996 (ISO/IEC 9945-1:1996).


Стандарт занимал 743 страницы, объединял ранее разработанные версии POSIX и включал в себя следующие стандарты<ref name=":0" /><ref>{{Cite web|accessdate = 2016-02-05|title = POSIX.1 FAQ|url = http://www.opengroup.org/austin/papers/posix_faq.html|publisher = www.opengroup.org}}</ref>:
Стандарт занимал 743 страницы, объединял ранее разработанные версии POSIX и включал в себя следующие стандарты<ref name=":0" /><ref>{{Cite web|accessdate = 2016-02-05|title = POSIX.1 FAQ|url = http://www.opengroup.org/austin/papers/posix_faq.html|publisher = www.opengroup.org|archive-date = 2018-10-17|archive-url = https://web.archive.org/web/20181017221345/http://www.opengroup.org/austin/papers/posix_faq.html|deadlink = no}}</ref>:
* IEEE Std 1003.1-1990 (базовый API);
* IEEE Std 1003.1-1990 (базовый API);
* IEEE Std 1003.1b-1993 (расширения реального времени);
* IEEE Std 1003.1b-1993 (расширения реального времени);
Строка 142: Строка 138:


===== Разделы стандарта =====
===== Разделы стандарта =====

* Часть 1. Системное API (Язык Си)<ref name=":0" />
* Часть 1. Системное API (Язык Си)<ref name=":0" />
* Часть 2. Командный интерпретатор и утилиты<ref name=":0" />
* Часть 2. Командный интерпретатор и утилиты<ref name=":0" />
Строка 155: Строка 150:


==== POSIX.1g. Протоколо-независимые интерфейсы ====
==== POSIX.1g. Протоколо-независимые интерфейсы ====
Первоначальное название: POSIX 1003.12<ref name=":2">{{Книга|автор = Michael Kerrisk|год = 2010-01-01|isbn = 9781593272203|страниц = 1556|издательство = No Starch Press|заглавие = The Linux Programming Interface|ссылка = https://books.google.com/books?id=2SAQAQAAQBAJ|страницы = 13, 16—17, 1096}}</ref>.
Первоначальное название: POSIX 1003.12<ref name=":2">{{Книга|автор = Michael Kerrisk|год = 2010-01-01|isbn = 9781593272203|страниц = 1556|издательство = No Starch Press|заглавие = The Linux Programming Interface|ссылка = https://books.google.com/books?id=2SAQAQAAQBAJ|страницы = 13, 16—17, 1096|archivedate = 2022-03-16|archiveurl = https://web.archive.org/web/20220316065435/https://books.google.com/books?id=2SAQAQAAQBAJ}}</ref>.


Стандарт: IEEE Std 1003.1g.
Стандарт: IEEE Std 1003.1g.


Стандарт был выпущен в 2000 году, описывал API взаимодействия процессов друг с другом и включал в себя два основных API<ref name=":4">{{Статья|автор=Nick Stoughton|заглавие=Standards, An Update on Standards Relevant to USENIX Members|ссылка=https://books.google.ru/books?redir_esc=y&hl=ru&id=KDXri214ryEC&q=SNI#v=onepage&q=SNI&f=false|язык=en|издание=AUUGN|тип=журнал|издательство=AUUG Inc.|год=1995|месяц=8|число=|том=16|номер=4|страницы=|issn=1035-7521}}</ref>:
Стандарт был выпущен в 2000 году, описывал API взаимодействия процессов друг с другом и включал в себя два основных API<ref name=":4">{{Статья|автор=Nick Stoughton|заглавие=Standards, An Update on Standards Relevant to USENIX Members|ссылка=https://books.google.ru/books?redir_esc=y&hl=ru&id=KDXri214ryEC&q=SNI#v=onepage&q=SNI&f=false|язык=en|издание=AUUGN|тип=журнал|издательство=AUUG Inc.|год=1995|месяц=8|число=|том=16|номер=4|страницы=|issn=1035-7521|archivedate=2018-12-15|archiveurl=https://web.archive.org/web/20181215222100/https://books.google.ru/books?redir_esc=y&hl=ru&id=KDXri214ryEC&q=SNI#v=onepage&q=SNI&f=false}}</ref>:
* Simple Network Interface (SNI)<ref name=":4" />;
* Simple Network Interface (SNI)<ref name=":4" />;
* Detailed Network Interface (DNI), включающий в себя API сокетов на основе сокетов 4.4BSD<ref>{{Книга|автор=W. Richard Stevens, Bill Fenner, Andrew M. Rudoff|заглавие=UNIX Network Programming|ссылка=https://books.google.ru/books?id=ptSC4LpwGA0C&pg=PA27&dq=4.4BSD+POSIX.1g&hl=ru&sa=X&ved=0ahUKEwjb6Ov9sKLfAhUltosKHbuGAloQ6AEIOTAC#v=onepage&q=4.4BSD%20POSIX.1g&f=false|издательство=Addison-Wesley Professional|год=2004|страниц=1032|isbn=9780131411555}}</ref> и помеченный устаревшим X/Open Transport Interface (XTI)<ref>{{Книга|автор=Керриск Майкл|заглавие=Linux API. Исчерпывающее руководство|ссылка=https://books.google.ru/books?id=OeVIDwAAQBAJ&pg=PA48&lpg=PA48&dq=posix+1003.1g+socket&source=bl&ots=VZ3kOUbpTy&sig=nmviwxYdNgmy7VbaEgjD2aON1mQ&hl=ru&sa=X&ved=2ahUKEwjlkd7moaLfAhXyp4sKHVNGC0gQ6AEwBXoECAkQAQ#v=onepage&q=posix.1g%20XTI&f=false|издательство="Издательский дом ""Питер"""|год=2017-10-18|страниц=1248|isbn=9785496026895}}</ref>.
* Detailed Network Interface (DNI), включающий в себя API сокетов на основе сокетов 4.4BSD<ref>{{Книга|автор=W. Richard Stevens, Bill Fenner, Andrew M. Rudoff|заглавие=UNIX Network Programming|ссылка=https://books.google.ru/books?id=ptSC4LpwGA0C&pg=PA27&dq=4.4BSD+POSIX.1g&hl=ru&sa=X&ved=0ahUKEwjb6Ov9sKLfAhUltosKHbuGAloQ6AEIOTAC|издательство=Addison-Wesley Professional|год=2004|страниц=1032|isbn=9780131411555|archivedate=2018-12-16|archiveurl=https://web.archive.org/web/20181216031140/https://books.google.ru/books?id=ptSC4LpwGA0C&pg=PA27&dq=4.4BSD+POSIX.1g&hl=ru&sa=X&ved=0ahUKEwjb6Ov9sKLfAhUltosKHbuGAloQ6AEIOTAC#v=onepage&q=4.4BSD%20POSIX.1g&f=false}}</ref> и помеченный устаревшим X/Open Transport Interface (XTI)<ref>{{Книга|автор=Керриск Майкл|заглавие=Linux API. Исчерпывающее руководство|ссылка=https://books.google.ru/books?id=OeVIDwAAQBAJ&pg=PA48&lpg=PA48&dq=posix+1003.1g+socket&source=bl&ots=VZ3kOUbpTy&sig=nmviwxYdNgmy7VbaEgjD2aON1mQ&hl=ru&sa=X&ved=2ahUKEwjlkd7moaLfAhXyp4sKHVNGC0gQ6AEwBXoECAkQAQ|издательство="Издательский дом ""Питер"""|год=2017-10-18|страниц=1248|isbn=9785496026895|archivedate=2022-03-16|archiveurl=https://web.archive.org/web/20220316065440/https://books.google.ru/books?id=OeVIDwAAQBAJ&pg=PA48&lpg=PA48&dq=posix+1003.1g+socket&source=bl&ots=VZ3kOUbpTy&sig=nmviwxYdNgmy7VbaEgjD2aON1mQ&hl=ru&sa=X&ved=2ahUKEwjlkd7moaLfAhXyp4sKHVNGC0gQ6AEwBXoECAkQAQ#v=onepage&q=posix.1g%20XTI&f=false}}</ref>.


==== POSIX.1j. Продвинутые расширения реального времени ====
==== POSIX.1j. Продвинутые расширения реального времени ====
Строка 169: Строка 164:


=== Версии POSIX после 2001 года ===
=== Версии POSIX после 2001 года ===
В марте 1997 года рабочий комитет [[Austin Group]] разработал стандарт [[Single UNIX Specification#Single UNIX Specification версии 2|Single UNIX Specification version 2]], который по своей сути был продолжением развития стандарта POSIX.1-1996<ref name=":0" /><ref>{{Cite web|accessdate = 2016-01-04|title = Enhanced Single UNIX Press Release|url = http://www.unix.org/version2/pr.html|publisher = www.unix.org}}</ref><ref>{{Cite web|accessdate = 2016-02-06|title = The UNIX System Technical Whitepapers|url = http://www.unix.org/version2/whatsnew/|publisher = www.unix.org}}</ref>.
В марте 1997 года рабочий комитет [[Austin Group]] разработал стандарт [[Single UNIX Specification#Single UNIX Specification версии 2|Single UNIX Specification version 2]], который по своей сути был продолжением развития стандарта POSIX.1-1996<ref name=":0" /><ref>{{Cite web|accessdate = 2016-01-04|title = Enhanced Single UNIX Press Release|url = http://www.unix.org/version2/pr.html|publisher = www.unix.org|archive-date = 2016-03-03|archive-url = https://web.archive.org/web/20160303235554/http://www.unix.org/version2/pr.html|deadlink = no}}</ref><ref>{{Cite web|accessdate = 2016-02-06|title = The UNIX System Technical Whitepapers|url = http://www.unix.org/version2/whatsnew/|publisher = www.unix.org|archive-date = 2016-02-06|archive-url = https://web.archive.org/web/20160206235152/http://www.unix.org/version2/whatsnew/|deadlink = no}}</ref>.


В 1999 году было принято решение, согласно которому консорциум The Open Group и [[Институт инженеров электротехники и электроники|Институт инженеров по электротехнике и электронике (IEEE)]] приняли решение об объединении усилий в совместной разработке стандартов POSIX и Single UNIX Specification. Новый стандарт POSIX должен был заменить существующие на тот момент стандарты POSIX ([[#POSIX.1. Системное API для языка Си|POSIX.1]] и [[#POSIX.2. Командная оболочка и утилиты|POSIX.2]] и др.), став основой для [[Single UNIX Specification#Single UNIX Specification версии 2|Single UNIX Specification version 3]]. Также было решено обнародовать будущий стандарт, разработку которого планировалось закончить к 2001 году<ref>{{Cite web|url = http://www.opengroup.org/austin/austinpr.txt|title = The Open Group and IEEE to develop joint revision to POSIX and UNIX standards|author = |work = |date = [[17 июля]] [[1999 год]]а|publisher = opengroup.org|subtitle = Collaborative Effort to Yield Version 3 of the Single UNIX Specification}}</ref>.
В 1999 году было принято решение, согласно которому консорциум The Open Group и [[Институт инженеров электротехники и электроники|Институт инженеров по электротехнике и электронике (IEEE)]] приняли решение об объединении усилий в совместной разработке стандартов POSIX и Single UNIX Specification. Новый стандарт POSIX должен был заменить существовавшие на тот момент стандарты POSIX ([[#POSIX.1. Системное API для языка Си|POSIX.1]] и [[#POSIX.2. Командная оболочка и утилиты|POSIX.2]] и др.), став основой для [[Single UNIX Specification#Single UNIX Specification версии 2|Single UNIX Specification version 3]]. Также было решено обнародовать будущий стандарт, разработку которого планировалось закончить к 2001 году<ref>{{Cite web|url = http://www.opengroup.org/austin/austinpr.txt|title = The Open Group and IEEE to develop joint revision to POSIX and UNIX standards|author = |work = |date = 1999-07-17|publisher = opengroup.org|subtitle = Collaborative Effort to Yield Version 3 of the Single UNIX Specification|access-date = 2016-02-06|archive-date = 2008-07-09|archive-url = https://web.archive.org/web/20080709060800/http://www.opengroup.org/austin/austinpr.txt|deadlink = no}}</ref>.


В 2001 году все предыдущие стандарты POSIX были объединены в один общий стандарт, который предполагалось использовать как основу для будущих стандартов Single UNIX Specification<ref name=":2" />.
В 2001 году все предыдущие стандарты POSIX были объединены в один общий стандарт, который предполагалось использовать как основу для будущих стандартов Single UNIX Specification<ref name=":2" />.
Строка 178: Строка 173:
Стандарт: IEEE Std 1003.1-2001; ISO/IEC 9945:2002<ref name=":2" />.
Стандарт: IEEE Std 1003.1-2001; ISO/IEC 9945:2002<ref name=":2" />.


В 2001 году основные опциональные стандарты POSIX, разработанные ранее, были объединены в единый стандарт POSIX.1-2001. С тех пор принято именовать стандарты POSIX, добавляя к ним в конец год издания<ref>{{Книга|автор = Robert Love|год = 2013-05-14|isbn = 9781449341541|страниц = 457|издательство = "O'Reilly Media, Inc."|заглавие = Linux System Programming: Talking Directly to the Kernel and C Library|ссылка = https://books.google.com/books?id=K1vXEb1SgawC|страницы = 7—8}}</ref>. POSIX.1-2001 является основой стандарта [[Single UNIX Specification#Single UNIX Specification версии 3|Single UNIX Specification version 3]]<ref>{{Cite web|accessdate = 2016-01-04|title = The Single UNIX Specification Version 3|url = http://www.unix.org/version3/pr.html|publisher = www.unix.org}}</ref>.
В 2001 году основные опциональные стандарты POSIX, разработанные ранее, были объединены в единый стандарт POSIX.1-2001. С тех пор принято именовать стандарты POSIX, добавляя к ним в конец год издания<ref>{{Книга|автор = Robert Love|год = 2013-05-14|isbn = 9781449341541|страниц = 457|издательство = "O'Reilly Media, Inc."|заглавие = Linux System Programming: Talking Directly to the Kernel and C Library|ссылка = https://books.google.com/books?id=K1vXEb1SgawC|страницы = 7—8|archivedate = 2016-06-24|archiveurl = https://web.archive.org/web/20160624002751/https://books.google.com/books?id=K1vXEb1SgawC}}</ref>. POSIX.1-2001 является основой стандарта [[Single UNIX Specification#Single UNIX Specification версии 3|Single UNIX Specification version 3]]<ref>{{Cite web|accessdate = 2016-01-04|title = The Single UNIX Specification Version 3|url = http://www.unix.org/version3/pr.html|publisher = www.unix.org|archive-date = 2013-10-29|archive-url = https://web.archive.org/web/20131029035912/http://www.unix.org/version3/pr.html|deadlink = no}}</ref>.


POSIX.1-2001 ориентирован на стандарт языка [[C99]] и может включать в себя функции и заголовочные файлы из C99<ref>{{Cite web|accessdate = 2016-02-07|title = Introduction|url = http://pubs.opengroup.org/onlinepubs/9699919799/functions/V2_chap01.html|publisher = pubs.opengroup.org}}</ref>.
POSIX.1-2001 ориентирован на стандарт языка [[C99]] и может включать в себя функции и заголовочные файлы из C99<ref>{{Cite web|accessdate = 2016-02-07|title = Introduction|url = http://pubs.opengroup.org/onlinepubs/9699919799/functions/V2_chap01.html|publisher = pubs.opengroup.org|archive-date = 2016-04-04|archive-url = https://web.archive.org/web/20160404220425/http://pubs.opengroup.org/onlinepubs/9699919799/functions/V2_chap01.html|deadlink = no}}</ref>.


Стандарт включает в себя:
Стандарт включает в себя:
Строка 191: Строка 186:
Стандарт: IEEE Std 1003.1-2004.
Стандарт: IEEE Std 1003.1-2004.


Стандарт является незначительным обновлением стандарта [[#POSIX.1-2001|POSIX.1-2001]]. Включает в себя два технических исправления<ref>{{Cite web|accessdate = 2016-01-04|title = IEEE Std 1003.1, 2004 Edition|url = http://www.unix.org/version3/ieee_std.html|publisher = www.unix.org}}</ref>. Описание стандарта доступно в интернете<ref>{{Cite web|accessdate = 2016-01-04|title = The Open Group Base Specifications Issue 6|url = http://pubs.opengroup.org/onlinepubs/009695399/|publisher = pubs.opengroup.org}}</ref>.
Стандарт является незначительным обновлением стандарта [[#POSIX.1-2001|POSIX.1-2001]]. Включает в себя два технических исправления<ref>{{Cite web|accessdate = 2016-01-04|title = IEEE Std 1003.1, 2004 Edition|url = http://www.unix.org/version3/ieee_std.html|publisher = www.unix.org|archiveurl = https://web.archive.org/web/20160204203910/http://www.unix.org/version3/ieee_std.html|archivedate = 2016-02-04|deadlink = yes}}</ref>. Описание стандарта доступно в интернете<ref>{{Cite web|accessdate = 2016-01-04|title = The Open Group Base Specifications Issue 6|url = http://pubs.opengroup.org/onlinepubs/009695399/|publisher = pubs.opengroup.org|archive-date = 2016-01-04|archive-url = https://web.archive.org/web/20160104165914/http://pubs.opengroup.org/onlinepubs/009695399/|deadlink = no}}</ref>.


==== POSIX.1-2008 ====
==== POSIX.1-2008 ====
Стандарты: IEEE Std 1003.1-2008, техническое исправление IEEE Std 1003.1-2008/Cor 1-2013; ISO/IEC 9945:2009.
Стандарты: IEEE Std 1003.1-2008 (ISO/IEC 9945:2009), техническое исправление IEEE Std 1003.1-2008/Cor 1-2013 (ISO/IEC/IEEE 9945:2009/Cor 1:2013).


Стандарт разработан в 2008. В 2013 году к стандарту было разработано технические исправление № 1 под названием IEEE Std 1003.1-2008/Cor 1-2013. Общедоступную бесплатную копию стандарта можно найти в интернете<ref>{{Cite web|accessdate = 2016-01-04|title = The Open Group Base Specifications Issue 7, 2013 Edition|url = http://pubs.opengroup.org/onlinepubs/9699919799/|publisher = pubs.opengroup.org}}</ref>. POSIX.1-2008 лежит в основе стандарта [[Single UNIX Specification#Single UNIX Specification версии 4|Single UNIX Specification version 4]]<ref>{{Cite web|accessdate = 2016-02-11|title = IEEE Std 1003.1, 2013 Edition|url = http://www.unix.org/version4/ieee_std.html|publisher = www.unix.org}}</ref>.
Стандарт разработан в 2008. В 2013 году к стандарту было разработано техническое исправление № 1 под названием IEEE Std 1003.1-2008/Cor 1-2013. Общедоступную бесплатную копию стандарта можно найти в интернете<ref>{{Cite web|accessdate = 2016-01-04|title = The Open Group Base Specifications Issue 7, 2013 Edition|url = http://pubs.opengroup.org/onlinepubs/9699919799/|publisher = pubs.opengroup.org|archive-date = 2017-12-28|archive-url = https://web.archive.org/web/20171228142848/http://pubs.opengroup.org/onlinepubs/9699919799/|deadlink = no}}</ref>. POSIX.1-2008 лежит в основе стандарта [[Single UNIX Specification#Single UNIX Specification версии 4|Single UNIX Specification version 4]]<ref>{{Cite web|accessdate = 2016-02-11|title = IEEE Std 1003.1, 2013 Edition|url = http://www.unix.org/version4/ieee_std.html|publisher = www.unix.org|archive-date = 2016-02-16|archive-url = https://web.archive.org/web/20160216070225/http://www.unix.org/version4/ieee_std.html|deadlink = no}}</ref>.


Стандарт описывает:
Стандарт описывает:
Строка 205: Строка 200:


==== POSIX.1-2017 ====
==== POSIX.1-2017 ====
Стандарт: IEEE Std 1003.1-2017 (ISO/IEC/IEEE 9945:2009/Cor 2:2017).
{{Заготовка раздела}}
Стандарт: IEEE Std 1003.1-2017


Стандарт разработан в 2017 и является текущим<ref>{{Cite web|url=https://standards.ieee.org/standard/1003_1-2017.html|title=IEEE 1003.1-2017 - IEEE Standard for Information Technology--Portable Operating System Interface (POSIX(R)) Base Specifications, Issue 7|publisher=standards.ieee.org|accessdate=2019-01-25}}</ref>.
Стандарт разработан в 2017 и является текущим<ref>{{Cite web|url=https://standards.ieee.org/standard/1003_1-2017.html|title=IEEE 1003.1-2017 - IEEE Standard for Information Technology--Portable Operating System Interface (POSIX(R)) Base Specifications, Issue 7|publisher=standards.ieee.org|accessdate=2019-01-25|archive-date=2019-01-26|archive-url=https://web.archive.org/web/20190126060844/https://standards.ieee.org/standard/1003_1-2017.html|deadlink=no}}</ref>. Является второй поправкой к редакции ISO/IEC/IEEE 9945:2009.

По сравнению с предыдущим стандартом содержит в основном исправления ошибок и перенос опциональных возможностей в категорию обязательных. В том числе опциональными перестали быть многие функции для работы с потоками, включая блокировки чтения-записи. В число новых функций в основном входят функции для работы с локалями<ref>{{Cite web|url=http://pubs.opengroup.org/onlinepubs/9699919799/xrat/V4_xsh_chap01.html|title=Rationale for System Interfaces|author=|website=|date=|publisher=pubs.opengroup.org|lang=en|accessdate=2019-05-30|archive-date=2018-07-11|archive-url=https://web.archive.org/web/20180711121217/http://pubs.opengroup.org/onlinepubs/9699919799/xrat/V4_xsh_chap01.html|deadlink=no}}</ref>.

==== POSIX.1-2024 ====
{{заготовка раздела}}


=== Профили POSIX 1003.13 ===
=== Профили POSIX 1003.13 ===
Стандарт POSIX 1003.1 подходит не для всех операционных систем. Встраиваемые операционные системы не всегда реализуют поддержку тех или иных функций. Стандарт POSIX 1003.13 описывает подмножество стандарта POSIX 1003.1 для встраиваемых систем, которое разделено на 4 профиля. Профили были разработаны, чтобы обеспечить переносимость программ на уровне исходных кодов для операционных систем с ограниченными возможностями. Они представляют собой подмножество стандарта POSIX 1003.1, то есть описывают только часть возможностей, включенных в оригинальный стандарт. Таким образом, профили не конфликтуют с оригинальным стандартом<ref name=":3" />.
Стандарт POSIX 1003.1 подходит не для всех операционных систем. Встраиваемые операционные системы не всегда реализуют поддержку тех или иных функций. Стандарт POSIX 1003.13 описывает подмножество стандарта POSIX 1003.1 для встраиваемых систем, которое разделено на 4 профиля. Профили были разработаны, чтобы обеспечить переносимость программ на уровне исходных кодов для операционных систем с ограниченными возможностями. Они представляют собой подмножество стандарта POSIX 1003.1, то есть описывают только часть возможностей, включённых в оригинальный стандарт. Таким образом, профили не конфликтуют с оригинальным стандартом<ref name=":3" />.

Текущим является стандарт IEEE 1003.13-2003<ref>{{Cite web|url=https://standards.ieee.org/standard/1003_13-2003.html|title=IEEE 1003.13-2003 - IEEE Standard for Information Technology - Standardized Application Environment Profile (AEP) - POSIX(R) Realtime and Embedded Application Support|publisher=standards.ieee.org|accessdate=2019-01-26|archive-date=2019-01-27|archive-url=https://web.archive.org/web/20190127094120/https://standards.ieee.org/standard/1003_13-2003.html|deadlink=no}}</ref>, который является развитием стандарта IEEE Std 1003.13-1998 и основывается на стандарте IEEE Std 1003.1-2001. Также в стандарт включены POSIX.26-2003 (IEEE Std 1003.26-2003), POSIX.13a, POSIX.13b<ref>{{Cite web|url=https://www.opengroup.org/austin/docs/austin_235.pdf|title=Realtime POSIX Status|author=Joe Gwinn|website=|date=2004-07|publisher=opengroup.org|access-date=2019-01-26|archive-date=2020-09-29|archive-url=https://web.archive.org/web/20200929164134/https://www.opengroup.org/austin/docs/austin_235.pdf|deadlink=no}}</ref> и ISO/IEC 14519:2001{{нет АИ|23|01|2022}}.


На 2016 год разработаны следующие профили:
На 2016 год разработаны следующие профили:
Строка 226: Строка 227:
!PSE53
!PSE53
!PSE54
!PSE54
!Первое появление
|-
|-
|1003.1-90. Процессы
|Процессы
| -
| -
| -
| -
| +
| +
| +
| +
|1003.1-90
|-
|-
|1003.1-90. Конвейеры
|Конвейеры
| -
| -
| -
| -
| +
| +
| +
| +
|1003.1-90
|-
|-
|1003.1-90. Файлы и каталоги
|Файлы и каталоги
| -
| +
| -
| -
| + {{efn|name=files_and_dirs|У PSE53 упрощённая файловая система — без именованных каналов, атрибутов файлов и получения путей по [[Шаблон поиска|шаблону поиска]].}}
| + {{efn|name=files_and_dirs}}
| +
| +
|1003.1-90
|-
|-
|1003.1-90. Пользователи и группы
|Пользователи и группы
| -
| -
| -
| -
| -
| -
| +
| +
|1003.1-90
|-
|-
|1003.1b-93. Защита памяти
|Защита памяти
| -
| -
| -
| -
| +
| +
| +
| +
|1003.1b-93
|-
|-
|1003.1b-93. Часы и таймеры высокого разрешения
|Часы и таймеры высокого разрешения
| +
| +
| +
| +
| +
| +
| +
| +
|1003.1b-93
|-
|-
|1003.1b-93. Сигналы реального времени
|Сигналы реального времени
| +
| +
| +
| +
| +
| +
| +
| +
|1003.1b-93
|-
|-
|1003.1b-93. Семафоры
|Семафоры
| +
| +
| +
| +
| +
| +
| +
| +
|1003.1b-93
|-
|-
|1003.1b-93. Разделяемая память
|Разделяемая память
| +
| +
| +
| +
| +
| +
| +
| +
|1003.1b-93
|-
|-
|1003.1b-93. Межпроцессовый обмен данными
|Межпроцессовый обмен данными
| +
| +
| +
| +
| +
| +
| +
| +
|1003.1b-93
|-
|-
|1003.1c-95. Потоки
|Потоки
| +
| +
| +
| +
| +
| +
| +
| +
|1003.1c-95
|-
|-
|1003.1c-95. Потокобезопасные функции
|Потокобезопасные функции
| +
| +
| +
| +
| +
| +
| +
| +
|1003.1c-95
|-
|-
|1003.1c-95. Атрибуты потоков, адрес стека
|Атрибуты потоков, адрес стека
| +
| +
| +
| +
| +
| +
| +
| +
|1003.1c-95
|-
|-
|1003.1c-95. Атрибуты потоков, размер стека
|Атрибуты потоков, размер стека
| +
| +
| +
| +
| +
| +
| +
| +
|1003.1c-95
|-
|-
|1003.1c-95. Разделение процесса между потоками
|Разделение процесса между потоками
| -
| -
| -
| -
| +
| +
| +
| +
|1003.1c-95
|-
|-
|1003.1c-95. Приоритеты потоков
|Приоритеты потоков
| +
| +
| +
| +
| +
| +
| +
| +
|1003.1c-95
|-
|-
|1003.1c-95. Наследование приоритетов потоками
|Наследование приоритетов потоками
| +
| +
| +
| +
| +
| +
| +
| +
|1003.1c-95
|-
|-
|1003.1c-95. Защита приоритетов потоков
|Защита приоритетов потоков
| +
| +
| +
| +
| +
| +
| +
| +
|1003.1c-95
|}
|}


== Поддержка операционными системами ==
== Поддержка операционными системами ==
В зависимости от степени совместимости со стандартами, ОС могут быть полностью или частично совместимы с POSIX. Сертифицированные продукты могут быть найдены на сайте IEEE<ref name="IEEE">{{cite web|title=POSIX|url=http://standards.ieee.org/regauth/posix/|work=Standards|publisher=IEEE|archiveurl=https://www.webcitation.org/617j7Pb9I?url=http://standards.ieee.org/develop/wg/POSIX.html|archivedate=2011-08-22|deadurl=yes}}</ref>. Бесплатный доступ к версии стандарта IEEE Std 1003.1-2004 находится на сайте «[http://pubs.opengroup.org/onlinepubs/9699919799/ The open group]».
В зависимости от степени совместимости со стандартами, ОС могут быть полностью или частично совместимы с POSIX. Сертифицированные продукты могут быть найдены на сайте IEEE<ref name="IEEE">{{cite web|title=POSIX|url=http://standards.ieee.org/regauth/posix/|work=Standards|publisher=IEEE|archiveurl=https://www.webcitation.org/617j7Pb9I?url=http://standards.ieee.org/develop/wg/POSIX.html|archivedate=2011-08-22|deadurl=yes}}</ref>. Бесплатный доступ к версии стандарта IEEE Std 1003.1-2017 находится на сайте «[[The Open Group]]»<ref>{{Cite web|lang=en|url=https://pubs.opengroup.org/onlinepubs/9699919799/|title=The Open Group Base Specifications Issue 7, 2018 edition|website=The Open Group|access-date=2022-08-11|archive-date=2022-09-01|archive-url=https://web.archive.org/web/20220901000650/https://pubs.opengroup.org/onlinepubs/9699919799/|deadlink=no}}</ref>.


=== POSIX-сертифицированные ===
=== POSIX-сертифицированные ===
Строка 343: Строка 363:
<!-- Пожалуйста, не добавляйте в данный раздел операционные системы без указания ссылки на источник информации. --><!-- TODO: переделать на таблицу, проверить UNIX 95 -->
<!-- Пожалуйста, не добавляйте в данный раздел операционные системы без указания ссылки на источник информации. --><!-- TODO: переделать на таблицу, проверить UNIX 95 -->


* [[Mac OS X]] (UNIX 03)<ref>{{Cite web|accessdate = 2016-01-05|title = Register of Open Branded Products|url = http://www.opengroup.org/openbrand/register/brand3612.htm|publisher = www.opengroup.org}}</ref>
* [[Mac OS X]] (UNIX 03)<ref>{{Cite web|accessdate = 2016-01-05|title = Register of Open Branded Products|url = http://www.opengroup.org/openbrand/register/brand3612.htm|publisher = www.opengroup.org|archive-date = 2019-09-18|archive-url = https://web.archive.org/web/20190918220239/https://www.opengroup.org/openbrand/register/brand3612.htm|deadlink = no}}</ref>
* [[Solaris]] (UNIX 03)<ref>{{Cite web|accessdate = 2016-01-05|title = Register of Open Branded Products|url = http://www.opengroup.org/openbrand/register/brand3506.htm|publisher = www.opengroup.org}}</ref>
* [[Solaris]] (UNIX 03)<ref>{{Cite web|accessdate = 2016-01-05|title = Register of Open Branded Products|url = http://www.opengroup.org/openbrand/register/brand3506.htm|publisher = www.opengroup.org|archive-date = 2016-04-08|archive-url = https://web.archive.org/web/20160408224325/http://www.opengroup.org/openbrand/register/brand3506.htm|deadlink = no}}</ref>
* [[AIX|IBM AIX]] (UNIX 03)<ref>{{Cite web|accessdate = 2016-01-05|title = Register of Open Branded Products|url = http://www.opengroup.org/openbrand/register/brand3463.htm|publisher = www.opengroup.org}}</ref>
* [[AIX|IBM AIX]] (UNIX 03)<ref>{{Cite web|accessdate = 2016-01-05|title = Register of Open Branded Products|url = http://www.opengroup.org/openbrand/register/brand3463.htm|publisher = www.opengroup.org|archive-date = 2016-03-04|archive-url = https://web.archive.org/web/20160304201405/http://www.opengroup.org/openbrand/register/brand3463.htm|deadlink = no}}</ref>
* [[HP-UX]] (UNIX 03)<ref>{{Cite web|accessdate = 2016-01-05|title = Register of Open Branded Products|url = http://www.opengroup.org/openbrand/register/brand3543.htm|publisher = www.opengroup.org}}</ref>
* [[HP-UX]] (UNIX 03)<ref>{{Cite web|accessdate = 2016-01-05|title = Register of Open Branded Products|url = http://www.opengroup.org/openbrand/register/brand3543.htm|publisher = www.opengroup.org|archive-date = 2016-04-08|archive-url = https://web.archive.org/web/20160408224320/http://www.opengroup.org/openbrand/register/brand3543.htm|deadlink = no}}</ref>
* [[QNX|QNX Neutrino]] (POSIX PSE52)<ref>{{Cite web|accessdate = 2016-02-07|title = Help - QNX SDP 6.6 Documentation|url = http://www.qnx.com/developers/docs/660/index.jsp?topic=%252Fcom.qnx.doc.neutrino.sys_arch%252Ftopic%252Fintro_embeddable.html|publisher = www.qnx.com}}</ref><ref>{{Cite web|accessdate = 2016-02-07|title = QNX Neutrino RTOS|url = http://www.qnx.com/products/neutrino-rtos/neutrino-rtos.html#POSIX|publisher = www.qnx.com}}</ref>
* [[QNX|QNX Neutrino]] (POSIX PSE52)<ref>{{Cite web|accessdate = 2016-02-07|title = Help - QNX SDP 6.6 Documentation|url = http://www.qnx.com/developers/docs/660/index.jsp?topic=%252Fcom.qnx.doc.neutrino.sys_arch%252Ftopic%252Fintro_embeddable.html|publisher = www.qnx.com|archive-date = 2016-02-08|archive-url = https://web.archive.org/web/20160208015442/http://www.qnx.com/developers/docs/660/index.jsp?topic=%2Fcom.qnx.doc.neutrino.sys_arch%2Ftopic%2Fintro_embeddable.html|deadlink = no}}</ref><ref>{{Cite web|accessdate = 2016-02-07|title = QNX Neutrino RTOS|url = http://www.qnx.com/products/neutrino-rtos/neutrino-rtos.html#POSIX|publisher = www.qnx.com|archive-date = 2016-02-08|archive-url = https://web.archive.org/web/20160208015131/http://www.qnx.com/products/neutrino-rtos/neutrino-rtos.html#POSIX|deadlink = no}}</ref>
* [[IRIX]] (UNIX 95)<ref>{{Cite web|accessdate = 2016-01-08|title = Register of Open Branded Products|url = http://www.opengroup.org/openbrand/register/sgi.htm|publisher = www.opengroup.org}}</ref>
* [[IRIX]] (UNIX 95)<ref>{{Cite web|accessdate = 2016-01-08|title = Register of Open Branded Products|url = http://www.opengroup.org/openbrand/register/sgi.htm|publisher = www.opengroup.org|archive-date = 2016-03-04|archive-url = https://web.archive.org/web/20160304054720/http://www.opengroup.org/openbrand/register/sgi.htm|deadlink = no}}</ref>
* [[Integrity (операционная система)|Integrity]] (POSIX 1003.1-2003)<ref>{{Cite web|accessdate = 2016-01-05|title = POSIX Certification - Product details|url = http://get.posixcertified.ieee.org/product_54985.html|publisher = get.posixcertified.ieee.org|deadlink = yes|archiveurl = https://web.archive.org/web/20160307152906/http://get.posixcertified.ieee.org/product_54985.html|archivedate = 2016-03-07}}</ref> и её микроядро [[µ-velosity]]
* [[Integrity (операционная система)|Integrity]] (POSIX 1003.1-2003)<ref>{{Cite web|accessdate = 2016-01-05|title = POSIX Certification - Product details|url = http://get.posixcertified.ieee.org/product_54985.html|publisher = get.posixcertified.ieee.org|deadlink = yes|archiveurl = https://web.archive.org/web/20160307152906/http://get.posixcertified.ieee.org/product_54985.html|archivedate = 2016-03-07}}</ref> и её микроядро [[µ-velosity]]
* [[Inspur K-UX]] (UNIX 03)<ref>{{Cite web|accessdate = 2016-01-05|title = Register of Open Branded Products|url = http://www.opengroup.org/openbrand/register/brand3596.htm|publisher = www.opengroup.org}}</ref>
* [[Inspur K-UX]] (UNIX 03)<ref>{{Cite web|accessdate = 2016-01-05|title = Register of Open Branded Products|url = http://www.opengroup.org/openbrand/register/brand3596.htm|publisher = www.opengroup.org|archive-date = 2014-07-09|archive-url = https://web.archive.org/web/20140709002355/http://www.opengroup.org/openbrand/register/brand3596.htm|deadlink = no}}</ref>
* [[LynxOS]] (POSIX 1003.1-1996)<ref>{{cite web|accessdate = 2016-01-05|lang=en|title = POSIX - Lynx Software Technology|url = http://www.lynx.com/industry-solutions/industry-standards/posix/|publisher = Lynx Software Technology}}</ref>
* [[LynxOS]] (POSIX 1003.1-1996)<ref>{{cite web|accessdate = 2016-01-05|lang = en|title = POSIX - Lynx Software Technology|url = http://www.lynx.com/industry-solutions/industry-standards/posix/|publisher = Lynx Software Technology|archive-date = 2016-02-16|archive-url = https://web.archive.org/web/20160216054825/http://www.lynx.com/industry-solutions/industry-standards/posix/|deadlink = no}}</ref>
* [[UnixWare]] (UNIX 95)<ref>{{Cite web|accessdate = 2016-01-08|title = Register of Open Branded Products|url = http://www.opengroup.org/openbrand/register/brand2713.htm|publisher = www.opengroup.org}}</ref>
* [[UnixWare]] (UNIX 95)<ref>{{Cite web|accessdate = 2016-01-08|title = Register of Open Branded Products|url = http://www.opengroup.org/openbrand/register/brand2713.htm|publisher = www.opengroup.org|archive-date = 2016-03-03|archive-url = https://web.archive.org/web/20160303232550/http://www.opengroup.org/openbrand/register/brand2713.htm|deadlink = no}}</ref>
* [[Tru64 UNIX]] (UNIX 95)<ref>{{Cite web|url = http://www.opengroup.org/csq/repository/norationale=1&noreferences=1&RID=dec%252FXU1%252F8.html|title = Hewlett-Packard Company Conformance Statement|author = |work = |date = |publisher = www.opengroup.org}}</ref><ref>{{Cite web|url = http://h30266.www3.hpe.com/PDFs/Tru64%20UNIX%20Operating%20System%20Version%20V5.1A.pdf|title = Tru64 UNIX Operating System V5.1A|author = QuickSpecs|work = Tru64 UNIX|date = |publisher = }}</ref>
* [[Tru64 UNIX]] (UNIX 95)<ref>{{Cite web|url = http://www.opengroup.org/csq/repository/norationale=1&noreferences=1&RID=dec%252FXU1%252F8.html|title = Hewlett-Packard Company Conformance Statement|author = |work = |date = |publisher = www.opengroup.org|access-date = 2022-05-16|archive-date = 2020-09-22|archive-url = https://web.archive.org/web/20200922064044/http://www.opengroup.org/csq/repository/norationale%3D1%26noreferences%3D1%26RID%3Ddec%252FXU1%252F8.html|deadlink = no}}</ref><ref>{{Cite web|url = http://h30266.www3.hpe.com/PDFs/Tru64%20UNIX%20Operating%20System%20Version%20V5.1A.pdf|title = Tru64 UNIX Operating System V5.1A|author = QuickSpecs|work = Tru64 UNIX|date = |publisher = |access-date = 2016-01-21|archive-date = 2016-01-25|archive-url = https://web.archive.org/web/20160125204359/http://h30266.www3.hpe.com/PDFs/Tru64%20UNIX%20Operating%20System%20Version%20V5.1A.pdf|deadlink = yes}}</ref>


=== POSIX-совместимые ===<!-- Пожалуйста, не добавляйте в данный раздел операционные системы без указания ссылки на источник информации. -->
=== POSIX-совместимые ===<!-- Пожалуйста, не добавляйте в данный раздел операционные системы без указания ссылки на источник информации. -->
Строка 359: Строка 379:
Заявлена полная совместимость с одной из версий стандарта POSIX.
Заявлена полная совместимость с одной из версий стандарта POSIX.


* [[A/UX]]<ref>{{Книга|автор = InfoWorld Media Group Inc|год = 1992-08-10|страниц = 98|издательство = InfoWorld Media Group, Inc.|заглавие = InfoWorld|ссылка = https://books.google.com/books?id=ElEEAAAAMBAJ}}</ref>
* [[A/UX]]<ref>{{Книга|автор = InfoWorld Media Group Inc|год = 1992-08-10|страниц = 98|издательство = InfoWorld Media Group, Inc.|заглавие = InfoWorld|ссылка = https://books.google.com/books?id=ElEEAAAAMBAJ|archivedate = 2016-06-01|archiveurl = https://web.archive.org/web/20160601124001/https://books.google.com/books?id=ElEEAAAAMBAJ}}</ref>
* [[FreeBSD]]<ref>{{Cite web|accessdate = 2016-01-08|title = FreeBSD POSIX 2001 Utility Compliance|url = http://people.freebsd.org/~schweikh/posix-utilities.html|publisher = people.freebsd.org}}</ref>
* [[FreeBSD]]<ref>{{Cite web|accessdate = 2016-01-08|title = FreeBSD POSIX 2001 Utility Compliance|url = http://people.freebsd.org/~schweikh/posix-utilities.html|publisher = people.freebsd.org|archive-date = 2016-06-25|archive-url = https://web.archive.org/web/20160625051411/http://people.freebsd.org/~schweikh/posix-utilities.html|deadlink = no}}</ref>
* [[BSD/OS]]
* [[BSD/OS]]
* [[iOS]]<ref>{{Книга|автор=Ole Henry Halvorsen, Douglas Clarke|заглавие=OS X and iOS Kernel Programming|ссылка=https://books.google.ru/books?id=KjX57QfgwZkC&pg=PA17&lpg=PA17&dq=ios+posix+compliance&source=bl&ots=f0Z73kTIQ5&sig=gmdNjYnT4opSVwyfXqpodFqk6QU&hl=ru&sa=X&ved=2ahUKEwi86d-18aHfAhVqo4sKHe9YDKMQ6AEwCHoECAEQAQ#v=onepage&q=ios%20posix%20compliance&f=false|издательство=Apress|год=2012-01-29|страниц=472|isbn=9781430235378}}</ref>
* [[iOS]]<ref>{{Книга|автор=Ole Henry Halvorsen, Douglas Clarke|заглавие=OS X and iOS Kernel Programming|ссылка=https://books.google.ru/books?id=KjX57QfgwZkC&pg=PA17&lpg=PA17&dq=ios+posix+compliance&source=bl&ots=f0Z73kTIQ5&sig=gmdNjYnT4opSVwyfXqpodFqk6QU&hl=ru&sa=X&ved=2ahUKEwi86d-18aHfAhVqo4sKHe9YDKMQ6AEwCHoECAEQAQ|издательство=Apress|год=2012-01-29|страниц=472|isbn=9781430235378|archivedate=2018-12-15|archiveurl=https://web.archive.org/web/20181215174031/https://books.google.ru/books?id=KjX57QfgwZkC&pg=PA17&lpg=PA17&dq=ios+posix+compliance&source=bl&ots=f0Z73kTIQ5&sig=gmdNjYnT4opSVwyfXqpodFqk6QU&hl=ru&sa=X&ved=2ahUKEwi86d-18aHfAhVqo4sKHe9YDKMQ6AEwCHoECAEQAQ#v=onepage&q=ios%20posix%20compliance&f=false}}</ref>
* [[Minix]]<ref>{{Cite web|accessdate = 2016-01-12|title = releases:3.2.0:developersguide:posixandminix [Wiki]|url = http://wiki.minix3.org/doku.php?id=releases:3.2.0:developersguide:posixandminix&s%5B%5D=posix|publisher = wiki.minix3.org}}</ref>
* [[Minix]]<ref>{{Cite web|accessdate = 2016-01-12|title = releases:3.2.0:developersguide:posixandminix [Wiki]|url = http://wiki.minix3.org/doku.php?id=releases:3.2.0:developersguide:posixandminix&s%5B%5D=posix|publisher = wiki.minix3.org|archive-date = 2016-08-16|archive-url = https://web.archive.org/web/20160816090718/http://wiki.minix3.org/doku.php?id=releases:3.2.0:developersguide:posixandminix&s%5B%5D=posix|deadlink = no}}</ref>
* [[MPE/iX]]<ref>{{Книга|автор = I. D. G. Enterprise|год = 1994-11-07|страниц = 154|издательство = IDG Enterprise|заглавие = Computerworld|ссылка = https://books.google.ru/books?id=-6GcSQAVaHgC&pg=PA24&lpg=PA24&dq=MPE/iX+posix&source=bl&ots=SJCGfuomCX&sig=yTFr_qKBKIrG8epXX4xhkPHImsI&hl=ru&sa=X&ved=0ahUKEwiIz4CIkprKAhUEBSwKHew0Cus4ChDoAQhIMAc#v=onepage&q=MPE%252FiX%2520posix&f=false}}</ref>
* [[MPE/iX]]<ref>{{Книга|автор = I. D. G. Enterprise|год = 1994-11-07|страниц = 154|издательство = IDG Enterprise|заглавие = Computerworld|ссылка = https://books.google.ru/books?id=-6GcSQAVaHgC&pg=PA24&lpg=PA24&dq=MPE/iX+posix&source=bl&ots=SJCGfuomCX&sig=yTFr_qKBKIrG8epXX4xhkPHImsI&hl=ru&sa=X&ved=0ahUKEwiIz4CIkprKAhUEBSwKHew0Cus4ChDoAQhIMAc|archivedate = 2022-03-16|archiveurl = https://web.archive.org/web/20220316065449/https://books.google.ru/books?id=-6GcSQAVaHgC&pg=PA24&lpg=PA24&dq=MPE%2FiX+posix&source=bl&ots=SJCGfuomCX&sig=yTFr_qKBKIrG8epXX4xhkPHImsI&hl=ru&sa=X&ved=0ahUKEwiIz4CIkprKAhUEBSwKHew0Cus4ChDoAQhIMAc#v=onepage&q=MPE%252FiX%2520posix&f=false}}</ref>
* [[OpenSolaris]]<ref>{{Книга|автор = Nicholas A. Solter, Jerry Jelinek, David Miner|год = 2011-03-21|isbn = 9781118080313|страниц = 740|издательство = John Wiley & Sons|заглавие = OpenSolaris Bible|ссылка = https://books.google.com/books?id=y8qaxiZNvqAC}}</ref>
* [[OpenSolaris]]<ref>{{Книга|автор = Nicholas A. Solter, Jerry Jelinek, David Miner|год = 2011-03-21|isbn = 9781118080313|страниц = 740|издательство = John Wiley & Sons|заглавие = OpenSolaris Bible|ссылка = https://books.google.com/books?id=y8qaxiZNvqAC|archivedate = 2016-06-17|archiveurl = https://web.archive.org/web/20160617142342/https://books.google.com/books?id=y8qaxiZNvqAC}}</ref>
* [[OpenVMS]] (POSIX 1003.1-1990, 1003.1b, 1003.4)<ref>{{Cite web|url = http://h20564.www2.hpe.com/hpsc/doc/public/display?docId=emr_na-c04623273&DocLang=en&docLocale=en_US&jumpid=reg_r11944_usen_c-001_title_r0014|title = OpenVMS Programming Environment Manual|author = Digital Equipment Corporation Maynard, Massachusetts|work = OpenVMS|date = март 1994|publisher = }}</ref>
* [[OpenVMS]] (POSIX 1003.1-1990, 1003.1b, 1003.4)<ref>{{Cite web|url = http://h20564.www2.hpe.com/hpsc/doc/public/display?docId=emr_na-c04623273&DocLang=en&docLocale=en_US&jumpid=reg_r11944_usen_c-001_title_r0014|title = OpenVMS Programming Environment Manual|author = Digital Equipment Corporation Maynard, Massachusetts|work = OpenVMS|date = 1994-03|publisher = |access-date = 2016-01-19|archive-date = 2016-01-25|archive-url = https://web.archive.org/web/20160125031706/http://h20564.www2.hpe.com/hpsc/doc/public/display?docId=emr_na-c04623273&DocLang=en&docLocale=en_US&jumpid=reg_r11944_usen_c-001_title_r0014|deadlink = no}}</ref>
* [[VxWorks]] (POSIX PSE52)<ref>{{Cite web|accessdate = 2016-01-18|title = STANDARDS LEADERSHIP|url = http://www.windriver.com/markets/aerospace-defense/standards.html|publisher = www.windriver.com}}</ref>
* [[VxWorks]] (POSIX PSE52)<ref>{{Cite web|accessdate = 2016-01-18|title = STANDARDS LEADERSHIP|url = http://www.windriver.com/markets/aerospace-defense/standards.html|publisher = www.windriver.com|archive-date = 2015-12-08|archive-url = https://web.archive.org/web/20151208030106/http://windriver.com/markets/aerospace-defense/standards.html|deadlink = no}}</ref>


=== По большей части POSIX-совместимые ===
=== По большей части POSIX-совместимые ===
Официально не сертифицированные как POSIX-совместимые, но соответствующие по большей части.
Официально не сертифицированные как POSIX-совместимые, но соответствующие по большей части.


* [[BeOS]]<ref>{{Книга|автор = Martin C. Brown|год = 1998-01-01|isbn = 9781558605329|страниц = 500|издательство = Morgan Kaufmann|заглавие = BeOS: Porting UNIX Applications|ссылка = https://books.google.com/books?id=4cqUYTtvkn8C}}</ref>
* [[BeOS]]<ref>{{Книга|автор = Martin C. Brown|год = 1998-01-01|isbn = 9781558605329|страниц = 500|издательство = Morgan Kaufmann|заглавие = BeOS: Porting UNIX Applications|ссылка = https://books.google.com/books?id=4cqUYTtvkn8C|archivedate = 2022-03-16|archiveurl = https://web.archive.org/web/20220316065452/https://books.google.com/books?id=4cqUYTtvkn8C}}</ref>
* [[Linux]] (большинство дистрибутивов — см. [[Linux Standard Base|LSB]])
* [[Linux]] (большинство дистрибутивов — см. [[Linux Standard Base|LSB]])
* [[NetBSD]]<ref>{{Cite web|accessdate = 2016-01-21|title = NetBSD Standards Conformance|url = http://www.netbsd.org/about/standards.html|publisher = www.netbsd.org}}</ref>
* [[NetBSD]]<ref>{{Cite web|accessdate = 2016-01-21|title = NetBSD Standards Conformance|url = http://www.netbsd.org/about/standards.html|publisher = www.netbsd.org|archive-date = 2016-01-17|archive-url = https://web.archive.org/web/20160117234722/http://www.netbsd.org/about/standards.html|deadlink = no}}</ref>
* [[Nucleus]] RTOS<ref>{{Cite web|accessdate = 2016-01-25|title = Nucleus RTOS Kernel|url = https://www.mentor.com/embedded-software/nucleus/kernel|publisher = www.mentor.com}}</ref>
* [[Nucleus]] RTOS<ref>{{Cite web|accessdate = 2016-01-25|title = Nucleus RTOS Kernel|url = https://www.mentor.com/embedded-software/nucleus/kernel|publisher = www.mentor.com|archive-date = 2016-02-01|archive-url = https://web.archive.org/web/20160201093409/https://www.mentor.com/embedded-software/nucleus/kernel|deadlink = no}}</ref>
* [[OpenBSD]]<ref>{{Cite web|accessdate = 2016-01-24|title = OpenBSD Project Goals|url = http://www.openbsd.org/goals.html|publisher = www.openbsd.org}}</ref>
* [[OpenBSD]]<ref>{{Cite web|accessdate = 2016-01-24|title = OpenBSD Project Goals|url = http://www.openbsd.org/goals.html|publisher = www.openbsd.org|archive-date = 2013-07-07|archive-url = https://www.webcitation.org/6HwIuXPg7?url=http://www.openbsd.org/goals.html|deadlink = no}}</ref>
* [[Sanos]]<ref>{{Cite web|accessdate = 2016-01-21|author = Michael Ringgaard|title = Sanos|url = http://www.jbox.dk/sanos/|publisher = www.jbox.dk}}</ref>
* [[Sanos]]<ref>{{Cite web|accessdate = 2016-01-21|author = Michael Ringgaard|title = Sanos|url = http://www.jbox.dk/sanos/|publisher = www.jbox.dk|archive-date = 2016-01-12|archive-url = https://web.archive.org/web/20160112091926/http://www.jbox.dk/sanos/|deadlink = no}}</ref>
* [[SkyOS]]<ref>{{Cite web|accessdate = 2016-01-21|title = Frequently Asked Questions {{!}} SkyOS|url = http://www.skyos.org/?q=node/408|publisher = www.skyos.org|deadlink = yes|archiveurl = https://web.archive.org/web/20160128000732/http://www.skyos.org/?q=node%2F408|archivedate = 2016-01-28}}</ref>
* [[SkyOS]]<ref>{{Cite web|accessdate = 2016-01-21|title = Frequently Asked Questions {{!}} SkyOS|url = http://www.skyos.org/?q=node/408|publisher = www.skyos.org|deadlink = yes|archiveurl = https://web.archive.org/web/20160128000732/http://www.skyos.org/?q=node%2F408|archivedate = 2016-01-28}}</ref>
* [[Syllable]]<ref>{{Cite web|accessdate = 2016-01-21|author = Syllable Project|title = Welcome to Syllable|url = https://web.syllable.org/Desktop/Welcome.html|publisher = web.syllable.org}}{{Недоступная ссылка|date=Май 2018 |bot=InternetArchiveBot }}</ref>
* [[Syllable]]<ref>{{Cite web|accessdate = 2016-01-21|author = Syllable Project|title = Welcome to Syllable|url = https://web.syllable.org/Desktop/Welcome.html|publisher = web.syllable.org|archiveurl = https://web.archive.org/web/20160125232858/http://web.syllable.org/Desktop/Welcome.html|archivedate = 2016-01-25|deadlink = yes}}</ref>
* [[Symbian OS]] (при помощи [[PIPS]])
* [[Symbian OS]] (при помощи [[PIPS]])
* [[DragonFlyBSD]]<ref>{{Cite web|url = https://www.dragonflybsd.org/posix_checklists/|title = Posix Checklists|author = |work = DragonFly BSD|date = 2014-01-05|publisher = dragonflybsd.org}}</ref>
* [[DragonFlyBSD]]<ref>{{Cite web|url = https://www.dragonflybsd.org/posix_checklists/|title = Posix Checklists|author = |work = DragonFly BSD|date = 2014-01-05|publisher = dragonflybsd.org|access-date = 2016-01-21|archive-date = 2016-02-03|archive-url = https://web.archive.org/web/20160203142348/https://www.dragonflybsd.org/posix_checklists/|deadlink = no}}</ref>
* [[RTEMS]] (POSIX 1003.1b-1993, POSIX 1003.1h/D3)<ref>{{Cite web|url=https://docs.rtems.org/branches/master/posix-users/preface.html|title=1. Preface — RTEMS POSIX API Guide 5.0.0 (master) documentation|publisher=docs.rtems.org|lang=en|accessdate=2018-08-13}}</ref>
* [[RTEMS]] (POSIX 1003.1b-1993, POSIX 1003.1h/D3)<ref>{{Cite web|url=https://docs.rtems.org/branches/master/posix-users/preface.html|title=1. Preface — RTEMS POSIX API Guide 5.0.0 (master) documentation|publisher=docs.rtems.org|lang=en|accessdate=2018-08-13|archive-date=2018-08-13|archive-url=https://web.archive.org/web/20180813210352/https://docs.rtems.org/branches/master/posix-users/preface.html|deadlink=no}}</ref>
* [[QNX|QNX Neutrino]] (POSIX 1003.1-2004)<ref name=":3">{{Cite web|url = http://www.qnx-russia.ru/presentations/eng/Posix%20in%20embedded.pps|title = Using POSIX to Maximize Code Portability in Embedded Systems|author = Peter van der Veen|work = qnx-russia.ru|date = |publisher = QNX Software Systems}}</ref>
* [[QNX|QNX Neutrino]] (POSIX 1003.1-2004)<ref name=":3">{{Cite web|url = http://www.qnx-russia.ru/presentations/eng/Posix%20in%20embedded.pps|title = Using POSIX to Maximize Code Portability in Embedded Systems|author = Peter van der Veen|work = qnx-russia.ru|date = |publisher = QNX Software Systems|access-date = 2016-02-07|archive-date = 2016-02-08|archive-url = https://web.archive.org/web/20160208021137/http://www.qnx-russia.ru/presentations/eng/Posix%20in%20embedded.pps|deadlink = no}}</ref>
* [[NuttX]]<ref>{{Cite web|url=https://nuttx.apache.org|title=Apache NuttX|lang=en|accessdate=2019-12-26|archive-date=2020-02-22|archive-url=https://web.archive.org/web/20200222042740/https://nuttx.apache.org/|deadlink=no}}</ref>


=== Частично POSIX-совместимые ===
=== Частично POSIX-совместимые ===
* [[Android]]<ref>{{Статья|автор=Mathieu Devos|заглавие=Bionic vs Glibc report. Master thesis|ссылка=http://irati.eu/wp-content/uploads/2012/07/bionic_report.pdf|язык=en|издание=1st Master MIT|тип=|издательство=Faculty Industrial Sciences & Technology|год=|месяц=|число=|том=|номер=|страницы=|issn=|access-date=2018-12-15|archive-date=2014-03-22|archive-url=https://web.archive.org/web/20140322194756/http://irati.eu/wp-content/uploads/2012/07/bionic_report.pdf|deadlink=yes|archivedate=2014-03-22|archiveurl=https://web.archive.org/web/20140322194756/http://irati.eu/wp-content/uploads/2012/07/bionic_report.pdf}}</ref><ref>{{Cite web|url=https://codingrelic.geekhold.com/2008/11/six-million-dollar-libc.html|title=The Six Million Dollar LibC|author=Denton Gentry Software Engineer San Carlos|accessdate=2018-12-15|archive-date=2018-12-15|archive-url=https://web.archive.org/web/20181215172805/https://codingrelic.geekhold.com/2008/11/six-million-dollar-libc.html|deadlink=no}}</ref>

* [[Android]]<ref>{{Статья|автор=Mathieu Devos|заглавие=Bionic vs Glibc report. Master thesis|ссылка=http://irati.eu/wp-content/uploads/2012/07/bionic_report.pdf|язык=en|издание=1st Master MIT|тип=|издательство=Faculty Industrial Sciences & Technology|год=|месяц=|число=|том=|номер=|страницы=|issn=}}</ref><ref>{{Cite web|url=https://codingrelic.geekhold.com/2008/11/six-million-dollar-libc.html|title=The Six Million Dollar LibC|author=Denton Gentry Software Engineer San Carlos|accessdate=2018-12-15}}</ref>


=== POSIX для Windows ===
=== POSIX для Windows ===

* [[Cygwin]] — обеспечивает частичное соответствие POSIX для некоторых продуктов [[Windows|Microsoft Windows]].
* [[Cygwin]] — обеспечивает частичное соответствие POSIX для некоторых продуктов [[Windows|Microsoft Windows]].
* [[Подсистема для приложений на базе UNIX|Подсистема для UNIX-приложений (SUA)]] — необязательная подсистема [[Windows]], обеспечивающая готовое окружение для компиляции и исполнения POSIX-совместимых приложений<ref>{{Cite web|accessdate = 2016-01-25|title = Подсистема приложений UNIX|url = https://technet.microsoft.com/ru-ru/library/cc772343.aspx|publisher = technet.microsoft.com}}</ref>. Соответствие стандарту POSIX.2 на уровне [[Оболочка операционной системы|командной строки]] обеспечивается с помощью командной оболочки [[Korn shell|ksh]]<ref>{{Cite web|accessdate = 2016-01-25|title = Подсистема для приложений UNIX и совместимость с POSIX|url = https://technet.microsoft.com/ru-ru/library/cc754351.aspx|publisher = technet.microsoft.com}}</ref>.
* [[Подсистема для приложений на базе UNIX|Подсистема для UNIX-приложений (SUA)]] — необязательная подсистема [[Windows]], обеспечивающая готовое окружение для компиляции и исполнения POSIX-совместимых приложений<ref>{{Cite web|accessdate = 2016-01-25|title = Подсистема приложений UNIX|url = https://technet.microsoft.com/ru-ru/library/cc772343.aspx|publisher = technet.microsoft.com}}</ref>. Соответствие стандарту POSIX.2 на уровне [[Оболочка операционной системы|командной строки]] обеспечивается с помощью командной оболочки [[Korn shell|ksh]]<ref>{{Cite web|accessdate = 2016-01-25|title = Подсистема для приложений UNIX и совместимость с POSIX|url = https://technet.microsoft.com/ru-ru/library/cc754351.aspx|publisher = technet.microsoft.com}}</ref>.
* «[[Сервисы Microsoft Windows для UNIX|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 и не может быть добавлена в другие редакции.
* «[[Сервисы Microsoft Windows для UNIX|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 и не может быть добавлена в другие редакции.
*[[Windows Subsystem for Linux]] — прослойка совместимости, впервые появившаяся в Windows 10 и реализующая API ядра Linux поверх Windows. Позволяет запускать окружение некоторых дистрибутивов в пространстве пользователя.
* [[Windows Subsystem for Linux]] — прослойка совместимости, впервые появившаяся в Windows 10 и реализующая API ядра Linux поверх Windows. Позволяет запускать окружение некоторых дистрибутивов в пространстве пользователя.
* [[UWIN]] — набор библиотек и утилит, обеспечивающих POSIX-совместимое окружение поверх [[Win32 API]]<ref>{{Cite web|accessdate = 2016-01-26|title = att/uwin|url = https://github.com/att/uwin|publisher = GitHub}}</ref>.
* [[UWIN]] — набор библиотек и утилит, обеспечивающих POSIX-совместимое окружение поверх [[Win32 API]]<ref>{{Cite web|accessdate = 2016-01-26|title = att/uwin|url = https://github.com/att/uwin|publisher = GitHub|archive-date = 2018-01-07|archive-url = https://web.archive.org/web/20180107000802/https://github.com/att/uwin|deadlink = no}}</ref>.
* [[UnxUtils]] — набор портированных под библиотеку [[Microsoft C Run-time Library|Microsoft C Run-time]] (msvcrt.dll) утилит [[GNU]]<ref>{{Cite web|accessdate = 2016-01-25|title = Native Win32 ports of some GNU utilities|url = http://unxutils.sourceforge.net|publisher = unxutils.sourceforge.net}}</ref>.
* [[UnxUtils]] — набор портированных под библиотеку [[Microsoft C Run-time Library|Microsoft C Run-time]] (msvcrt.dll) утилит [[GNU]]<ref>{{Cite web|accessdate = 2016-01-25|title = Native Win32 ports of some GNU utilities|url = http://unxutils.sourceforge.net|publisher = unxutils.sourceforge.net|archiveurl = https://web.archive.org/web/20060209022842/http://unxutils.sourceforge.net/|archivedate = 2006-02-09|deadlink = yes}}</ref>.


== См. также ==
== См. также ==
Строка 408: Строка 427:


== Примечания ==
== Примечания ==

=== Комментарии ===
=== Комментарии ===
{{комментарии}}
{{комментарии}}

=== Источники ===
=== Источники ===
{{примечания|2}}
{{примечания|2}}
Строка 422: Строка 443:
== Ссылки ==
== Ссылки ==
* [http://www.opengroup.org/ The Open Group]
* [http://www.opengroup.org/ The Open Group]
* [http://www.opengroup.org/onlinepubs/9699919799/ IEEE Std 1003.1-2017]
* [http://www.opengroup.org/onlinepubs/9799919799/ IEEE Std 1003.1-2024]
* [http://www.linuxcenter.ru/lib/books/posixbook/ Введение в POSIX’ивизм]
* [http://www.linuxcenter.ru/lib/books/posixbook/ Введение в POSIX’ивизм]
* [http://www.pasc.org/ The Portable Application Standards Committee]
* [http://www.pasc.org/ The Portable Application Standards Committee] {{Wayback|url=http://www.pasc.org/ |date=20210210232947 }}
* [http://www.opengroup.org/onlinepubs/007904975/ Текст Единой спецификации «Юникс» (очередной версии ISO/IEC 9945 в разработке).]
* [http://www.opengroup.org/onlinepubs/007904975/ Текст Единой спецификации «Юникс» (очередной версии ISO/IEC 9945 в разработке).]



Текущая версия от 13:02, 15 августа 2024

ISO/IEC/IEEE 9945[1]
Информационные технологии. Переносимый интерфейс операционной системы (POSIX).

Базовые технические требования, Выпуск 7

Комитет (разработчик) ISO/IEC JTC 1/SC 22
Сайт комитета iso.org/iso/iso_technical_committee?commid=45202
Агентство The Austin Common Standards Revision Group
Сайт агентства opengroup.org/austin
Дата утверждения 15.09.2009
Последняя поправка ISO/IEC/IEEE 9945:2009/Cor 2:2017
Стадия 90.60 (17.12.2014)
МКС (ICS) 35.060
Текущая редакция ISO/IEC/IEEE 9945:2009
Отмененный стандарт ISO/IEC 9945-1:2003

ISO/IEC 9945-2:2003
ISO/IEC 9945-3:2003
ISO/IEC 9945-4:2003

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, стандарты регулярных выражений.
  • Системные интерфейсы (англ. System interfaces) — список системных вызовов языка Си.
  • Обоснование (англ. Rationale) — объяснение принципов, используемых в стандарте.

Версии POSIX до 2001 года

[править | править код]

До 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].

Разделы стандарта
[править | править код]
  • Создание и управление процессами[5]
  • Сигналы[6]
    • Исключения плавающей точки
    • Нарушение сегментации
    • Запрещённые директивы
    • Ошибки шины
    • Таймеры
  • Операции над файлами (каталогами)[5]
  • Каналы[7]
  • Библиотека Си (стандарт Си)
  • Интерфейс и контроль ввода-вывода
  • Триггеры процессов
Особенности стандарта
[править | править код]

Из числа описанного в стандарте стоит отметить следующее:

  • добавлена функция mkfifo(), как более простой вариант создания именованных каналов по сравнению с активно использовавшейся в то время функцией mknod()[8];
  • описан формат архивов tar и cpio[5];
  • описаны файлы с информацией о пользователях и о группах[5].

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

[править | править код]

Стандарт: IEEE Std 1003.2-1992; ISO/IEC 9945-2:1993[9].

Стандарт вышел в 1992 году в двух томах общим размером около 1300 страниц. Заголовок гласил: «Part 2: Shell And Utilities», что переводится как «Часть 2: Командный интерпретатор и утилиты»[5].

Разделы стандарта
[править | править код]
  • Командный интерпретатор
  • Программные утилиты
Особенности стандарта
[править | править код]

Стандарт описывал командный интерпретатор на основе System V Bourne shell[5] и около сотни утилит командной строки (включая basename, awk, vi, yacc и многие другие)[5].

POSIX.1b. Расширения реального времени

[править | править код]

Также известен как POSIX.4[9].

Стандарт: IEEE Std 1003.1b-1993, IEEE Std 1003.1i-1995 (технические исправления к 1003.1b).

Изначально известный как IEEE P1003.4, стандарт являлся обновлением стандарта IEEE Std 1003.1-1990. Обновление из 590 страниц включало в себя расширения реального времени, разработанные рабочим комитетом P1003.4[5]. В 1995 году стандарт был дополнен техническими исправлениями (IEEE Std 1003.1i-1995).

Разделы стандарта
[править | править код]
  • Планировка приоритетов[5]
  • Сигналы реального времени[10]
  • Часы и таймеры[5]
  • Семафоры[5]
  • Передача сообщений[5]
  • Управление памятью[a][5]
  • Синхронизация файлов и асинхронный ввод-вывод[5]
  • Интерфейс блокировки виртуальной памяти[10]

POSIX.1c. Потоки

[править | править код]

Стандарт: IEEE Std 1003.1c-1995.

Разделы стандарта
[править | править код]
  • Создание, контроль и завершение выполнения потоков
  • Планировщик потоков
  • Синхронизация потоков
  • Обработка сигналов
Особенности стандарта
[править | править код]

Основной задачей стандарта являлось обеспечение возможности написания реентерабельного кода для использования в многопоточных программах. Из числа значительных изменений стоит отметить следующие:

  • глобальная переменная errno языка Си более не является глобальной переменной и должна указывать на отдельную память для каждого потока[11];
  • добавлены реентерабельные аналоги некоторых функций, к которым добавляется суффикс «_r»[11];
  • все функции для работы со вводом-выводом должны быть реализованы реентерабельными, иначе в их названии необходимо явно обозначать их небезопасность (например, суффиксом «_unlocked»)[11];
  • добавлены функции flockfile(), ftrylockfile() и funlockfile() для осуществления блокирующих операций над потоками данных в рамках многопоточной программы[11].

Стандарт: IEEE Std 1003.1, 1996 Edition, также известный как IEEE 1996 (ISO/IEC 9945-1:1996).

Стандарт занимал 743 страницы, объединял ранее разработанные версии POSIX и включал в себя следующие стандарты[5][12]:

  • IEEE Std 1003.1-1990 (базовый API);
  • IEEE Std 1003.1b-1993 (расширения реального времени);
  • IEEE Std 1003.1c-1995 (потоки);
  • IEEE Std 1003.1i-1995 (технические исправления к стандарту 1003.1b).
Разделы стандарта
[править | править код]
  • Часть 1. Системное API (Язык Си)[5]
  • Часть 2. Командный интерпретатор и утилиты[5]
  • Часть 3. Системное администрирование (в разработке)[5]

При этом около четверти страниц стандарта занимала историческая справка и пояснения причин, по которым в него были включены те или иные функции[5].

POSIX.1d. Дополнительные расширения реального времени

[править | править код]

Стандарт: IEEE Std 1003.1d-1999.

Описывал дополнительные расширения реального времени[9]. Например, системный вызов sem_timedwait() появился именно в этом стандарте[13].

POSIX.1g. Протоколо-независимые интерфейсы

[править | править код]

Первоначальное название: POSIX 1003.12[13].

Стандарт: IEEE Std 1003.1g.

Стандарт был выпущен в 2000 году, описывал API взаимодействия процессов друг с другом и включал в себя два основных API[14]:

  • Simple Network Interface (SNI)[14];
  • Detailed Network Interface (DNI), включающий в себя API сокетов на основе сокетов 4.4BSD[15] и помеченный устаревшим X/Open Transport Interface (XTI)[16].

POSIX.1j. Продвинутые расширения реального времени

[править | править код]

Стандарт: IEEE Std 1003.1j-2000.

Описывает продвинутые расширения реального времени[9].

Версии POSIX после 2001 года

[править | править код]

В марте 1997 года рабочий комитет Austin Group разработал стандарт Single UNIX Specification version 2, который по своей сути был продолжением развития стандарта POSIX.1-1996[5][17][18].

В 1999 году было принято решение, согласно которому консорциум The Open Group и Институт инженеров по электротехнике и электронике (IEEE) приняли решение об объединении усилий в совместной разработке стандартов POSIX и Single UNIX Specification. Новый стандарт POSIX должен был заменить существовавшие на тот момент стандарты POSIX (POSIX.1 и POSIX.2 и др.), став основой для Single UNIX Specification version 3. Также было решено обнародовать будущий стандарт, разработку которого планировалось закончить к 2001 году[19].

В 2001 году все предыдущие стандарты POSIX были объединены в один общий стандарт, который предполагалось использовать как основу для будущих стандартов Single UNIX Specification[13].

Стандарт: IEEE Std 1003.1-2001; ISO/IEC 9945:2002[13].

В 2001 году основные опциональные стандарты POSIX, разработанные ранее, были объединены в единый стандарт POSIX.1-2001. С тех пор принято именовать стандарты POSIX, добавляя к ним в конец год издания[20]. POSIX.1-2001 является основой стандарта Single UNIX Specification version 3[21].

POSIX.1-2001 ориентирован на стандарт языка C99 и может включать в себя функции и заголовочные файлы из C99[22].

Стандарт включает в себя:

  • основные понятия и определения;
  • системные интерфейсы и заголовочные файлы;
  • описание командного интерпретатора на уровне исходного кода и утилит командной строки.

Стандарт: IEEE Std 1003.1-2004.

Стандарт является незначительным обновлением стандарта POSIX.1-2001. Включает в себя два технических исправления[23]. Описание стандарта доступно в интернете[24].

Стандарты: IEEE Std 1003.1-2008 (ISO/IEC 9945:2009), техническое исправление IEEE Std 1003.1-2008/Cor 1-2013 (ISO/IEC/IEEE 9945:2009/Cor 1:2013).

Стандарт разработан в 2008. В 2013 году к стандарту было разработано техническое исправление № 1 под названием IEEE Std 1003.1-2008/Cor 1-2013. Общедоступную бесплатную копию стандарта можно найти в интернете[25]. POSIX.1-2008 лежит в основе стандарта Single UNIX Specification version 4[26].

Стандарт описывает:

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

Стандарт: IEEE Std 1003.1-2017 (ISO/IEC/IEEE 9945:2009/Cor 2:2017).

Стандарт разработан в 2017 и является текущим[27]. Является второй поправкой к редакции ISO/IEC/IEEE 9945:2009.

По сравнению с предыдущим стандартом содержит в основном исправления ошибок и перенос опциональных возможностей в категорию обязательных. В том числе опциональными перестали быть многие функции для работы с потоками, включая блокировки чтения-записи. В число новых функций в основном входят функции для работы с локалями[28].

Профили POSIX 1003.13

[править | править код]

Стандарт POSIX 1003.1 подходит не для всех операционных систем. Встраиваемые операционные системы не всегда реализуют поддержку тех или иных функций. Стандарт POSIX 1003.13 описывает подмножество стандарта POSIX 1003.1 для встраиваемых систем, которое разделено на 4 профиля. Профили были разработаны, чтобы обеспечить переносимость программ на уровне исходных кодов для операционных систем с ограниченными возможностями. Они представляют собой подмножество стандарта POSIX 1003.1, то есть описывают только часть возможностей, включённых в оригинальный стандарт. Таким образом, профили не конфликтуют с оригинальным стандартом[29].

Текущим является стандарт IEEE 1003.13-2003[30], который является развитием стандарта IEEE Std 1003.13-1998 и основывается на стандарте IEEE Std 1003.1-2001. Также в стандарт включены POSIX.26-2003 (IEEE Std 1003.26-2003), POSIX.13a, POSIX.13b[31] и ISO/IEC 14519:2001[источник не указан 1052 дня].

На 2016 год разработаны следующие профили:

  • POSIX PSE54 (многопользовательская многопроцессная операционная система с поддержкой потоков и файловой системы);
  • POSIX PSE53 (многопроцессная операционная система с поддержкой потоков и файловой системы);
  • POSIX PSE52 (однопроцессная операционная система с поддержкой потоков и файловой системы);
  • POSIX PSE51 (однопроцессная операционная система с поддержкой потоков, без файловой системы).

Сравнительная характеристика профилей

[править | править код]
Поддерживаемые возможности[29] PSE51 PSE52 PSE53 PSE54 Первое появление
Процессы - - + + 1003.1-90
Конвейеры - - + + 1003.1-90
Файлы и каталоги - + [b] + [b] + 1003.1-90
Пользователи и группы - - - + 1003.1-90
Защита памяти - - + + 1003.1b-93
Часы и таймеры высокого разрешения + + + + 1003.1b-93
Сигналы реального времени + + + + 1003.1b-93
Семафоры + + + + 1003.1b-93
Разделяемая память + + + + 1003.1b-93
Межпроцессовый обмен данными + + + + 1003.1b-93
Потоки + + + + 1003.1c-95
Потокобезопасные функции + + + + 1003.1c-95
Атрибуты потоков, адрес стека + + + + 1003.1c-95
Атрибуты потоков, размер стека + + + + 1003.1c-95
Разделение процесса между потоками - - + + 1003.1c-95
Приоритеты потоков + + + + 1003.1c-95
Наследование приоритетов потоками + + + + 1003.1c-95
Защита приоритетов потоков + + + + 1003.1c-95

Поддержка операционными системами

[править | править код]

В зависимости от степени совместимости со стандартами, ОС могут быть полностью или частично совместимы с POSIX. Сертифицированные продукты могут быть найдены на сайте IEEE[32]. Бесплатный доступ к версии стандарта IEEE Std 1003.1-2017 находится на сайте «The Open Group»[33].

POSIX-сертифицированные

[править | править код]

C 1996 года стандарт SUS включает в себя стандарт POSIX, поэтому сертифицированные на стандарт UNIX операционные системы можно считать одновременно сертифицированными и на стандарт POSIX.

POSIX-совместимые

[править | править код]

Заявлена полная совместимость с одной из версий стандарта POSIX.

По большей части POSIX-совместимые

[править | править код]

Официально не сертифицированные как POSIX-совместимые, но соответствующие по большей части.

Частично POSIX-совместимые

[править | править код]

POSIX для Windows

[править | править код]
  • Cygwin — обеспечивает частичное соответствие POSIX для некоторых продуктов Microsoft Windows.
  • Подсистема для UNIX-приложений (SUA) — необязательная подсистема Windows, обеспечивающая готовое окружение для компиляции и исполнения POSIX-совместимых приложений[67]. Соответствие стандарту POSIX.2 на уровне командной строки обеспечивается с помощью командной оболочки ksh[68].
  • «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 и не может быть добавлена в другие редакции.
  • Windows Subsystem for Linux — прослойка совместимости, впервые появившаяся в Windows 10 и реализующая API ядра Linux поверх Windows. Позволяет запускать окружение некоторых дистрибутивов в пространстве пользователя.
  • UWIN — набор библиотек и утилит, обеспечивающих POSIX-совместимое окружение поверх Win32 API[69].
  • UnxUtils — набор портированных под библиотеку Microsoft C Run-time (msvcrt.dll) утилит GNU[70].

Примечания

[править | править код]

Комментарии

[править | править код]
  1. Системный вызов mmap и разделяемая память.
  2. 1 2 У PSE53 упрощённая файловая система — без именованных каналов, атрибутов файлов и получения путей по шаблону поиска.
  1. ISO/IEC/IEEE 9945:2009 - Информационные технологии. Переносимый интерфейс операционной системы (POSIX). Базовые технические требования, Выпуск 7. www.iso.org. Дата обращения: 12 февраля 2016.
  2. ISO/IEC 9945. www.unix.org. Дата обращения: 7 января 2016. Архивировано 4 марта 2016 года.
  3. The UNIX System -- The Single UNIX Specification. www.unix.org. Дата обращения: 7 января 2016. Архивировано 22 августа 2011 года.
  4. 1 2 POSIX® 1003.1 Frequently Asked Questions (FAQ Version 1.12) (англ.) (2 февраля 2006). Дата обращения: 5 марта 2008. Архивировано из оригинала 22 августа 2011 года.
  5. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 W. Richard Stevens, Bill Fenner, Andrew M. Rudoff. UNIX Network Programming. — Addison-Wesley Professional, 2004-01-01. — С. 25—28. — 1032 с. — ISBN 9780131411555. Архивировано 2 июля 2016 года.
  6. signal(7) — Linux manual page (англ.). man7.org. — «First the signals described in the original POSIX.1-1990 standard». Дата обращения: 15 декабря 2018. Архивировано 15 декабря 2018 года.
  7. Bill Gallmeister. POSIX.4 Programmers Guide: Programming for the Real World. — "O'Reilly Media, Inc.", 1995. — 580 с. — ISBN 9781565920743. Архивировано 17 декабря 2018 года.
  8. Керриск Майкл. Linux API. Исчерпывающее руководство. — "Издательский дом ""Питер""", 2017-10-18. — 1248 с. — ISBN 9785496026895. Архивировано 16 декабря 2018 года.
  9. 1 2 3 4 standards(7) - Linux manual page. man7.org. Дата обращения: 6 февраля 2016. Архивировано 14 февраля 2016 года.
  10. 1 2 Michael González Harbour, Departamento de Electrónica, Universidad de Cantabria, Avda. los Castros. REAL-TIME POSIX: AN OVERVIEW (англ.) // www.ctr.unican.es : сайт. — Сантандер. Архивировано 10 августа 2017 года.
  11. 1 2 3 4 Thread-safety and POSIX.1 (англ.). The Open Group. www.unix.org. Дата обращения: 16 декабря 2018. Архивировано 24 декабря 2018 года.
  12. POSIX.1 FAQ. www.opengroup.org. Дата обращения: 5 февраля 2016. Архивировано 17 октября 2018 года.
  13. 1 2 3 4 Michael Kerrisk. The Linux Programming Interface. — No Starch Press, 2010-01-01. — С. 13, 16—17, 1096. — 1556 с. — ISBN 9781593272203. Архивировано 16 марта 2022 года.
  14. 1 2 Nick Stoughton. Standards, An Update on Standards Relevant to USENIX Members (англ.) // AUUGN : журнал. — AUUG Inc., 1995. — August (vol. 16, no. 4). — ISSN 1035-7521. Архивировано 15 декабря 2018 года.
  15. W. Richard Stevens, Bill Fenner, Andrew M. Rudoff. UNIX Network Programming. — Addison-Wesley Professional, 2004. — 1032 с. — ISBN 9780131411555. Архивировано 16 декабря 2018 года.
  16. Керриск Майкл. Linux API. Исчерпывающее руководство. — "Издательский дом ""Питер""", 2017-10-18. — 1248 с. — ISBN 9785496026895. Архивировано 16 марта 2022 года.
  17. Enhanced Single UNIX Press Release. www.unix.org. Дата обращения: 4 января 2016. Архивировано 3 марта 2016 года.
  18. The UNIX System Technical Whitepapers. www.unix.org. Дата обращения: 6 февраля 2016. Архивировано 6 февраля 2016 года.
  19. 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). Дата обращения: 6 февраля 2016. Архивировано 9 июля 2008 года.
  20. Robert Love. Linux System Programming: Talking Directly to the Kernel and C Library. — "O'Reilly Media, Inc.", 2013-05-14. — С. 7—8. — 457 с. — ISBN 9781449341541. Архивировано 24 июня 2016 года.
  21. The Single UNIX Specification Version 3. www.unix.org. Дата обращения: 4 января 2016. Архивировано 29 октября 2013 года.
  22. Introduction. pubs.opengroup.org. Дата обращения: 7 февраля 2016. Архивировано 4 апреля 2016 года.
  23. IEEE Std 1003.1, 2004 Edition. www.unix.org. Дата обращения: 4 января 2016. Архивировано из оригинала 4 февраля 2016 года.
  24. The Open Group Base Specifications Issue 6. pubs.opengroup.org. Дата обращения: 4 января 2016. Архивировано 4 января 2016 года.
  25. The Open Group Base Specifications Issue 7, 2013 Edition. pubs.opengroup.org. Дата обращения: 4 января 2016. Архивировано 28 декабря 2017 года.
  26. IEEE Std 1003.1, 2013 Edition. www.unix.org. Дата обращения: 11 февраля 2016. Архивировано 16 февраля 2016 года.
  27. IEEE 1003.1-2017 - IEEE Standard for Information Technology--Portable Operating System Interface (POSIX(R)) Base Specifications, Issue 7. standards.ieee.org. Дата обращения: 25 января 2019. Архивировано 26 января 2019 года.
  28. Rationale for System Interfaces (англ.). pubs.opengroup.org. Дата обращения: 30 мая 2019. Архивировано 11 июля 2018 года.
  29. 1 2 3 Peter van der Veen. Using POSIX to Maximize Code Portability in Embedded Systems. qnx-russia.ru. QNX Software Systems. Дата обращения: 7 февраля 2016. Архивировано 8 февраля 2016 года.
  30. IEEE 1003.13-2003 - IEEE Standard for Information Technology - Standardized Application Environment Profile (AEP) - POSIX(R) Realtime and Embedded Application Support. standards.ieee.org. Дата обращения: 26 января 2019. Архивировано 27 января 2019 года.
  31. Joe Gwinn. Realtime POSIX Status. opengroup.org (июль 2004). Дата обращения: 26 января 2019. Архивировано 29 сентября 2020 года.
  32. POSIX. Standards. IEEE. Архивировано из оригинала 22 августа 2011 года.
  33. The Open Group Base Specifications Issue 7, 2018 edition (англ.). The Open Group. Дата обращения: 11 августа 2022. Архивировано 1 сентября 2022 года.
  34. Register of Open Branded Products. www.opengroup.org. Дата обращения: 5 января 2016. Архивировано 18 сентября 2019 года.
  35. Register of Open Branded Products. www.opengroup.org. Дата обращения: 5 января 2016. Архивировано 8 апреля 2016 года.
  36. Register of Open Branded Products. www.opengroup.org. Дата обращения: 5 января 2016. Архивировано 4 марта 2016 года.
  37. Register of Open Branded Products. www.opengroup.org. Дата обращения: 5 января 2016. Архивировано 8 апреля 2016 года.
  38. Help - QNX SDP 6.6 Documentation. www.qnx.com. Дата обращения: 7 февраля 2016. Архивировано 8 февраля 2016 года.
  39. QNX Neutrino RTOS. www.qnx.com. Дата обращения: 7 февраля 2016. Архивировано 8 февраля 2016 года.
  40. Register of Open Branded Products. www.opengroup.org. Дата обращения: 8 января 2016. Архивировано 4 марта 2016 года.
  41. POSIX Certification - Product details. get.posixcertified.ieee.org. Дата обращения: 5 января 2016. Архивировано из оригинала 7 марта 2016 года.
  42. Register of Open Branded Products. www.opengroup.org. Дата обращения: 5 января 2016. Архивировано 9 июля 2014 года.
  43. POSIX - Lynx Software Technology (англ.). Lynx Software Technology. Дата обращения: 5 января 2016. Архивировано 16 февраля 2016 года.
  44. Register of Open Branded Products. www.opengroup.org. Дата обращения: 8 января 2016. Архивировано 3 марта 2016 года.
  45. Hewlett-Packard Company Conformance Statement. www.opengroup.org. Дата обращения: 16 мая 2022. Архивировано 22 сентября 2020 года.
  46. QuickSpecs. Tru64 UNIX Operating System V5.1A. Tru64 UNIX. Дата обращения: 21 января 2016. Архивировано из оригинала 25 января 2016 года.
  47. InfoWorld Media Group Inc. InfoWorld. — InfoWorld Media Group, Inc., 1992-08-10. — 98 с. Архивировано 1 июня 2016 года.
  48. FreeBSD POSIX 2001 Utility Compliance. people.freebsd.org. Дата обращения: 8 января 2016. Архивировано 25 июня 2016 года.
  49. Ole Henry Halvorsen, Douglas Clarke. OS X and iOS Kernel Programming. — Apress, 2012-01-29. — 472 с. — ISBN 9781430235378. Архивировано 15 декабря 2018 года.
  50. releases:3.2.0:developersguide:posixandminix [Wiki]. wiki.minix3.org. Дата обращения: 12 января 2016. Архивировано 16 августа 2016 года.
  51. I. D. G. Enterprise. Computerworld. — IDG Enterprise, 1994-11-07. — 154 с. Архивировано 16 марта 2022 года.
  52. Nicholas A. Solter, Jerry Jelinek, David Miner. OpenSolaris Bible. — John Wiley & Sons, 2011-03-21. — 740 с. — ISBN 9781118080313. Архивировано 17 июня 2016 года.
  53. Digital Equipment Corporation Maynard, Massachusetts. OpenVMS Programming Environment Manual. OpenVMS (март 1994). Дата обращения: 19 января 2016. Архивировано 25 января 2016 года.
  54. STANDARDS LEADERSHIP. www.windriver.com. Дата обращения: 18 января 2016. Архивировано 8 декабря 2015 года.
  55. Martin C. Brown. BeOS: Porting UNIX Applications. — Morgan Kaufmann, 1998-01-01. — 500 с. — ISBN 9781558605329. Архивировано 16 марта 2022 года.
  56. NetBSD Standards Conformance. www.netbsd.org. Дата обращения: 21 января 2016. Архивировано 17 января 2016 года.
  57. Nucleus RTOS Kernel. www.mentor.com. Дата обращения: 25 января 2016. Архивировано 1 февраля 2016 года.
  58. OpenBSD Project Goals. www.openbsd.org. Дата обращения: 24 января 2016. Архивировано 7 июля 2013 года.
  59. Michael Ringgaard. Sanos. www.jbox.dk. Дата обращения: 21 января 2016. Архивировано 12 января 2016 года.
  60. Frequently Asked Questions | SkyOS. www.skyos.org. Дата обращения: 21 января 2016. Архивировано из оригинала 28 января 2016 года.
  61. Syllable Project. Welcome to Syllable. web.syllable.org. Дата обращения: 21 января 2016. Архивировано из оригинала 25 января 2016 года.
  62. Posix Checklists. DragonFly BSD. dragonflybsd.org (5 января 2014). Дата обращения: 21 января 2016. Архивировано 3 февраля 2016 года.
  63. 1. Preface — RTEMS POSIX API Guide 5.0.0 (master) documentation (англ.). docs.rtems.org. Дата обращения: 13 августа 2018. Архивировано 13 августа 2018 года.
  64. Apache NuttX (англ.). Дата обращения: 26 декабря 2019. Архивировано 22 февраля 2020 года.
  65. Mathieu Devos. Bionic vs Glibc report. Master thesis (англ.) // 1st Master MIT. — Faculty Industrial Sciences & Technology. Архивировано 22 марта 2014 года.
  66. Denton Gentry Software Engineer San Carlos. The Six Million Dollar LibC. Дата обращения: 15 декабря 2018. Архивировано 15 декабря 2018 года.
  67. Подсистема приложений UNIX. technet.microsoft.com. Дата обращения: 25 января 2016.
  68. Подсистема для приложений UNIX и совместимость с POSIX. technet.microsoft.com. Дата обращения: 25 января 2016.
  69. att/uwin. GitHub. Дата обращения: 26 января 2016. Архивировано 7 января 2018 года.
  70. Native Win32 ports of some GNU utilities. unxutils.sourceforge.net. Дата обращения: 25 января 2016. Архивировано из оригинала 9 февраля 2006 года.

Литература

[править | править код]