Посікс

Чи відповідає Linux POSIX?

Чи відповідає Linux POSIX?

Програмне забезпечення написане численними розробниками з різним досвідом. Загальні алгоритми доступні за безкоштовною ліцензією або були опубліковані науково, а також можуть бути доступними безкоштовно для навчальних цілей. Це призводить до різних впроваджень та версій програмного забезпечення, які відповідають різноманітним потребам. Необхідна стандартизація інтерфейсів та форматів даних, щоб зробити ці різні реалізації як взаємозамінними, так і модульними.

Коротше кажучи, POSIX [1] робить саме це для UNIX та UNIX-подібних систем (див. Статтю Zak H [4] для більш детальної історії з цієї теми). Він визначає інтерфейси обміну, механізми виклику та передані дані для програмного забезпечення, але залишає внутрішню реалізацію розробнику або супровіднику програмного забезпечення. Мета полягає в тому, щоб уніфікувати всі різні UNIX-форки та UNIX-подібні системи таким чином, щоб різні програмні реалізації могли взаємодіяти між собою. Головною перевагою POSIX є наявність обов'язкової документації для цих компонентів - інтерфейсів, механізмів та даних - у письмовій формі.

Операційна система, яка повністю відповідає стандарту POSIX, класифікується як сумісна з POSIX. У цій статті ми пояснюємо, що означає POSIX, визначаємо, чи належить Linux до цієї категорії, та перелічуємо, які компоненти Linux повинні бути виключені з цієї класифікації.

Що означає термін POSIX?

POSIX - це абревіатура портативного інтерфейсу операційної системи. Як коротко пояснено вище, POSIX - це назва колекції стандартів, необхідних для підтримки сумісності між операційними системами. Як зазначено в [1], „[it] визначає інтерфейс прикладного програмування (API), поряд із оболонками командного рядка та інтерфейсами службових програм, для сумісності програмного забезпечення з варіантами Unix та інших операційних систем.”Перша версія POSIX була опублікована в 1988 році. З тих пір POSIX постійно розширюється та оновлюється Групою перегляду стандартних стандартів Остіна (також відомою просто як The 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, Kp-UX Inspur [11] та ОС INTEGRITY в реальному часі від Green Hills Software [15]. В даний час незрозуміло, чи нові версії трьох наступників Solaris, OpenSolaris, Illumos та OpenIndiana, класифікуються як повністю сумісні з POSIX, а також. Ці операційні системи до POSIX 2001 відповідали стандартам POSIX.

Інші операційні системи, які переважно (але не повністю) сумісні з 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 - це лише назва ядра, яке є основним компонентом цієї безкоштовної операційної системи.

Як описав Лінус Торвальдс у книзі “Просто для розваги” [8], для розробки ядра Linux, він попросив копію стандарту POSIX. Це допомогло йому застосувати ті самі механізми, що використовуються в комерційних системах UNIX. Крім того, це дозволило йому пов'язати ядро ​​Linux з інструментами GNU, які переважно застосовували той самий підхід. Справедливості заради слід сказати, що програмне забезпечення в системі Linux надано з різних джерел, які відповідають стандарту POSIX, але іноді реалізують власні концепції. Однак у той же час це також демонструє різноманітність, що становить Linux як операційну систему.

Одним із прикладів цього є спосіб написання аргументів командного рядка. Аргументи з двома тире (напр.g., “-Help”) - це домовленості GNU, тоді як команди POSIX ніколи не використовують аргументи з двома тире, а натомість лише один.g., “-Допомога”). З самого початку 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, Єдиній специфікації UNIX (SUS) [10] та ряді інших відкритих стандартів, але також поширює їх у певних областях.

До дистрибутивів Linux на базі LSB належать RedHat Linux, Debian GNU / Linux (2002-2015) та Ubuntu (до 2015), щоб назвати декілька.

Розробка з урахуванням POSIX

Щоб більш детально зрозуміти POSIX, ми рекомендуємо отримати копію стандарту POSIX і прочитати його повністю. Ви можете отримати книгу на веб-сайті Open Group. Це вимагає реєстраційного внеску, але дає вам повний доступ до цього цінного ресурсу. Стандарти допомагають, оскільки дозволяють розробляти програмне забезпечення таким чином, щоб воно поводилось однаково на всіх платформах UNIX.

Посилання та посилання

Дякую тобі

Автор висловлює подяку Акселю Беккерту та Вейту Шиле за допомогу та поради під час підготовки цієї статті.

5 найкращих аркадних ігор для Linux
В наш час комп’ютери - це серйозні машини, що використовуються для ігор. Якщо ви не можете отримати новий високий бал, ви зрозумієте, що я маю на уваз...
Битва за Веснот 1.13.6 Розробка випущена
Битва за Веснот 1.13.6, випущений минулого місяця, є шостим випуском розробки в 1.13.x, і це забезпечує низку вдосконалень, особливо до інтерфейсу кор...
Як встановити League of Legends на Ubuntu 14.04
Якщо ви шанувальник League of Legends, то це можливість для вас тестувати League of Legends. Зверніть увагу, що LOL підтримується на PlayOnLinux, якщо...