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

Is Linux Posix Compliant



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

Накратко, 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 INTEGRITY в реално време от 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 като операционна система.

Един пример за това е начинът, по който се записват аргументите на командния ред. Аргументите с две тирета (напр. –Help) са GNU конвенции, докато POSIX командите никога не използват аргументи с две тирета, а само единични (напр. -Help). Още в началото Linux е проектиран с GNU предвид и затова командите съдържат GNU стил

аргументи. За да се постигне съответствие с POSIX, стъпка по стъпка са добавени аргументи в стил POSIX. И все пак окончателното решение се взема от разработчика. Към днешна дата повечето команди приемат както кратки, така и дълги аргументи или дори аргументи без никакви тирета, като например командата find, например. За да бъдем честни, няма съгласуваност между командите в една система и това може да бъде проблем, когато възнамерявате да използвате същата команда в различна UNIX-базирана система, особено при превключване между Linux, OS X и Solaris.

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

Тази оценка се дължи на факта, че големите дистрибуции на Linux следват стандартната база на Linux (LSB) вместо POSIX [9]. LSB има за цел да сведе до минимум разликите между отделните дистрибуции на Linux [14]. Това се отнася до структурата на софтуерната система, включително стандарта за йерархия на файловата система (FHS), използвана в ядрото на Linux. LSB се основава на спецификацията POSIX, Единната спецификация на UNIX (SUS) [10] и няколко други отворени стандарти, но също така ги разширява в определени области.

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

Развитие с мисълта за POSIX

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

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

Благодаря ти

Авторът би искал да благодари на Аксел Бекерт и Вейт Шиле за помощта и съветите при подготовката на тази статия.