Vyhovuje Linux POSIX?

Is Linux Posix Compliant



Software je napsán řadou vývojářů s různým pozadím. Obecné algoritmy jsou k dispozici na základě bezplatné licence nebo byly vědecky publikovány a mohou být také k dispozici zdarma pro studijní účely. Výsledkem jsou různé implementace a verze softwaru, které vyhovují různým potřebám. Aby byly tyto různé implementace zaměnitelné i modulární, je nutná standardizace rozhraní a datových formátů.

Stručně řečeno, POSIX [1] dělá přesně to pro systémy UNIX a podobné systémy (podrobnější historii na toto téma najdete v článku Zak H [4]). Definuje rozhraní pro výměnu, volací mechanismy a přenesená data pro software, ale ponechává interní implementaci na vývojáři nebo správci softwaru. Cílem je sjednotit všechny různé UNIXové vidlice a systémy podobné UNIXu takovým způsobem, aby různé softwarové implementace mohly vzájemně interagovat. Hlavní výhodou POSIXu je mít k dispozici v písemné podobě závaznou dokumentaci pro tyto komponenty - rozhraní, mechanismy a data.







Operační systém, který jako celek následuje standard POSIX, je klasifikován jako kompatibilní s POSIX. V tomto článku vysvětlíme, co POSIX znamená, určíme, zda Linux patří do této kategorie, a uvedeme, které komponenty Linuxu musí být z této klasifikace vyloučeny.



Co znamená termín POSIX?

POSIX je zkratka pro rozhraní Portable Operating System Interface. Jak je stručně vysvětleno výše, POSIX je název pro kolekci standardů, které jsou nutné k zachování kompatibility mezi operačními systémy. Jak je uvedeno v [1], [it] definuje rozhraní pro programování aplikací (API) spolu se skořápkami příkazového řádku a nástrojovými rozhraními pro kompatibilitu softwaru s variantami Unixu a dalších operačních systémů. První verze POSIX byla publikována v roce 1988. Od té doby je POSIX nepřetržitě rozšiřován a aktualizován skupinou Austin Common Standards Revision Group (také známou jednoduše jako The Austin Group) [7].



Od roku 2021 obsahuje standard POSIX následující části:





  1. Základní služby (Zahrnuje standardní ANSI C) (IEEE std 1003.1-1988)-Vytváření a řízení procesů, signály, operace se soubory a adresáři, potrubí, knihovna C, rozhraní a ovládání I/O portů, spouštěče procesů
  1. Rozšíření (Symbolické odkazy)
  2. Rozšíření v reálném čase a I/O (IEEE Std 1003.1b-1993)-prioritní plánování, signály v reálném čase, hodiny a časovače, semafory, předávání zpráv, sdílená paměť, asynchronní a synchronní I/O, rozhraní pro uzamčení paměti
  3. Rozšíření vláken (IEEE Std 1003.1c-1995)-Vytváření, ovládání a čištění vláken, plánování vláken, synchronizace vláken, zpracování signálu
  4. Více rozšíření v reálném čase
  5. Rozšíření zabezpečení (Seznamy řízení přístupu)
  1. Shell a nástroje (IEEE Std 1003.2-1992)-příkazový tlumočník, obslužné programy

Norma je pravidelně revidována, aby odrážela technické změny a vylepšení. Někdy může trvat několik let, než bude zveřejněna nová verze a změny budou začleněny. To může být nevýhodné, ale vzhledem k rozsahu normy je to pochopitelné.

V posledních letech byla přidána rozšíření pro zpracování v reálném čase. Aktuální verze byla vydána počátkem roku 2018 [3]. Autoři SibylFS [5] také publikovali mnoho anotací ke standardu POSIX k určení logiky a interakcí vyššího řádu.



Co znamená být v souladu s POSIX?

Termín kompatibilní s POSIX znamená, že operační systém splňuje všechna kritéria POSIX. Operační systém může spouštět programy UNIX nativně nebo lze aplikaci přenést ze systému UNIX do jiného systému. Přenesení aplikace z UNIXu do cílového operačního systému je snadné, nebo alespoň jednodušší, než když nepodporuje POSIX. Abychom měli jistotu, operační systém měl úspěšně dosáhnout certifikace POSIX [2]. Tento krok je dosažen (za cenu) absolvováním automatizovaného certifikačního testu. Odpovídající testovací sadu najdete zde [11].

