Первоначально название «POSIX» относилось к стандарту IEEE Std 1003.1-1988, выпущенному в 1988 году. Семейство стандартов POSIX официально обозначено как IEEE 1003 , а номер стандарта ISO/IEC — ISO / IEC 9945.
Стандарты появились в результате проекта, начатого в 1984 году и основанного на работе, связанной с деятельностью ассоциации /usr/group . [4] Ричард Столлман предложил название POSIX в IEEE [5] [6] вместо прежнего IEEE-IX . [7] Комитет посчитал его более легко произносимым и запоминающимся и принял его. [ необходима ссылка ]
Обзор
Unix был выбран в качестве основы для стандартного системного интерфейса отчасти потому, что он был «независим от производителя». Однако существовало несколько основных версий Unix, поэтому возникла необходимость в разработке системы с общим знаменателем. Спецификации POSIX для Unix-подобных операционных систем изначально состояли из одного документа для основного программного интерфейса , но в конечном итоге выросли до 19 отдельных документов (POSIX.1, POSIX.2 и т. д.). [8] Стандартизированная пользовательская командная строка и интерфейс сценариев были основаны на оболочке UNIX System V. [9] Многие программы, службы и утилиты пользовательского уровня (включая awk , echo , ed ) также были стандартизированы, наряду с требуемыми службами программного уровня (включая базовый ввод-вывод : file , terminal и network ). 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 . [10]
После 1997 года Austin Group разработала ревизии POSIX. Спецификации известны под названием Single UNIX Specification , прежде чем они стали стандартом POSIX после формального одобрения ISO.
POSIX.1-2001 (с двумя TC)
POSIX.1-2001 (или IEEE Std 1003.1-2001) соответствует Единой спецификации UNIX версии 3 за вычетом X/Open Curses . [12]
Этот стандарт состоял из:
Базовые определения, выпуск 6,
Системные интерфейсы и заголовки, выпуск 6,
Команды и утилиты, выпуск 6.
IEEE Std 1003.1-2004 включал незначительное обновление POSIX.1-2001. Он включал два небольших обновления или исправления, называемых техническими исправлениями (TC). [13] Его содержимое доступно в Интернете. [14]
POSIX.1-2008 (с двумя TC)
Базовые спецификации, выпуск 7 (или IEEE Std 1003.1-2008 , издание 2016 г.). [15]
Настоящий стандарт состоит из:
Базовые определения, выпуск 7,
Системные интерфейсы и заголовки, выпуск 7,
Команды и утилиты, выпуск 7,
Обоснование тома.
POSIX.1-2017
IEEE Std 1003.1-2017 (пересмотр IEEE Std 1003.1-2008) - IEEE Standard for Information Technology—Portable Operating System Interface (POSIX(R)) Base Specifications, Issue 7 доступен либо в The Open Group, либо в IEEE. Он технически идентичен POSIX.1-2008 с примененными Technical Corrigenda 1 и 2. Его содержимое доступно в Интернете. [16]
POSIX.1-2024
IEEE Std 1003.1-2024 — Стандарт IEEE для информационных технологий — Базовые спецификации интерфейса переносимой операционной системы (POSIX(R)) , выпуск 8 был опубликован 14 июня 2024 года. [15] Его содержимое доступно в Интернете. [17]
Споры
Блоки размером 512 и 1024 байта
POSIX предписывает 512-байтовые размеры блоков по умолчанию для утилит df и du , что отражает типичный размер блоков на дисках. Когда Ричард Столлман и команда GNU реализовывали POSIX для операционной системы GNU , они возражали против этого на том основании, что большинство людей мыслят в терминах блоков по 1024 байта (или 1 КиБ ). Переменная окружения POSIX_ME_HARDER была введена, чтобы позволить пользователю принудительно задавать поведение, соответствующее стандартам. [18] Позднее имя переменной было изменено на POSIXLY_CORRECT . [19] Эта переменная теперь также используется для ряда других особенностей поведения.
Операционные системы, ориентированные на POSIX
В зависимости от степени соответствия стандартам операционные системы можно классифицировать как полностью или частично совместимые с POSIX.
Сертифицировано POSIX
Текущие версии следующих операционных систем были сертифицированы на соответствие одному или нескольким различным стандартам POSIX. Это означает, что они прошли автоматизированные тесты на соответствие [20] и их сертификация не истекла, а операционная система не была прекращена. [21] [22]
Некоторые версии следующих операционных систем были сертифицированы на соответствие одному или нескольким различным стандартам POSIX. Это означает, что они прошли автоматизированные тесты на соответствие. Сертификация истекла, и некоторые операционные системы были сняты с производства. [21]
libunistd, в значительной степени POSIX-совместимая библиотека разработки, изначально созданная для сборки исходного кода C/ C++ на базе Linux для CinePaint в Microsoft Visual Studio . Облегченная реализация, имеющая POSIX-совместимые заголовочные файлы, которые отображают POSIX API для вызова их аналогов Windows API. [45]
Подсистема Microsoft POSIX — дополнительная подсистема Windows, входящая в состав операционных систем на базе Windows NT вплоть до Windows 2000. Она поддерживала POSIX.1 в том виде, в каком он был в редакции 1990 года, без потоков и сокетов .
Interix , первоначально OpenNT от Softway Systems, Inc., является обновлением и заменой подсистемы Microsoft POSIX , купленной Microsoft в 1999 году. Первоначально она продавалась как отдельный дополнительный продукт, а затем была включена в качестве компонента в Windows Services for UNIX (SFU) и, наконец, включена в качестве компонента в Windows Server 2003 R2 и более поздние выпуски ОС Windows под названием «Подсистема для приложений на базе UNIX» (SUA); позднее была объявлена устаревшей в 2012 году (Windows 8) [46] и исключена в 2013 году (2012 R2, 8.1). Она обеспечивает полное соответствие POSIX для некоторых продуктов Microsoft Windows . [ необходима цитата ]
Подсистема Windows для Linux , также известная как WSL, представляет собой уровень совместимости для запуска исполняемых двоичных файлов Linux на Windows 10 и 11 с использованием образа 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 году. [47] [48]
Библиотека времени выполнения Windows C и API сокетов Windows реализуют широко используемые функции API POSIX для доступа к файлам, времени, среде и сокетам, [49] хотя поддержка остается в значительной степени неполной и не полностью совместимой с реализациями, совместимыми с POSIX. [50] [51] [ обсудить ]
Следующие официально не сертифицированы как совместимые с POSIX, но они в значительной степени соответствуют стандартам, реализуя поддержку POSIX через некую функцию совместимости (обычно библиотеки трансляции или слой поверх ядра). Без этих функций они, как правило, несовместимы.
AmigaOS (через библиотеку ixemul или vbcc _PosixLib [52] )
eCos – POSIX является частью стандартного дистрибутива и используется многими приложениями. Раздел «Внешние ссылки» ниже содержит дополнительную информацию.
^ PASC Status (включая POSIX) (Отчет). IEEE Computer Society . 4 декабря 2003 г. Получено 26 сентября 2024 г.
^ "Shell Command Language - The Open Group Base Specifications Issue 7, 2013 Edition" . Получено 28 апреля 2020 г. .
^ "Тестовые наборы VSX-PCTS2003". The Open Group.
^ "librt(3LIB)". docs.oracle.com . man pages section 3: Library Interfaces and Headers. Oracle Corporation. 4 августа 1998 г. . Получено 18 февраля 2016 г. . librt, libposix4- Библиотека расширений реального времени POSIX.1b [...] librt — предпочтительное имя для этой библиотеки. Имя libposix4 сохранено для обратной совместимости и его следует избегать. Функции в этой библиотеке предоставляют большинство интерфейсов, указанных в POSIX.1b Realtime Extension.
^ «Единая спецификация UNIX версии 3 — Обзор». unix.org .
^ "IEEE Std 1003.1" (ред. 2004 г.). Unix.org . Получено 26 июля 2009 г.
^ "Base Specifications, Issue 6" (ред. 2004 г.). The Open Group . Получено 20 июля 2024 г..
^ ab "The Austin Common Standards Revision Group". The Open Group . Получено 20 июля 2024 г.
^ "Base Specifications, Issue 7, 2018 Edition" (ред. 2018 г.). The Open Group . Получено 20 июля 2024 г.
^ «Базовые спецификации, выпуск 8» (ред. 2024 г.). Открытая группа..
^ Столлман, Ричард (28 августа 1991 г.). «Демократия торжествует в дисковых устройствах». Группа новостей : gnu.announce. Usenet: 9108281809.AA03552@mole.gnu.ai.mit.edu – через Google Groups.
^ "Стандарты кодирования GNU". GNU.
^ "POSIX сертифицирован IEEE и The Open Group - Руководство по программе". Раздел 2, Как получить сертификацию . Получено 26 сентября 2024 г.
^ ab "POSIX Certified by IEEE and The Open Group - Program Guide". Раздел 4, Продления и обновления сертифицированных продуктов . Получено 26 сентября 2024 г.
^ "Сертифицированные продукты компании". The Open Group. nd . Получено 22 января 2022 г.
^ ab "IBM". The Open Group . Получено 23 января 2022 г.
^ "Hewlett-Packard". The Open Group . Получено 26 января 2014 г.
^ ab "POSIX Certification Register". The Open Group . Получено 22 августа 2024 г.
^ "The Open Brand - Register of Certified Products". Register of Open Branded Products . The Open Group . Получено 20 мая 2015 г.
^ "Apple Inc". Регистр открытых фирменных продуктов . The Open Group . Получено 20 мая 2015 г.
^ "SCO OpenServer Release 5". The Open Group. 3 мая 1995 г. Получено 24 декабря 2021 г.
^ "UnixWare ® 7.1.3 и более поздние версии". The Open Group. 16 мая 2003 г. Получено 24 декабря 2021 г.
^ "Huawei Technology Co., Ltd". The Open Group . Получено 26 мая 2017 г.
^ "Inspur Co., Ltd". The Open Group . Получено 26 мая 2017 г.
^ "Silicon Graphics, Inc". The Open Group . Получено 26 января 2014 г.
^ "The Open Brand - Register of Certified Products". Open Group . 23 июля 2003 г. Архивировано из оригинала 2 августа 2003 г. Получено 23 января 2022 г.
^ "QNX Achieves New POSIX Certification" (пресс-релиз). QNX. 8 апреля 2008 г. Получено 16 января 2016 г.
^ "Oracle Corporation". The Open Group. Архивировано из оригинала 12 июля 2017 года . Получено 26 января 2014 года .
^ "Hewlett-Packard". The Open Group. Архивировано из оригинала 9 июля 2014 года . Получено 26 января 2014 года .
^ "Huawei LiteOS / LiteOS". Gitee . Huawei . Получено 23 мая 2024 г. .
↑ Марк Хэлпер (7 ноября 1994 г.). «Продажи HP 3000 застали рынок врасплох». Computerworld . Том 28, № 4. IDG Enterprise.
^ Солтер, Николас А.; Елинек, Джерри; Майнер, Дэвид (21 марта 2011 г.). OpenSolaris Библия. Джон Уайли и сыновья. ISBN9781118080313.
^ Лэми, Билл; Таубингер, Рафаэль (15 июня 2023 г.). «RTOS со стандартным API POSIX pthreads: дополнение к встроенному Linux». Embedded.com . Получено 13 сентября 2023 г. .
^ "OpenVOS POSIX.1: Руководство по соответствию". Status Technologies . Получено 26 ноября 2021 г. .
^ ULTRIX POSIX Conformance Document (PDF) . Цифровой. Июнь 1990 г. Получено 13 декабря 2021 г.
^ "Поддержка POSIX". Документация Zephyr . Получено 7 марта 2023 г.
^ Rowe, Robin (8 сентября 2022 г.). "libunistd". Github . Получено 18 февраля 2023 г. . Если вы хотите создать единый код C++ для работы в Windows, Linux и MacOS, вам нужно это для Windows
^ "Функции, удаленные или устаревшие в Windows Server 2012". Microsoft Docs . 31 августа 2016 г.
^ "Windows NT Services for UNIX Add-On Pack". Microsoft . Архивировано из оригинала 8 мая 1999 г.
^ "MKS решает проблемы взаимодействия на уровне предприятия" (пресс-релиз). Архивировано из оригинала 28 апреля 1999 г.
^ "Устаревшие функции CRT". Microsoft Docs . 15 октября 2009 г. Получено 23 июля 2022 г.
^ «Перенос приложений сокетов на Winsock». Microsoft Docs . 7 января 2021 г. Получено 23 июля 2022 г.
^ "Статьи Winsock Programmer's FAQ: Совместимость сокетов BSD". Уоррен Янг. 31 августа 2015 г. Получено 8 октября 2015 г.
^ "Aminet - dev/C/Vbcc_PosixLib.lha".
^ "Программирование IBM PASE для i" (PDF) . ibm.com . IBM. 2013 . Получено 25 ноября 2021 г. .
^ "Список продуктов, прошедших проверку на соответствие FIPS 151-2". Perennial Test Lab . Получено 14 августа 2022 г.
^ "APE — ANSI/POSIX Environment". Документы Plan 9. Bell Labs. Архивировано из оригинала 1 июня 2017 г.
^ Техническое резюме продуктов реального времени, пятое издание (PDF) . Digital Equipment Corporation . Декабрь 1992 г. Получено 8 декабря 2021 г.
^ "Глава 29 - Совместимость с POSIX". MS Windows NT Workstation Resource Kit . Microsoft. Архивировано из оригинала 15 января 2008 г.
Внешние ссылки
На Викискладе есть медиафайлы по теме POSIX .
«The Open Group Base Specifications Issue 8, издание 2024 г. IEEE Std 1003.1™-2024». The Open Group/IEEE.
"Домашняя страница сертификации POSIX". Open Group/IEEE.