Семейство стандартов IEEE для совместимости между операционными системами
Интерфейс переносимой операционной системы ( POSIX ; это семейство определенных IEEE Computer Society для обеспечения совместимости между операционными системами . 1 ] определяет системные и пользовательские прикладного программирования (API), а также оболочки утилит для совместимости (переносимости) программного обеспечения с вариантами Unix и другими операционными системами. [1] [ 2] POSIX также является товарным знаком IEEE. [1] POSIX предназначен для использования как разработчиками приложений, так и разработчиками систем. [3]
Имя
Первоначально название «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]
Разработка стандарта POSIX осуществляется в Austin Group (совместная рабочая группа IEEE, The Open Group и ISO/IEC JTC 1/SC 22 /WG 15).
Версии
Детали до 1997 г.
До 1997 года POSIX включал в себя несколько стандартов:
- POSIX.1 : Основные службы (включает стандарт ANSI C ) (IEEE Std 1003.1-1988)
- POSIX.1b : Расширения реального времени (IEEE Std 1003.1b-1993, позже появившийся как librt — библиотека расширений реального времени) [11]
- POSIX.1c : Расширения потоков (IEEE Std 1003.1c-1995)
- Создание, управление и очистка потоков
- Планирование потоков
- Синхронизация потоков
- Обработка сигнала
- POSIX.2 : Оболочка и утилиты (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 за вычетом 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
Некоторые версии следующих операционных систем были сертифицированы на соответствие одному или нескольким различным стандартам POSIX. Это означает, что они прошли автоматизированные тесты на соответствие. Сертификация истекла, и некоторые операционные системы были сняты с производства. [21]
В основном соответствует POSIX
Следующие устройства не сертифицированы как соответствующие стандарту POSIX, но в значительной степени соответствуют ему:
POSIX для Microsoft Windows
- Cygwin предоставляет среду разработки и выполнения, в значительной степени соответствующую стандарту POSIX, для Microsoft Windows .
- MinGW , ответвление Cygwin, предоставляет среду разработки, менее совместимую с POSIX, и поддерживает совместимые приложения, написанные на языке C, через Msvcrt , старую библиотеку времени выполнения Visual C от Microsoft .
- 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 для OS/2
В основном POSIX-совместимые среды для OS/2 :
- emx+gcc – в значительной степени совместим с POSIX
POSIX для DOS
Частично совместимые с POSIX среды для DOS включают в себя:
Соответствует уровню совместимости
Следующие официально не сертифицированы как совместимые с POSIX, но они в значительной степени соответствуют стандартам, реализуя поддержку POSIX через некую функцию совместимости (обычно библиотеки трансляции или слой поверх ядра). Без этих функций они, как правило, несовместимы.
- AmigaOS (через библиотеку ixemul или vbcc _PosixLib [52] )
- eCos – POSIX является частью стандартного дистрибутива и используется многими приложениями. Раздел «Внешние ссылки» ниже содержит дополнительную информацию.
- IBM i (через уровень совместимости PASE ) [53]
- MorphOS (через встроенную библиотеку ixemul)
- OpenVMS (через дополнительный пакет POSIX) [54]
- План 9 от Bell Labs APE - среда ANSI/POSIX [55]
- RIOT (через дополнительный модуль POSIX)
- Symbian OS с PIPS (PIPS — это POSIX на Symbian)
- VAXELN (частичная поддержка 1003.1 и 1003.4 через библиотеку времени выполнения VAXELN POSIX) [56]
- Ядро Windows NT при использовании Microsoft SFU 3.5 или SUA
Смотрите также
Ссылки
- ^ abcd "POSIX.1 FAQ". The Open Group. 13 июня 2020 г. Получено 20 февраля 2023 г.
- ^ "IEEE 1003.1-2024". Ассоциация стандартов IEEE .
- ^ "Введение". The Open Group Base Specifications Issue 7, издание 2018 года . Получено 22 июля 2021 года .
- ^ "JimIsaak - POSIX Impact". sites.google.com . Получено 15 сентября 2022 г. .
- ^ "Справочник по стандарту IEEE 1003.1". Сноски.
- ^ "Происхождение названия POSIX". stallman.org . Получено 26 сентября 2024 г. .
- ^ Стоутон, Николас. «Обновление стандартов». ;логин: .
- ^ 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 г.). The Open Group..
- ^ Столлман, Ричард (28 августа 1991 г.). «Демократия торжествует в дисковых устройствах». Группа новостей : gnu.announce. Usenet: [email protected] – через 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 г. .
- ^ Швайкхардт, Йенс. «Соответствие утилит FreeBSD POSIX 2001». FreeBSD.
- ↑ Марк Хэлпер (7 ноября 1994 г.). «Продажи HP 3000 застали рынок врасплох». Computerworld . Том 28, № 4. IDG Enterprise.
- ^ Солтер, Николас А.; Елинек, Джерри; Майнер, Дэвид (21 марта 2011 г.). OpenSolaris Библия. Джон Уайли и сыновья. ISBN 9781118080313.
- ^ Лэми, Билл; Таубингер, Рафаэль (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.