Posix

Совместима ли Linux с POSIX?

Совместима ли Linux с POSIX?

Программное обеспечение написано многочисленными разработчиками с разным опытом. Общие алгоритмы доступны по бесплатной лицензии или были опубликованы с научной точки зрения, а также могут быть доступны бесплатно для учебных целей. Это приводит к различным реализациям и версиям программного обеспечения, которые соответствуют различным потребностям. Стандартизация интерфейсов и форматов данных необходима, чтобы сделать эти различные реализации как взаимозаменяемыми, так и модульными.

Короче говоря, POSIX [1] делает именно это для UNIX и UNIX-подобных систем (более подробную историю по этой теме см. В статье Зака ​​Х. [4]). Он определяет интерфейсы обмена, механизмы вызова и передаваемые данные для программного обеспечения, но оставляет внутреннюю реализацию разработчику или сопровождающему программного обеспечения. Цель состоит в том, чтобы объединить все различные вилки UNIX и UNIX-подобные системы таким образом, чтобы различные реализации программного обеспечения могли взаимодействовать друг с другом. Основным преимуществом POSIX является наличие обязательной документации для этих компонентов - интерфейсов, механизмов и данных - в письменной форме.

Операционная система, которая полностью соответствует стандарту POSIX, классифицируется как совместимая с POSIX. В этой статье мы объясняем, что означает POSIX, определяем, принадлежит ли Linux к этой категории, и перечисляем, какие компоненты Linux должны быть исключены из этой классификации.

Что означает термин POSIX?

POSIX - это аббревиатура от Portable Operating System Interface. Как кратко объяснено выше, POSIX - это название набора стандартов, необходимых для обеспечения совместимости между операционными системами. Как указано в [1], «[он] определяет интерфейс прикладного программирования (API), наряду с оболочками командной строки и интерфейсами служебных программ, для совместимости программного обеспечения с вариантами Unix и другими операционными системами.”Первая версия POSIX была опубликована в 1988 году. С тех пор POSIX постоянно расширяется и обновляется Группой по пересмотру общих стандартов Остина (также известной как Austin Group) [7].

По состоянию на 2021 год стандарт POSIX состоит из следующих частей:

  1. Основные услуги (Включает стандарт ANSI C) (IEEE std 1003.1-1988) - Создание процессов и управление ими, сигналы, операции с файлами и каталогами, конвейеры, библиотека C, интерфейс и управление портами ввода-вывода, триггеры процессов
  1. Расширения (Символические ссылки)
  2. Расширения реального времени и ввода / вывода (IEEE Std 1003.1b-1993) - Приоритетное планирование, сигналы в реальном времени, часы и таймеры, семафоры, передача сообщений, общая память, асинхронный и синхронный ввод-вывод, интерфейс блокировки памяти
  3. Расширения потоков (IEEE Std 1003.1c-1995) - Создание потоков, управление и очистка, планирование потоков, синхронизация потоков, обработка сигналов
  4. Больше расширений в реальном времени
  5. Расширения безопасности (Списки контроля доступа)
  1. Шелл и Утилиты (IEEE Std 1003.2-1992) - Интерпретатор команд, служебные программы

Стандарт регулярно пересматривается, чтобы отразить технические изменения и улучшения. Иногда может пройти несколько лет, прежде чем будет опубликована новая версия и внесены изменения. Это может быть невыгодно, но это понятно, учитывая объем стандарта.

В последние годы были добавлены расширения обработки в реальном времени. Текущая версия была выпущена в начале 2018 года [3]. Авторы SibylFS [5] также опубликовали множество аннотаций к стандарту POSIX для определения логики и взаимодействий более высокого порядка.

Что означает соответствие стандарту POSIX?

Термин «POSIX-совместимая» означает, что операционная система соответствует всем критериям POSIX. Операционная система может запускать программы UNIX изначально, или приложение может быть перенесено из системы UNIX в другую систему. Перенести приложение из UNIX в целевую операционную систему просто или, по крайней мере, проще, чем если бы оно не поддерживает POSIX. На всякий случай операционная система должна успешно пройти сертификацию POSIX [2]. Этот шаг достигается (платно) путем прохождения автоматизированного сертификационного теста. Соответствующий набор тестов можно найти здесь [11].

По состоянию на 2021 г. в список операционных систем, сертифицированных POSIX, входят AIX от IBM, HP-UX от HP, IRIX от SGI, EulerOS [6] от Huawei, Mac OS X от Apple (с 10.5 Leopard), Solaris и QNX Neutrino от Oracle, K-UX от Inspur [11] и ЦЕЛОСТНОСТЬ ОС реального времени от Green Hills Software [15]. В настоящее время неясно, классифицируются ли новые версии трех преемников Solaris, OpenSolaris, Illumos и OpenIndiana, как полностью POSIX-совместимые. Эти операционные системы были совместимы с POSIX до POSIX 2001 г.

