Posix

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

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

Софтуерът е написан от многобройни разработчици с различен произход. Общите алгоритми се предлагат под безплатен лиценз или са били научно публикувани и може да са достъпни безплатно за целите на изучаването. Това води до различни внедрения и версии на софтуера, които отговарят на различни нужди. Необходима е стандартизация на интерфейсите и форматите за данни, за да бъдат тези различни изпълнения едновременно взаимозаменяеми и модулни.

Накратко, POSIX [1] прави точно това за UNIX и UNIX-подобни системи (вижте статията на Zak H [4] за по-подробна история по тази тема). Той определя интерфейсите за обмен, извикващите механизми и прехвърлените данни за софтуера, но оставя вътрешната реализация на разработчика или поддръжника на софтуера. Целта е да се обединят всички различни UNIX вилици и UNIX-подобни системи по такъв начин, че различните софтуерни реализации да могат да взаимодействат помежду си. Основното предимство на POSIX е да има обвързваща документация за тези компоненти - интерфейси, механизми и данни - налична в писмена форма.

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

Какво означава терминът POSIX?

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

От 2021 г. стандартът POSIX съдържа следните части:

  1. Основни услуги (Включва стандартен ANSI C) (IEEE std 1003.1-1988) - Създаване и контрол на процеси, сигнали, операции с файлове и директории, тръби, C библиотека, интерфейс и контрол на входно-изходния порт, тригери на процеса
  1. Разширения (Символични връзки)
  2. Разширения в реално време и I / O (IEEE Std 1003.1b-1993) - Приоритетно планиране, сигнали в реално време, часовници и таймери, семафори, предаване на съобщения, споделена памет, асинхронни и синхронни I / O, интерфейс за заключване на паметта
  3. Разширения на нишки (IEEE Std 1003.1c-1995) - Създаване на конци, управление и почистване, планиране на нишки, синхронизация на нишки, обработка на сигнали
  4. Повече разширения в реално време
  5. Разширения за сигурност (Списъци за контрол на достъпа)
  1. Shell и помощни програми (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] и интегралност на OS в реално време от софтуера Green Hills [15]. Понастоящем не е ясно дали по-новите версии на трите наследника на Solaris, OpenSolaris, Illumos и OpenIndiana, също са класифицирани като напълно съвместими с POSIX. Тези операционни системи бяха съвместими с POSIX до POSIX 2001.

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

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

Терминът „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 като операционна система.

Един пример за това е начинът, по който се записват аргументите от командния ред. Аргументи с две чертички (напр.ж., “-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]. Това се отнася до структурата на софтуерната система, включително Filesystem Hierarchy Standard (FHS), използвана в ядрото на Linux. LSB се основава на спецификацията POSIX, единната UNIX спецификация (SUS) [10] и няколко други отворени стандарти, но също така ги разширява в определени области.

Базираните на LSB дистрибуции включват RedHat Linux, Debian GNU / Linux (2002-2015) и Ubuntu (до 2015), за да назовем само няколко.

Разработване с мисъл за POSIX

За да разберете по-подробно POSIX, препоръчваме да получите копие на стандарта POSIX и да го прочетете изцяло. Можете да получите книгата от уебсайта на Open Group. Това изисква регистрационна такса, но ви дава пълен достъп до този ценен ресурс. Стандартите помагат, тъй като ви позволяват да разработвате софтуер по такъв начин, че да се държи по същия начин на всички UNIX платформи.

Връзки и справки

Благодаря ти

Авторът би искал да благодари на Axel Beckert и Veit Schiele за помощта и съветите им при подготовката на тази статия.

Топ 10 игри за игра на Ubuntu
Платформата на Windows е една от доминиращите платформи за игри поради огромния процент игри, които се развиват днес, за да поддържат Windows. Може ли...
5 най-добри аркадни игри за Linux
В днешно време компютрите са сериозни машини, използвани за игри. Ако не можете да получите новия висок резултат, ще разберете какво имам предвид. В т...
Битка за Уеснот 1.13.6 Разработка освободена
Битка за Уеснот 1.13.6, издаден миналия месец, е шестата версия за разработка в 1.13.x серия и предоставя редица подобрения, най-вече на потребителски...