Интерфейс переносимой операционной системы ( POSIX ) - это семейство стандартов, определенных компьютерным обществом IEEE для обеспечения совместимости между операционными системами . [1] POSIX определяет интерфейс прикладного программирования (API), наряду с оболочками командной строки и интерфейсами служебных программ, для совместимости программного обеспечения с вариантами Unix и другими операционными системами. [2] [3]
Статус | Опубликовано |
---|---|
Год начался | 1988 |
Последняя версия | IEEE Std 1003.1-2017 2017 |
Организация | Austin Group ( IEEE Computer Society , Открытая группа , ISO / IEC JTC 1 ) |
Связанные стандарты | ISO / IEC 9945 |
Домен | Интерфейсы прикладного программирования |
Сокращение | POSIX |
Веб-сайт | получить |
Имя
Первоначально название «POSIX» относилось к стандарту IEEE Std 1003.1-1988, выпущенному в 1988 году. Семейство стандартов POSIX официально обозначено как IEEE 1003, а номер стандарта ISO / IEC - ISO / IEC 9945.
Стандарты появились в результате проекта, начатого примерно в 1985 году. Ричард Столлман предложил IEEE название POSIX вместо прежнего IEEE-IX . Комитет нашел его более легко произносимым и запоминающимся, и поэтому принял его. [2] [4]
Обзор
Unix был выбран в качестве основы для стандартного системного интерфейса отчасти потому, что он был «нейтральным к производителю». Однако существовало несколько основных версий Unix, поэтому возникла необходимость в разработке системы с общим знаменателем. Спецификации POSIX для Unix-подобных операционных систем изначально состояли из единого документа для основного интерфейса программирования , но со временем выросли до 19 отдельных документов (POSIX.1, POSIX.2 и т. Д.). [5] Стандартизированная пользовательская командная строка и интерфейс сценариев были основаны на оболочке UNIX System V. [6] Многие программы, службы и служебные программы пользовательского уровня (включая awk , echo , ed ) также были стандартизированы вместе с необходимыми службами программного уровня (включая базовый ввод-вывод : файл , терминал и сеть ). POSIX также определяет стандартный API библиотеки потоков, который поддерживается большинством современных операционных систем. В 2008 году большинство частей POSIX были объединены в единый стандарт (IEEE Std 1003.1-2008 , также известный как POSIX.1-2008).
По состоянию на 2014 г.[Обновить], Документация POSIX разделена на две части:
- POSIX.1, издание 2013 г .: базовые определения POSIX, системные интерфейсы, команды и служебные программы (включая POSIX.1, расширения для POSIX.1, службы реального времени, интерфейс потоков, расширения в реальном времени, интерфейс безопасности, доступ к сетевым файлам) и межпроцессное взаимодействие в сети, расширения пользовательской переносимости, исправления и расширения, служебные программы защиты и управления и служебные программы пакетной системы. Это POSIX 1003.1-2008 с техническим исправлением 1.)
- Тестирование на соответствие POSIX: Набор тестов для POSIX сопровождает стандарт: VSX-PCTS или VSX POSIX Conformance Test Suite . [7]
Разработка стандарта POSIX происходит в Austin Group (совместная рабочая группа IEEE, The Open Group и ISO / IEC JTC 1 ).
Версии
Запчасти до 1997 г.
До 1997 года POSIX содержал несколько стандартов:
- POSIX.1 : Основные службы (включает стандарт ANSI C ) (IEEE Std 1003.1-1988)
- POSIX.1b : расширения реального времени (IEEE Std 1003.1b-1993, позже появившийся как librt - библиотека расширений реального времени) [8] )
- Приоритетное планирование
- Сигналы в реальном времени
- Часы и таймеры
- Семафоры
- Сообщение передается
- Общая память
- Асинхронный и синхронный ввод-вывод
- Интерфейс блокировки памяти
- POSIX.1c : Расширения потоков (IEEE Std 1003.1c-1995)
- Создание, управление и очистка потоков
- Планирование потоков
- Синхронизация потоков
- Обработка сигналов
- POSIX.2 : Shell и служебные программы (IEEE Std 1003.2-1992)
- Командный интерпретатор
- Служебные программы
Версии после 1997 г.
После 1997 года Austin Group разработала версии POSIX. Спецификации известны под названием Single UNIX Specification , прежде чем они станут стандартом POSIX после официального утверждения ISO.
POSIX.1-2001 (с двумя TC)
POSIX.1-2001 (или IEEE Std 1003.1-2001) соответствует единой спецификации UNIX версии 3. [9]
Этот стандарт состоял из:
- Базовые определения, выпуск 6,
- Системные интерфейсы и заголовки, выпуск 6,
- Команды и утилиты, выпуск 6.
IEEE Std 1003.1-2004 включал небольшое обновление POSIX.1-2001. В него включены два незначительных обновления или исправления, называемые техническими исправлениями (TC). [10] Его содержимое доступно в Интернете. [11]
POSIX.1-2008 (с двумя TC)
Базовые спецификации, выпуск 7 (или IEEE Std 1003.1-2008 , издание 2016 г.) аналогичны текущей версии 2017 г. (по состоянию на 22 июля 2018 г.). [12] [13]
Этот стандарт состоит из:
- Базовые определения, выпуск 7,
- Системные интерфейсы и заголовки, выпуск 7,
- Команды и утилиты, выпуск 7,
- Обоснование объема.
POSIX.1-2017
IEEE Std 1003.1-2017 (редакция IEEE Std 1003.1-2008) - Стандарт IEEE для информационных технологий - интерфейс переносимой операционной системы (POSIX (R)). Базовые спецификации, выпуск 7 доступен либо в Open Group, либо в IEEE, начиная с 22 июля 2018 г. действующий стандарт. Технически он идентичен POSIX.1-2008 с внесенными Техническими исправлениями 1 и 2. Бесплатная онлайн-копия все еще может быть доступна. [12]
Споры
512- и 1024-байтовые блоки
POSIX требует 512-байтовых размеров блоков по умолчанию для утилит df и du , что отражает типичный размер блоков на дисках. Когда Ричард Столлман и команда GNU реализовывали POSIX для операционной системы GNU , они возражали против этого на том основании, что большинство людей думают в терминах блоков размером 1024 байта (или 1 КиБ ). Переменная среды POSIX_ME_HARDER была введена, чтобы позволить пользователю принудительно установить поведение, соответствующее стандартам. [14] Имя переменной было позже изменено на POSIXLY_CORRECT . [15] Эта переменная теперь также используется для ряда других особенностей поведения.
POSIX-ориентированные операционные системы
В зависимости от степени соответствия стандартам операционные системы можно классифицировать как полностью или частично совместимые с POSIX. Сертифицированные продукты можно найти на веб-сайте IEEE. [16]
POSIX-сертифицированный
Некоторые версии следующих операционных систем были сертифицированы на соответствие одному или нескольким различным стандартам POSIX. Это означает, что они прошли автоматизированные тесты на соответствие. [17]
- AIX [18]
- HP-UX [19]
- IRIX [20]
- EulerOS [21]
- macOS (начиная с версии 10.5 Leopard ) [22] [23]
- Солярис [24]
- Tru64 [19]
- UnixWare [25]
- QNX Neutrino [26]
- Inspur K-UX [27]
- ЦЕЛОСТНОСТЬ [28]
В основном POSIX-совместимый
Следующее, хотя официально не сертифицировано как совместимое с POSIX, в значительной степени соответствует:
- Android (доступно через Android NDK) [ необходима ссылка ]
- BeOS (а впоследствии и Haiku )
- Contiki
- Дарвин (ядро macOS и iOS )
- DragonFly BSD
- FreeBSD [29]
- иллюзия
- Linux (большинство дистрибутивов - см. Linux Standard Base )
- LynxOS
- MINIX (теперь MINIX3 )
- MPE / iX [30]
- NetBSD
- Nucleus RTOS
- NuttX
- OpenBSD
- OpenSolaris [31]
- PikeOS RTOS для встраиваемых систем с дополнительными разделами PSE51 и PSE52; см. раздел (мэйнфрейм)
- Редокс
- RTEMS - поддержка API POSIX, разработанная для IEEE Std. 1003.13-2003 PSE52
- SkyOS
- Слог
- VSTa
- VMware ESXi
- VxWorks ( VxWorks часто используется в качестве оболочки для ядер, не относящихся к POSIX - например, TiMOS / SROS [ необходима ссылка ] )
- Xenix
POSIX для Microsoft Windows
- Cygwin предоставляет в основном POSIX-совместимую среду разработки и выполнения для Microsoft Windows .
- MinGW , ответвление Cygwin, предоставляет менее POSIX-совместимую среду разработки и поддерживает совместимые приложения, запрограммированные на C, через Msvcrt , старую библиотеку времени выполнения Visual C.
- Подсистема Microsoft POSIX , дополнительная подсистема Windows, включенная в операционные системы на базе Windows NT вплоть до Windows 2000. POSIX-1 в том виде, в котором он стоял в редакции 1990 года, без потоков или сокетов.
- Interix , первоначально OpenNT от Softway Systems, Inc., представляет собой обновление и замену подсистемы Microsoft POSIX, которая была приобретена Microsoft в 1999 году. Первоначально он продавался как отдельный дополнительный продукт, а затем был включен в качестве компонента в Службы Windows для UNIX (SFU) и, наконец, включили их в качестве компонента в Windows Server 2003 R2 и более поздних версиях ОС Windows под названием «Подсистема для приложений на основе UNIX» (SUA); позже был объявлен устаревшим в 2012 году (Windows 8) [32] и упал в 2013 году (2012 R2, 8.1). Он обеспечивает полное соответствие POSIX для некоторых продуктов Microsoft Windows . [ необходима цитата ]
- Подсистема Windows для Linux , также известная как WSL, представляет собой уровень совместимости для запуска двоичных исполняемых файлов Linux изначально в Windows 10 с использованием образа Linux, такого как Ubuntu, Debian или OpenSUSE, среди прочих, выступая в качестве обновления и замены служб Windows для UNIX. Он был выпущен в бета-версии в апреле 2016 года. Первым доступным дистрибутивом была Ubuntu.
- UWIN от AT&T Research реализует уровень POSIX поверх API Win32.
- MKS Toolkit , первоначально созданный для MS-DOS, представляет собой программный пакет, созданный и поддерживаемый MKS Inc., который обеспечивает Unix-подобную среду для написания сценариев, подключения и переноса программного обеспечения Unix и Linux как на 32-, так и на 64-разрядные системы Microsoft Windows . Подмножество этого было включено в первый выпуск Windows Services for UNIX (SFU) в 1998 году. [33]
- Библиотека времени выполнения Windows C и API сокетов Windows реализуют часто используемые функции API POSIX для доступа к файлам, времени, среде и сокетам [34], хотя поддержка остается в значительной степени неполной и не полностью совместима с реализациями, совместимыми с POSIX. [35] [36] [ обсудить ]
POSIX для OS / 2
В основном POSIX-совместимые среды для OS / 2 :
- emx + gcc - в основном совместим с POSIX
POSIX для DOS
Частично POSIX-совместимые среды для DOS включают:
- emx + gcc - в основном совместим с POSIX
- DJGPP - частично совместим с POSIX
- Многозадачное ядро DR-DOS через EMM386 / MULTI - доступно расширение API интерфейса потоков POSIX
Соответствует через уровень совместимости
Следующие ниже официально не сертифицированы как совместимые с POSIX, но они в значительной степени соответствуют стандартам за счет реализации поддержки POSIX через какую-то функцию совместимости (обычно библиотеки перевода или слой поверх ядра). Без этих функций они обычно не соответствуют требованиям.
- eCos - POSIX является частью стандартного дистрибутива и используется многими приложениями. В разделе «внешние ссылки» ниже содержится дополнительная информация.
- MorphOS (через встроенную библиотеку ixemul)
- OpenVMS (через дополнительный пакет POSIX)
- Plan 9 от Bell Labs APE - Среда ANSI / POSIX [37]
- RIOT (через дополнительный модуль POSIX)
- ОС Symbian с PIPS (PIPS - это POSIX на Symbian)
- Ядро Windows NT при использовании Microsoft SFU 3.5 или SUA
- Windows 2000 Server или Professional с пакетом обновления 3 или новее . Чтобы соответствовать стандарту POSIX, необходимо активировать дополнительные функции Windows NT и Windows 2000 Server. [38]
- Windows XP Professional с пакетом обновления 1 или новее
- Windows Server 2003
- Windows Server 2008 и версии Windows Vista Ultimate и Enterprise
- Windows Server 2008 R2 и версии Windows 7 Ultimate и Enterprise
- хотя и устарел, но все еще доступен для Windows Server 2012 и корпоративной версии Windows 8
- Системные службы UNIX , работающие на z / OS (сертифицированы как соответствующие)
Смотрите также
- Сигнал POSIX
- Потоки POSIX
- Сокеты POSIX - это в основном сокеты Беркли [ ссылка ]
- Проект TRON - стандарты ОС, альтернативные POSIX
- Общий доступ для пользователей - стандарт пользовательского интерфейса
- Interix - полнофункциональная подсистема среды POSIX и Unix для операционных систем Microsoft на базе Windows NT.
- Библиотека C POSIX
- Операционная система реального времени
- Переносимый набор символов , набор из 103 символов, который должен поддерживаться в любой языковой версии POSIX-совместимого набора символов.
Рекомендации
- ^ "POSIX.1 FAQ" . Открытая группа. 5 октября 2011 г.
- ^ а б «Вопросы и ответы по POSIX 1003.1, версия 1.12» . 2 февраля 2006 . Проверено 16 июля 2006 года .
- ^ «P1003.1 - Стандарт информационных технологий - Базовые спецификации интерфейса переносимой операционной системы (POSIX ™), выпуск 8» . Ассоциация стандартов IEEE .
- ^ «Происхождение названия POSIX» . 2011 . Проверено 28 сентября 2013 года .
- ^ Статус PASC (включая POSIX) (Отчет). Компьютерное общество IEEE . 4 декабря 2003 . Проверено 1 марта 2015 года .
- ^ «Командный язык оболочки - Базовые спецификации Open Group, выпуск 7, издание 2013 г.» . Проверено 28 апреля 2020 .
- ^ «POSIX» . Открытая группа.
- ^ "Библиотека (3LIB)" . docs.oracle.com . Раздел 3 страниц руководства: Интерфейсы и заголовки библиотеки. Корпорация Oracle. 4 августа 1998 . Проверено 18 февраля +2016 .
librt, libposix4- Библиотека расширений реального времени POSIX.1b [...] librt - предпочтительное имя для этой библиотеки. Имя libposix4 поддерживается для обратной совместимости, и его следует избегать. Функции в этой библиотеке предоставляют большинство интерфейсов, указанных в расширении реального времени POSIX.1b.
- ^ «Open Group объявляет о завершении совместной ревизии POSIX и единой спецификации UNIX» (пресс-релиз). Открытая группа. 30 января 2002 . Проверено 26 июля 2009 года .
- ^ «IEEE Std 1003.1» (изд. 2004 г.). Unix.org . Проверено 26 июля 2009 года .
- ^ «IEEE Std 1003.1» (изд. 2004 г.). Открытая группа. Цитировать журнал требует
|journal=
( помощь ). - ^ а б «Базовые спецификации, выпуск 7, издание 2016 г.» . Открытая группа . Проверено 18 декабря 2014 .
- ^ «Группа по пересмотру общих стандартов Остина» . Открытая группа . Проверено 1 марта 2016 года .
- ^ Столмен, Ричард (28 августа 1991 г.). «Торжества демократии в дисковых накопителях» . Группа новостей : gnu.announce . Usenet: [email protected] - через группы Google.
- ^ «Стандарты кодирования GNU» . GNU.
- ^ «Сертификация POSIX» . IEEE.
- ^ «Сертификат POSIX IEEE и Open Group - Руководство по программе» .
- ^ «IBM» . Открытая группа . Проверено 26 января 2014 года .
- ^ а б «Хьюлетт-Паккард» . Открытая группа . Проверено 26 января 2014 года .
- ^ «Силиконовая графика, Инк.» . Открытая группа . Проверено 26 января 2014 года .
- ^ «Huawei Technology Co., Ltd.» . Открытая группа . Дата обращения 26 мая 2017 .
- ^ «Открытый бренд - Реестр сертифицированной продукции» . Реестр открытых брендовых продуктов . Открытая группа . Дата обращения 20 мая 2015 .
- ^ «Apple Inc.» . Реестр открытых брендовых продуктов . Открытая группа . Дата обращения 20 мая 2015 .
- ^ «Корпорация Oracle» . Открытая группа . Проверено 26 января 2014 года .
- ^ «UnixWare® 7.1.3 и выше» . Открытая группа. 16 мая 2003 г.
- ^ «QNX получает новую сертификацию POSIX» . QNX. 8 апреля 2008 . Проверено 16 января 2016 .
- ^ ООО "Инспур" . Открытая группа . Дата обращения 26 мая 2017 .
- ^ «Регистр сертификации POSIX» . get.posixcertified.ieee.org . Проверено 9 марта 2018 .
- ^ Швейхардт, Йенс. «Утилиты POSIX» . FreeBSD.
- ^ Марк Халпер (7 ноября 1994 г.). «Продажи HP 3000 застали рынок врасплох» . Компьютерный мир . Vol. 28 нет. 4. IDG Enterprise.
- ^ Солтер, Николас А .; Елинек, Джерри; Шахтер, Дэвид (21 марта 2011 г.). Библия OpenSolaris . Джон Вили и сыновья. ISBN 9781118080313.
- ^ Функции, удаленные или устаревшие в Windows Server 2012
- ^ Windows NT Services for UNIX Add-On Pack для NT 4; см. также пресс-релиз по MKS Toolkit 6.1за ноябрь 1998 г. , также заархивированный в другом месте
- ^ «Библиотека MSDN: устаревшие функции CRT» . Microsoft . Проверено 8 октября 2015 года .
- ^ «Библиотека MSDN: перенос приложений сокета на Winsock» . Microsoft . Проверено 8 октября 2015 года .
- ^ "Часто задаваемые вопросы программистов Winsock: Совместимость с сокетами BSD" . Уоррен Янг. 31 августа 2015 . Проверено 8 октября 2015 года .
- ^ «APE - среда ANSI / POSIX» . План 9 . Bell Labs.
- ^ «Совместимость с POSIX» . Комплект ресурсов для рабочих станций MS Windows NT . Microsoft.
Внешние ссылки
- «Дом сертификации POSIX» . Открытая группа / IEEE.