Другие операционные системы, которые считаются в основном (но не полностью) совместимыми с POSIX, включают Android, BeOS, FreeBSD, Haiku, Linux (см. Ниже) и VMWare ESXi. Для Microsoft Windows Cygwin предоставляет в основном POSIX-совместимую среду разработки и выполнения.

Совместима ли Linux с POSIX?

Термин «Linux» относится ко всей операционной системе Linux, независимо от разновидности, такой как, например, Debian GNU / Linux, RedHat Linux, Linux Mint, Ubuntu Linux, Fedora и CentOS. Если быть точным, Linux - это просто имя ядра, которое является основным компонентом этой бесплатной операционной системы.

Как описал Линус Торвальдс в книге «Just For Fun» [8], для разработки ядра Linux он запросил копию стандарта POSIX. Это помогло ему реализовать те же механизмы, которые используются в коммерческих системах UNIX. Кроме того, это позволило ему связать ядро ​​Linux с инструментами GNU, которые в основном следовали тому же подходу. Честно говоря, программное обеспечение в системе Linux предоставляется из различных источников, которые соответствуют стандарту POSIX, но также иногда реализуют свои собственные концепции. В то же время, однако, это также показывает разнообразие, которое составляет Linux как операционную систему.

Одним из примеров этого является способ записи аргументов командной строки. Аргументы с двумя дефисами (e.грамм., «-Help») являются соглашениями GNU, тогда как команды POSIX никогда не используют аргументы с двумя дефисами, а вместо этого используют только один (e.грамм., "-помощь"). С самого начала Linux был разработан с учетом GNU, поэтому команды содержат GNU-стиль

аргументы. Чтобы добиться соответствия POSIX, аргументы в стиле POSIX были добавлены шаг за шагом. Тем не менее, окончательное решение принимает разработчик. На сегодняшний день большинство команд принимают как короткие, так и длинные аргументы или даже аргументы без дефисов, такие как, например, команда «найти». Честно говоря, нет согласованности между командами в одной системе, и это может быть проблемой, если вы собираетесь использовать одну и ту же команду в другой системе на основе UNIX, особенно при переключении между Linux, OS X и Solaris.

На данный момент Linux не сертифицирован POSIX из-за высокой стоимости, за исключением двух коммерческих дистрибутивов Linux Inspur K-UX [12] и Huawei EulerOS [6]. Вместо этого Linux считается в основном совместимым с POSIX.

Эта оценка связана с тем, что основные дистрибутивы Linux следуют стандарту Linux Standard Base (LSB) вместо POSIX [9]. LSB направлен на «минимизацию различий между отдельными дистрибутивами Linux» [14]. Это относится к структуре программной системы, включая Стандарт иерархии файловой системы (FHS), используемый в ядре Linux. LSB основан на спецификации POSIX, Single UNIX Specification (SUS) [10] и нескольких других открытых стандартах, но также расширяет их в определенных областях.

Дистрибутивы Linux на основе LSB включают RedHat Linux, Debian GNU / Linux (2002-2015) и Ubuntu (до 2015 года), и это лишь некоторые из них.

Разработка с учетом POSIX

Чтобы понять POSIX более подробно, мы рекомендуем получить копию стандарта POSIX и прочитать ее полностью. Вы можете получить книгу на сайте Open Group. Это требует регистрационного взноса, но дает вам полный доступ к этому ценному ресурсу. Стандарты помогают, поскольку они позволяют разрабатывать программное обеспечение таким образом, чтобы оно работало одинаково на всех платформах UNIX.

Ссылки и ссылки

Спасибо

Автор благодарит Axel Beckert и Veit Schiele за их помощь и советы при подготовке этой статьи.

5 лучших аркад для Linux
В настоящее время компьютеры - это серьезные машины, используемые для игр. Если вы не можете получить новый рекорд, вы поймете, о чем я. В этом посте ...
Битва за Веснот 1.13.6 Выпущена разработка
Битва за Веснот 1.13.6, выпущенная в прошлом месяце, является шестой разработкой в ​​1.13.x и содержит ряд улучшений, в первую очередь пользовательско...
Как установить League Of Legends на Ubuntu 14.04
Если вы поклонник League of Legends, то это возможность для вас протестировать League of Legends. Обратите внимание, что LOL поддерживается в PlayOnLi...