Из Википедии, свободной энциклопедии
Перейти к навигации Перейти к поиску

Интерфейс переносимой операционной системы ( POSIX ) - это семейство стандартов, определенных компьютерным обществом IEEE для обеспечения совместимости между операционными системами . [1] POSIX определяет интерфейс прикладного программирования (API), наряду с оболочками командной строки и интерфейсами служебных программ, для совместимости программного обеспечения с вариантами Unix и другими операционными системами. [2] [3]

Имя [ редактировать ]

Первоначально название «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)
    • Создание и контроль процесса
    • Сигналы
      • Исключения с плавающей точкой
      • Нарушения сегментации / памяти
      • Незаконные инструкции
      • Ошибки автобуса
      • Таймеры
    • Работа с файлами и каталогами
    • Трубы
    • Библиотека C (Стандарт C)
    • Интерфейс порта ввода / вывода и управление
    • Триггеры процесса
  • 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 с Service Pack 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-совместимого набора символов.

Ссылки [ править ]

  1. ^ "POSIX.1 FAQ" . Открытая группа. 5 октября 2011 г.
  2. ^ a b «Часто задаваемые вопросы по POSIX 1003.1, версия 1.12» . 2 февраля 2006 . Проверено 16 июля 2006 года .
  3. ^ «P1003.1 - Стандарт информационных технологий - Базовые спецификации интерфейса переносимой операционной системы (POSIX ™), выпуск 8» . Ассоциация стандартов IEEE .
  4. ^ "Происхождение названия POSIX" . 2011 . Проверено 28 сентября 2013 года .
  5. ^ Статус PASC (включая POSIX) (Отчет). Компьютерное общество IEEE . 4 декабря 2003 . Проверено 1 марта 2015 года .
  6. ^ «Язык команд оболочки - Базовые спецификации Open Group, выпуск 7, издание 2013 г.» . Проверено 28 апреля 2020 .
  7. ^ "POSIX" . Открытая группа.
  8. ^ "librt (3LIB)" . docs.oracle.com . Раздел 3 страниц руководства: Интерфейсы и заголовки библиотек. Корпорация Oracle. 4 августа 1998 . Проверено 18 февраля +2016 . librt, libposix4- Библиотека расширений реального времени POSIX.1b [...] librt - предпочтительное имя для этой библиотеки. Имя libposix4 поддерживается для обратной совместимости, и его следует избегать. Функции в этой библиотеке предоставляют большинство интерфейсов, указанных в расширении реального времени POSIX.1b.
  9. ^ «Open Group объявляет о завершении совместной ревизии POSIX и единой спецификации UNIX» (пресс-релиз). Открытая группа. 30 января 2002 . Проверено 26 июля 2009 года .
  10. ^ "IEEE Std 1003.1" (изд. 2004 г.). Unix.org . Проверено 26 июля 2009 года .
  11. ^ "IEEE Std 1003.1" (изд. 2004 г.). Открытая группа. Cite journal requires |journal= (help).
  12. ^ a b «Базовые спецификации, выпуск 7, издание 2016 г.» . Открытая группа . Проверено 18 декабря 2014 .
  13. ^ "Группа по пересмотру общих стандартов Остина" . Открытая группа . Проверено 1 марта +2016 .
  14. Столмен, Ричард (28 августа 1991). «Торжества демократии в дисковых накопителях» . Группа новостейgnu.announce . Usenet: [email protected] - через группы Google. 
  15. ^ «Стандарты кодирования GNU» . GNU.
  16. ^ «Сертификация POSIX» . IEEE.
  17. ^ «POSIX, сертифицированный IEEE и Open Group - Руководство по программе» .
  18. ^ "IBM" . Открытая группа . Проверено 26 января 2014 года .
  19. ^ a b "Hewlett-Packard" . Открытая группа . Проверено 26 января 2014 года .
  20. ^ "Silicon Graphics, Inc" . Открытая группа . Проверено 26 января 2014 года .
  21. ^ «Huawei Technology Co., Ltd.» . Открытая группа . Проверено 26 мая 2017 года .
  22. ^ «Открытый бренд - Реестр сертифицированных продуктов» . Реестр открытых брендовых продуктов . Открытая группа . Дата обращения 20 мая 2015 .
  23. ^ «Apple Inc.» . Реестр открытых брендовых продуктов . Открытая группа . Дата обращения 20 мая 2015 .
  24. ^ "Oracle Corporation" . Открытая группа . Проверено 26 января 2014 года .
  25. ^ «UnixWare® 7.1.3 и новее» . Открытая группа. 16 мая 2003 г.
  26. ^ «QNX достигает новой сертификации POSIX» . QNX. 8 апреля 2008 . Проверено 16 января +2016 .
  27. ^ "Инспур Ко., Лтд" . Открытая группа . Проверено 26 мая 2017 года .
  28. ^ «Регистр сертификации POSIX» . get.posixcertified.ieee.org . Проверено 9 марта 2018 .
  29. ^ Швейхардт, Йенс. «Утилиты POSIX» . FreeBSD.
  30. ^ Марк Halper (7 ноября 1994). «Продажи HP 3000 застали рынок врасплох» . Компьютерный мир . Vol. 28 нет. 4. IDG Enterprise.
  31. ^ Солтер, Николас А .; Елинек, Джерри; Шахтер, Дэвид (21 марта 2011 г.). Библия OpenSolaris . Джон Вили и сыновья. ISBN 9781118080313.
  32. ^ Функции, удаленные или устаревшие в Windows Server 2012
  33. ^ Windows NT Services for UNIX Add-On Pack для NT 4; см. также пресс-релиз по MKS Toolkit 6.1за ноябрь 1998 г. , также заархивированный в другом месте.
  34. ^ «Библиотека MSDN: устаревшие функции CRT» . Microsoft . Проверено 8 октября 2015 года .
  35. ^ «Библиотека MSDN: перенос приложений сокета на Winsock» . Microsoft . Проверено 8 октября 2015 года .
  36. ^ «Статьи часто задаваемых вопросов программистов Winsock: Совместимость с сокетами BSD» . Уоррен Янг. 31 августа 2015 . Проверено 8 октября 2015 года .
  37. ^ "APE - среда ANSI / POSIX" . План 9 . Bell Labs.
  38. ^ «Совместимость с POSIX» . Комплект ресурсов для рабочих станций MS Windows NT . Microsoft.

Внешние ссылки [ править ]

  • «Дом сертификации POSIX» . Открытая группа / IEEE.