Od roku 2021 obsahuje seznam operačních systémů certifikovaných 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álném čase od Green Hills Software [15]. V současné době není jasné, zda jsou novější verze tří nástupců Solarisu, OpenSolaris, Illumos a OpenIndiana, také klasifikovány jako plně kompatibilní s POSIX. Tyto operační systémy byly kompatibilní s POSIX až do POSIX 2001.

Mezi další operační systémy, které jsou považovány většinou (ale ne plně) za kompatibilní s POSIX, patří Android, BeOS, FreeBSD, Haiku, Linux (viz níže) a VMWare ESXi. Pro Microsoft Windows poskytuje Cygwin do značné míry POSIX kompatibilní vývojové a běhové prostředí.

Vyhovuje Linux POSIX?

Termín Linux označuje celý operační systém Linux, bez ohledu na příchuť, například Debian GNU/Linux, RedHat Linux, Linux Mint, Ubuntu Linux, Fedora a CentOS. Abych byl přesný, Linux je pouze název jádra, které je základní součástí tohoto bezplatného operačního systému.

Jak popsal Linus Torvalds v knize Just For Fun [8], aby vyvinul linuxové jádro, požádal o kopii standardu POSIX. To mu pomohlo implementovat stejné mechanismy, jaké se používají v komerčních systémech UNIX. Kromě toho mu to umožnilo propojit linuxové jádro s nástroji GNU, které sledovaly hlavně stejný přístup. Abychom byli spravedliví, software v systému Linux pochází z různých zdrojů, které respektují standard POSIX, ale někdy také implementují vlastní koncepty. Současně to však také ukazuje rozmanitost, která tvoří Linux jako operační systém.

Jedním z příkladů je způsob psaní argumentů příkazového řádku. Argumenty se dvěma pomlčkami (např. –Help) jsou konvence GNU, zatímco příkazy POSIX nikdy nepoužívají argumenty se dvěma pomlčkami, ale pouze jeden (např. -Help). Linux byl od samého začátku navržen s ohledem na GNU, a proto příkazy obsahují styl GNU

argumenty. Aby bylo dosaženo shody s POSIX, byly postupně přidávány argumenty ve stylu POSIX. Konečné rozhodnutí však činí vývojář. K dnešnímu dni většina příkazů přijímá krátké i dlouhé argumenty nebo dokonce argumenty bez pomlček, například příkaz find. Abychom byli spravedliví, neexistuje konzistence mezi příkazy v jednom systému, a to může být problém, pokud hodláte použít stejný příkaz na jiném systému založeném na UNIXu, zejména při přepínání mezi Linuxem, OS X a Solarisem.

Linux zatím nemá certifikaci POSIX kvůli vysokým nákladům, kromě dvou komerčních linuxových distribucí Inspur K-UX [12] a Huawei EulerOS [6]. Místo toho je Linux považován za převážně kompatibilní s POSIX.

Toto hodnocení je dáno skutečností, že hlavní distribuce Linuxu se řídí standardem Linux Standard Base (LSB) místo POSIX [9]. LSB si klade za cíl minimalizovat rozdíly mezi jednotlivými distribucemi Linuxu [14]. To se týká struktury softwarového systému, včetně standardu Filesystem Hierarchy Standard (FHS) používaného v jádře Linuxu. LSB je založen na specifikaci POSIX, Single UNIX Specification (SUS) [10] a několika dalších otevřených standardech, ale také je v určitých oblastech rozšiřuje.

Mezi distribuce Linuxu založené na LSB patří RedHat Linux, Debian GNU/Linux (2002-2015) a Ubuntu (do roku 2015).

Vývoj s ohledem na POSIX

Abyste porozuměli POSIXu podrobněji, doporučujeme vám získat kopii standardu POSIX a přečíst si ji celou. Knihu můžete získat z webu Open Group. To vyžaduje registrační poplatek, ale poskytuje vám plný přístup k tomuto cennému zdroji. Standardy pomáhají, protože vám umožňují vyvíjet software tak, aby se choval stejným způsobem na všech platformách UNIX.

Odkazy a reference

Děkuji

Autor by chtěl poděkovat Axelovi Beckertovi a Veit Schiele za pomoc a rady při přípravě tohoto článku.