Термин POSIX (аббревиатура от Portable Operating System Interface) обозначает группу стандартов, разработанных под руководством Института инженеров электротехники и электроники — Institute of Electrical and Electronic Engineers (IEEE), а точнее, его комитета по стандартам для портируемых приложений — Portable Application Standards Committee (PASC, http://www.pasc.org/). Цель PASC-стандартов — содействие портируемости приложений на уровне исходного кода.
Название POSIX было предложено Ричардом Столлманом (Richard Stallman). Последняя буква X появилась потому, что названия большинства вариантов UNIX заканчивались на X. В стандарте указывалось, что название должно произноситься как pahzicks, наподобие слова positive («положительный»).
Для нас в стандартах POSIX наибольший интерес представляет первый стандарт POSIX, который назывался POSIX.1 (или в более полном виде POSIX 1003.1), и последующий стандарт POSIX.2.
POSIX.1 и POSIX.2
POSIX.1 стал IEEE-стандартом в 1988 году и после небольшого количества пересмотров был принят как стандарт ISO в 1990 году (ISO/IEC 9945-1:1990). (Полных версий POSIX нет в свободном доступе, но их можно приобрести у IEEE на сайте http://www.ieee.org/.)
POSIX.1 сначала основывался на более раннем (1984 года) неофициальном стандарте, выработанном объединением поставщиков UNIX под названием /usr/group.
В POSIX.1 документируется интерфейс прикладного программирования (API) для набора сервисов, которые должны быть доступны программам из соответствующей операционной системы. ОС, способная справиться с этой задачей, может быть сертифицирована в качестве совместимой с POSIX.1.
POSIX.1 основан на системном вызове UNIX и API библиотечных функций языка C, но при этом не требует, чтобы с этим интерфейсом была связана какая-либо конкретная реализация. Это означает, что интерфейс может быть реализован любой операционной системой и не обязательно UNIX. Фактически некоторые поставщики добавили API к своим собственным операционным системам, сделав их совместимыми с POSIX.1, в то же время оставив сами ОС в практически неизменном виде.
Большое значение приобрели также расширения исходного стандарта POSIX.1. Стандарт IEEE POSIX 1003.1b (POSIX.1b, ранее называвшийся POSIX.4 или POSIX 1003.4), одобренный в 1993 году, содержит расширения базового стандарта POSIX для работы в режиме реального времени. Стандарт IEEE POSIX 1003.1c (POSIX.1c), одобренный в 1995 году, содержит определения потоков в POSIX. В 1996 году была разработана пересмотренная версия стандарта POSIX.1 (ISO/IEC 9945-1:1996), основной текст которой остался без изменений, но в него были внесены дополнения, касающиеся работы в режиме реального времени и использования потоков. Стандарт IEEE POSIX 1003.1g (POSIX.1g) определил API для работы в сети, включая сокеты. Стандарт IEEE POSIX 1003.1d (POSIX.1d), одобренный в 1999 году, и POSIX.1j, одобренный в 2000 году, определили дополнительные расширения основного стандарта POSIX для работы в режиме реального времени.
Расширения POSIX.1b для работы в режиме реального времени включают файловую синхронизацию, асинхронный ввод/вывод, диспетчеризацию процессов, высокоточные часы и таймеры, а также обмен данными между процессами с применением семафоров, совместно используемой памяти и очереди сообщений. Префикс POSIX часто применяется для трех методов обмена данными между процессами, чтобы их можно было отличить от похожих, но более старых методов реализации семафоров, совместного использования памяти и очередей сообщений из System V.
Родственный стандарт POSIX.2 (1992, ISO/IEC 9945-2:1993) затрагивает оболочку и различные утилиты UNIX, включая интерфейс командной строки компилятора кода языка C.
FIPS 151-1 и FIPS 151-2
FIPS является аббревиатурой от федерального стандарта обработки информации — Federal Information Processing Standard. Это название набора стандартов, разработанных правительством США и используемых гражданскими правительственными учреждениями. В 1989 году был опубликован стандарт FIPS 151-1, основанный на стандарте 1988 года IEEE POSIX.1 и предварительной версии стандарта ANSI C. Основное отличие FIPS 151-1 от POSIX.1 (1988 года) заключалось в том, что по стандарту FIPS требовалось наличие кое-каких функций, которые в POSIX.1 оставались необязательными. Поскольку основным покупателем компьютерных систем было правительство США, большинство поставщиков обеспечили совместимость своих UNIX-систем с FIPS 151-1-версией стандарта POSIX.1.
Стандарт FIPS 151-2 совмещен с редакцией 1990 ISO стандарта POSIX.1, но в остальном остался без изменений. Уже устаревший FIPS 151-2 был отменен в феврале 2000 года.
1.3.3. X/Open Company и Open Group