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 |
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].
Стандарт состоит из четырёх основных разделов.
До 2001 года было создано много стандартов POSIX, часть из которых использовались для формирования стандартов Single UNIX Specification. Множество операционных систем частично или полностью реализовывали поддержку этих стандартов, в связи с чем в руководствах к системным вызовам и к программам часто встречаются ссылки на данные стандарты. На данный момент эти стандарты являются устаревшими и представляют лишь исторический интерес.
Стандарт: 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].
Из числа описанного в стандарте стоит отметить следующее:
Стандарт: 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.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).
Стандарт: 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]:
При этом около четверти страниц стандарта занимала историческая справка и пояснения причин, по которым в него были включены те или иные функции[5].
Стандарт: IEEE Std 1003.1d-1999.
Описывал дополнительные расширения реального времени[9]. Например, системный вызов sem_timedwait()
появился именно в этом стандарте[13].
Первоначальное название: POSIX 1003.12[13].
Стандарт: IEEE Std 1003.1g.
Стандарт был выпущен в 2000 году, описывал API взаимодействия процессов друг с другом и включал в себя два основных API[14]:
Стандарт: IEEE Std 1003.1j-2000.
Описывает продвинутые расширения реального времени[9].
В марте 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.
Стандарт POSIX 1003.1 подходит не для всех операционных систем. Встраиваемые операционные системы не всегда реализуют поддержку тех или иных функций. Стандарт POSIX 1003.13 описывает подмножество стандарта POSIX 1003.1 для встраиваемых систем, которое разделено на 4 профиля. Профили были разработаны, чтобы обеспечить переносимость программ на уровне исходных кодов для операционных систем с ограниченными возможностями. Они представляют собой подмножество стандарта POSIX 1003.1, то есть описывают только часть возможностей, включенных в оригинальный стандарт. Таким образом, профили не конфликтуют с оригинальным стандартом[28].
Текущим является стандарт IEEE 1003.13-2003[29], который является развитием стандарта IEEE Std 1003.13-1998 и основывается на стандарте IEEE Std 1003.1-2001. Также в стандарт включены POSIX.26-2003 (IEEE Std 1003.26-2003), POSIX.13a, POSIX.13b[30] и ISO/IEC 14519:2001[источник?].
На 2016 год разработаны следующие профили:
Поддерживаемые возможности[28] | PSE51 | PSE52 | PSE53 | PSE54 | Первое появление |
---|---|---|---|---|---|
Процессы | - | - | + | + | 1003.1-90 |
Конвейеры | - | - | + | + | 1003.1-90 |
Файлы и каталоги | - | + [lower-alpha 2] | + [lower-alpha 2] | + | 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[31]. Бесплатный доступ к версии стандарта IEEE Std 1003.1-2004 находится на сайте «The open group».
C 1996 года стандарт SUS включает в себя стандарт POSIX, поэтому сертифицированные на стандарт UNIX операционные системы можно считать одновременно сертифицированными и на стандарт POSIX.
Заявлена полная совместимость с одной из версий стандарта POSIX.
Официально не сертифицированные как POSIX-совместимые, но соответствующие по большей части.
Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".
Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.
Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .