Je Linux POSIX kompatibilný?

Is Linux Posix Compliant



Softvér je napísaný mnohými vývojármi s rôznym pozadím. Všeobecné algoritmy sú k dispozícii na základe bezplatnej licencie alebo boli vedecky publikované a môžu byť tiež k dispozícii zadarmo na študijné účely. Výsledkom sú rôzne implementácie a verzie softvéru, ktoré vyhovujú rôznym potrebám. Na to, aby boli tieto rôzne implementácie zameniteľné aj modulárne, je potrebná štandardizácia rozhraní a dátových formátov.

Stručne povedané, POSIX [1] robí presne to, čo pre systémy UNIX a systémy podobné UNIX (podrobnejšiu históriu tejto témy nájdete v článku [Zak] [4]). Definuje rozhrania výmeny, volacie mechanizmy a prenášané údaje pre softvér, ale vnútornú implementáciu ponecháva na vývojárovi alebo správcovi softvéru. Cieľom je zjednotiť všetky rôzne UNIXové vidlice a systémy podobné UNIXu tak, aby mohli rôzne softvérové ​​implementácie navzájom interagovať. Hlavnou výhodou POSIXu je mať k dispozícii v písomnej forme záväznú dokumentáciu k týmto komponentom - rozhraniam, mechanizmom a údajom.







Operačný systém, ktorý ako celok dodržiava štandard POSIX, je klasifikovaný ako kompatibilný s POSIX. V tomto článku vysvetlíme, čo znamená POSIX, určíme, či Linux patrí do tejto kategórie, a uvedieme, ktoré súčasti Linuxu musia byť z tejto klasifikácie vylúčené.



Čo znamená výraz POSIX?

POSIX je skratka pre rozhranie Portable Operating System Interface. Ako je stručne vysvetlené vyššie, POSIX je názov pre zbierku štandardov, ktoré sú potrebné na udržanie kompatibility medzi operačnými systémami. Ako je uvedené v [1], [it] definuje aplikačné programovacie rozhranie (API) spolu s shellmi príkazového riadka a rozhraniami obslužných programov pre kompatibilitu softvéru s variantmi Unixu a ďalších operačných systémov. Prvá verzia systému POSIX bola publikovaná v roku 1988. Od tej doby bol POSIX neustále rozširovaný a aktualizovaný skupinou Austin Common Standards Revision Group (známou tiež jednoducho ako The Austin Group) [7].



Od roku 2021 obsahuje štandard POSIX nasledujúce časti:





  1. Základné služby (Obsahuje štandard ANSI C) (IEEE std 1003.1-1988)-Vytváranie a riadenie procesov, signály, operácie so súbormi a adresármi, potrubia, knižnica C, rozhranie a ovládanie I/O portov, spúšťače procesov
  1. Rozšírenia (Symbolické odkazy)
  2. Rozšírenia v reálnom čase a I/O (IEEE Std 1003.1b-1993)-Prioritné plánovanie, signály v reálnom čase, hodiny a časovače, semafory, odovzdávanie správ, zdieľaná pamäť, asynchrónne a synchrónne I/O, rozhranie na zamykanie pamäte
  3. Rozšírenia vlákien (IEEE Std 1003.1c-1995)-Vytváranie, kontrola a čistenie vlákien, plánovanie vlákien, synchronizácia vlákien, spracovanie signálu
  4. Viac rozšírení v reálnom čase
  5. Rozšírenia zabezpečenia (Zoznamy riadenia prístupu)
  1. Shell a utility (IEEE Std 1003.2-1992)-Interpreter príkazov, obslužné programy

Norma je pravidelne revidovaná, aby odrážala technické zmeny a vylepšenia. Niekedy môže trvať niekoľko rokov, kým je zverejnená nová verzia a sú zmeny zapracované. To môže byť nevýhodné, ale vzhľadom na rozsah normy je to pochopiteľné.

V posledných rokoch pribudli rozšírenia pre spracovanie v reálnom čase. Aktuálna verzia bola vydaná začiatkom roku 2018 [3]. Autori SibylFS [5] tiež publikovali mnoho anotácií k štandardu POSIX na určenie logiky a interakcií vyššieho rádu.



Čo znamená byť v súlade s POSIX?

Termín kompatibilný s POSIX znamená, že operačný systém spĺňa všetky kritériá POSIX. Operačný systém môže spúšťať programy UNIX natívne alebo je možné aplikáciu prenášať zo systému UNIX do iného systému. Portovanie aplikácie z UNIXu do cieľového operačného systému je jednoduché alebo prinajmenšom jednoduchšie, ako keby nepodporovalo POSIX. Aby ste mali istotu, operačný systém mal úspešne dosiahnuť certifikáciu POSIX [2]. Tento krok sa dosiahne (za poplatok) absolvovaním automatizovaného certifikačného testu. Príslušnú testovaciu sadu nájdete tu [11].

