Программное обеспечение написано многочисленными разработчиками с различным опытом. Общие алгоритмы доступны по бесплатной лицензии или были опубликованы с научной точки зрения, а также могут быть доступны бесплатно для учебных целей. Это приводит к различным реализациям и версиям программного обеспечения, которые соответствуют различным потребностям. Стандартизация интерфейсов и форматов данных необходима, чтобы сделать эти различные реализации взаимозаменяемыми и модульными.
Короче говоря, POSIX делает именно это для UNIX и UNIX-подобных систем. Он определяет интерфейсы обмена, механизмы вызова и передаваемые данные для программного обеспечения, но оставляет внутреннюю реализацию разработчику или сопровождающему программного обеспечения. Цель состоит в том, чтобы объединить все различные вилки UNIX и UNIX-подобные системы таким образом, чтобы различные реализации программного обеспечения могли взаимодействовать друг с другом. Основное преимущество POSIX состоит в том, что связующая документация для этих компонентов – интерфейсов, механизмов и данных – доступна в письменной форме.
Операционная система, которая полностью следует стандарту POSIX, классифицируется как совместимая с POSIX. В этой статье мы объясняем, что означает POSIX, определяем, принадлежит ли Linux к этой категории, и перечисляем, какие компоненты Linux должны быть исключены из этой классификации.
POSIX – это аббревиатура от Portable Operating System Interface. Как кратко объяснено выше, POSIX – это название набора стандартов, необходимых для обеспечения совместимости между операционными системами.«[он] определяет интерфейс прикладного программирования (API), наряду с оболочками командной строки и интерфейсами служебных программ, для совместимости программного обеспечения с вариантами Unix и других операционных систем». Первая версия POSIX была опубликована в 1988 году. С тех пор POSIX постоянно расширялся и обновлялся Группой по пересмотру общих стандартов Остина (также известной как Остин Группа).
По состоянию на 2021 год стандарт POSIX содержит следующие части:
Стандарт регулярно пересматривается для отражения технических изменений и улучшений. Иногда может пройти несколько лет, прежде чем будет опубликована новая версия и внесены изменения. Это может быть невыгодно, но это понятно, учитывая объем стандарта.
В последние годы были добавлены расширения обработки в реальном времени. Текущая версия была выпущена в начале 2018 года. Авторы SibylFS также опубликовали множество аннотаций к стандарту POSIX для определения логики и взаимодействий более высокого порядка.
Термин «POSIX-совместимая» означает, что операционная система соответствует всем критериям POSIX. Операционная система может запускать программы UNIX изначально, или приложение может быть перенесено из системы UNIX в другую систему. Перенести приложение из UNIX в целевую операционную систему просто или, по крайней мере, проще, чем если бы оно не поддерживает POSIX. На всякий случай операционная система должна успешно пройти сертификацию POSIX. Этот этап достигается (за деньги) путем прохождения автоматизированного сертификационного теста.
По состоянию на 2021 год в список операционных систем, сертифицированных POSIX, входят AIX от IBM, HP-UX от HP, IRIX от SGI, EulerOS от Huawei, Mac OS X от Apple (с 10.5 Leopard), Solaris и QNX Neutrino от Oracle, K-UX от Inspur и ЦЕЛОСТНОСТЬ ОС реального времени от Green Hills Software. В настоящее время неясно, классифицируются ли также новые версии трех преемников Solaris, OpenSolaris, Illumos и OpenIndiana, как полностью POSIX-совместимые. Эти операционные системы были POSIX-совместимыми до POSIX 2001.
Другие операционные системы, которые считаются в основном (но не полностью) POSIX-совместимыми, включают Android, BeOS, FreeBSD, Haiku, Linux (см. Ниже) и VMWare ESXi. Для Microsoft Windows Cygwin предоставляет в основном POSIX-совместимую среду разработки и выполнения.
Термин «Linux» относится ко всей операционной системе Linux, независимо от ее разновидности, такой как, например, Debian GNU/Linux, RedHat Linux, Linux Mint, Ubuntu Linux, Fedora и CentOS. Если быть точным, Linux – это просто имя ядра, которое является основным компонентом этой бесплатной операционной системы.
Как описал Линус Торвальдс в книге «Just For Fun», для разработки ядра Linux он запросил копию стандарта POSIX. Это помогло ему реализовать те же механизмы, которые используются в коммерческих системах UNIX. Более того, это позволило ему связать ядро Linux с инструментами GNU, которые в основном следовали тому же подходу. Честно говоря, программное обеспечение в системе Linux поступает из различных источников, которые соблюдают стандарт POSIX, но также иногда реализуют свои собственные концепции. В то же время, однако, это также показывает разнообразие, которое составляет Linux как операционную систему.
Одним из примеров этого является способ записи аргументов командной строки. Аргументы с двумя тире (например, «–help») являются соглашениями GNU, тогда как команды POSIX никогда не используют аргументы с двумя тире, а вместо этого используют только один (например, «-help»). С самого начала Linux был разработан с учетом GNU, и поэтому команды содержат стиль GNU. Для достижения соответствия POSIX аргументы в стиле POSIX добавляются шаг за шагом. Тем не менее, окончательное решение принимает разработчик. На сегодняшний день большинство команд принимают как короткие, так и длинные аргументы или даже аргументы без дефисов, такие как, например, команда «найти». Честно говоря, между командами в одной системе нет согласованности, и это может быть проблемой, если вы собираетесь использовать одну и ту же команду в другой системе на основе UNIX, особенно при переключении между Linux, OS X и Solaris.
На данный момент Linux не имеет сертификации POSIX из-за высокой стоимости, за исключением двух коммерческих дистрибутивов Linux Inspur K-UX и Huawei EulerOS. Вместо этого Linux считается в основном совместимым с POSIX.
Эта оценка связана с тем, что основные дистрибутивы Linux следуют стандартной базе Linux (LSB) вместо POSIX. LSB стремится «минимизировать различия между отдельными дистрибутивами Linux». Это относится к структуре программной системы, включая Стандарт иерархии файловой системы (FHS), используемый в ядре Linux. LSB основан на спецификации POSIX, единой спецификации UNIX (SUS) и нескольких других открытых стандартах, но также расширяет их в определенных областях.
Дистрибутивы Linux на основе LSB включают в себя RedHat Linux, Debian GNU/Linux (2002-2015) и Ubuntu (до 2015 года), и это лишь некоторые из них.
Чтобы понять POSIX более подробно, мы рекомендуем получить копию стандарта POSIX и прочитать ее полностью. Вы можете получить книгу на сайте Open Group. Это требует регистрационного взноса, но дает вам полный доступ к этому ценному ресурсу. Стандарты помогают, поскольку они позволяют разрабатывать программное обеспечение таким образом, чтобы оно работало одинаково на всех платформах UNIX.