Od roku 2021 obsahuje zoznam operačných systémov s certifikáciou POSIX AIX od IBM, HP-UX od HP, IRIX od SGI, EulerOS [6] od Huawei, Mac OS X od Apple (od 10,5 Leopard), Solaris a QNX Neutrino od Oracle, K-UX Inspur [11] a OS INTEGRITY v reálnom čase od Green Hills Software [15]. V súčasnosti nie je jasné, či sú novšie verzie troch nástupcov Solarisu, OpenSolaris, Illumos a OpenIndiana, tiež plne kompatibilné s POSIX. Tieto operačné systémy boli kompatibilné s POSIX až do POSIX 2001.

Medzi ďalšie operačné systémy, ktoré sú väčšinou (ale nie úplne) kompatibilné s POSIX, patria Android, BeOS, FreeBSD, Haiku, Linux (pozri nižšie) a VMWare ESXi. V prípade operačného systému Microsoft Windows poskytuje Cygwin do značnej miery POSIX vývojové a bežecké prostredie.

Je Linux POSIX kompatibilný?

Pojem Linux označuje celý operačný systém Linux bez ohľadu na príchuť, napríklad Debian GNU/Linux, RedHat Linux, Linux Mint, Ubuntu Linux, Fedora a CentOS. Aby som bol presný, Linux je iba názov jadra, ktoré je hlavnou súčasťou tohto bezplatného operačného systému.

Ako opísal Linus Torvalds v knihe Just For Fun [8], na vývoj jadra Linuxu požiadal o kópiu štandardu POSIX. To mu pomohlo implementovať rovnaké mechanizmy, aké sa používajú v komerčných systémoch UNIX. Navyše mu to umožnilo prepojiť linuxové jadro s nástrojmi GNU, ktoré sledovali hlavne rovnaký prístup. Aby sme boli spravodliví, softvér v systéme Linux pochádza z rôznych zdrojov, ktoré rešpektujú štandard POSIX, ale niekedy tiež implementujú svoje vlastné koncepty. Zároveň to však ukazuje aj rozmanitosť, ktorá tvorí Linux ako operačný systém.

Jedným z príkladov je spôsob, akým sa píšu argumenty príkazového riadka. Argumenty s dvoma pomlčkami (napr. –Help) sú konvencie GNU, zatiaľ čo príkazy POSIX nikdy nepoužívajú argumenty s dvoma pomlčkami, ale iba jeden (napr. -Help). Linux bol od začiatku navrhnutý s ohľadom na GNU, a preto príkazy obsahujú štýl GNU

argumenty. Aby sa dosiahol súlad s pravidlami POSIX, boli postupne pridané argumenty v štýle POSIX. Konečné rozhodnutie však robí vývojár. K dnešnému dňu väčšina príkazov akceptuje krátke aj dlhé argumenty alebo dokonca argumenty bez prerušoviek, ako je napríklad príkaz find. Aby sme boli spravodliví, medzi príkazmi v jednom systéme nie je zhoda a to môže byť problém, ak máte v úmysle použiť ten istý príkaz v inom systéme založenom na UNIXe, najmä pri prepínaní medzi Linuxom, OS X a Solarisom.

Linux zatiaľ nie je certifikovaný POSIX kvôli vysokým nákladom, s výnimkou dvoch komerčných Linuxových distribúcií Inspur K-UX [12] a Huawei EulerOS [6]. Namiesto toho je Linux považovaný za väčšinou kompatibilný s POSIX.

Toto hodnotenie je spôsobené skutočnosťou, že hlavné distribúcie Linuxu sa riadia Linux Standard Base (LSB) namiesto POSIX [9]. Cieľom LSB je minimalizovať rozdiely medzi jednotlivými distribúciami Linuxu [14]. Toto sa týka štruktúry softvérového systému vrátane štandardu Filesystem Hierarchy Standard (FHS) používaného v jadre Linuxu. LSB je založený na špecifikácii POSIX, jednotnej špecifikácii UNIX (SUS) [10] a niekoľkých ďalších otvorených štandardoch, ale tiež ich v určitých oblastiach rozširuje.

Medzi distribúcie Linuxu založené na LSB patria RedHat Linux, Debian GNU/Linux (2002-2015) a Ubuntu (do roku 2015).

Vývoj s prihliadnutím na POSIX

Aby ste pochopili POSIX podrobnejšie, odporúčame vám získať kópiu štandardu POSIX a prečítať si ho celý. Knihu môžete získať z webovej stránky Open Group. Vyžaduje si to registračný poplatok, ale poskytuje vám plný prístup k tomuto cennému zdroju. Pomáhajú štandardy, pretože vám umožňujú vyvíjať softvér takým spôsobom, aby sa správal rovnako na všetkých platformách UNIX.

Odkazy a referencie

Ďakujem

Autor by chcel poďakovať Axelovi Beckertovi a Veit Schiele za pomoc a rady pri príprave tohto článku.