Posix

Je Linux POSIX-kompatibilný?

Je Linux POSIX-kompatibilný?

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

Stručne povedané, POSIX [1] to robí presne pre UNIX a systémy podobné UNIXu (podrobnejšiu históriu tejto témy nájdete v článku Zak H [4]). Definuje výmenné rozhrania, volacie mechanizmy a prenesené údaje pre softvér, ale internú implementáciu prenecháva vývojárovi alebo správcovi softvéru. Cieľom je zjednotiť všetky rôzne vidlice UNIX a systémy podobné systému UNIX takým spôsobom, aby mohli rôzne softvérové ​​implementácie vzájomne pôsobiť. Hlavnou výhodou POSIXu je mať k dispozícii záväznú dokumentáciu pre tieto komponenty - rozhrania, mechanizmy a údaje - v písomnej podobe.

Operačný systém, ktorý sa úplne riadi štandardom POSIX, je klasifikovaný ako kompatibilný s POSIX. V tomto článku vysvetľujeme, čo znamená POSIX, určujeme, či Linux patrí do tejto kategórie, a uvádzame zoznam, ktoré komponenty Linuxu treba z tejto klasifikácie vylúčiť.

Čo znamená pojem POSIX?

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

Od roku 2021 obsahuje štandard POSIX tieto časti:

  1. Základné služby (Zahŕňa š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 riadenie portov I / O, Spúšťače procesov
  1. Prípony (Symbolické odkazy)
  2. Real-time a I / O rozšírenia (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 uzamykania pamäte
  3. Rozšírenia nití (IEEE Std 1003.1c-1995) - Tvorba, kontrola a čistenie vlákien, plánovanie vlákien, synchronizácia vlákien, manipulácia so signálmi
  4. Viac rozšírení v reálnom čase
  5. Rozšírenia zabezpečenia (Zoznamy na kontrolu prístupu)
  1. Shell a utility (IEEE Std 1003.2-1992) - tlmočník príkazov, pomocné programy

Norma sa pravidelne prehodnocuje, aby odrážala technické zmeny a vylepšenia. Vydanie novej verzie a zapracovanie zmien môže niekedy trvať aj niekoľko rokov. To môže byť nevýhodné, ale vzhľadom na rozsah normy je to pochopiteľné.

V posledných rokoch boli pridané rozšírenia spracovania v reálnom čase. Aktuálna verzia bola vydaná začiatkom roka 2018 [3]. Autori SibylFS [5] tiež publikovali veľa anotácií k štandardu POSIX, aby určili logiku a interakcie vyššieho rádu.

Čo znamená POSIX-kompatibilný?

Pojem „kompatibilný s POSIX“ znamená, že operačný systém spĺňa všetky kritériá POSIX. Operačný systém môže natívne spúšťať programy UNIX alebo je možné aplikáciu preniesť zo systému UNIX do iného systému. Prenos aplikácie z UNIXu do cieľového operačného systému je jednoduchý alebo aspoň ľahší, ako keby nepodporoval POSIX. Pre istotu by operačný systém mal úspešne dosiahnuť certifikáciu POSIX [2]. Tento krok sa dosahuje (za cenu) absolvovaním automatizovaného certifikačného testu. Zodpovedajúcu testovaciu sadu nájdete tu [11].

Od roku 2021 obsahuje zoznam operačných systémov 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 spoločnosti Oracle, Inspur K-UX [11] a OS INTEGRITY v reálnom čase od spoločnosti Green Hills Software [15]. V súčasnosti nie je jasné, či sú novšie verzie troch nástupcov systému Solaris, OpenSolaris, Illumos a OpenIndiana, klasifikované ako 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é sa považujú za väčšinou (ale nie úplne) kompatibilné s POSIX, patria Android, BeOS, FreeBSD, Haiku, Linux (pozri nižšie) a VMWare ESXi. Pre systém Microsoft Windows poskytuje Cygwin vývojové a prevádzkové prostredie, ktoré je vo veľkej miere kompatibilné s POSIX.

Je Linux POSIX-kompatibilný?

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

Ako Linus Torvalds opísal v knihe „Just For Fun“ [8], pre vývoj linuxového jadra si vyžiadal kópiu štandardu POSIX. To mu pomohlo implementovať rovnaké mechanizmy, aké sa používajú v komerčných systémoch UNIX. To mu navyše umožnilo prepojiť jadro Linuxu 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 ktoré tiež niekedy 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 zapisujú argumenty príkazového riadku. Argumenty dvoma pomlčkami (napr.g., „-Help“) sú konvencie GNU, zatiaľ čo príkazy POSIX nikdy nepoužívajú argumenty s dvoma pomlčkami, ale iba jeden (e.g., "-Pomoc"). Linux bol od začiatku navrhnutý s ohľadom na GNU, a preto príkazy obsahujú štýl GNU

argumenty. Na dosiahnutie súladu s POSIXom boli krok za krokom pridané argumenty v štýle POSIX. Konečné rozhodnutie aj tak urobí vývojár. Od dnešného dňa väčšina príkazov akceptuje krátke aj dlhé argumenty alebo dokonca argumenty bez pomlčiek, napríklad príkaz „find“. Aby sme boli spravodliví, medzi príkazmi v jednom systéme nie je konzistencia, čo môže predstavovať problém, ak chcete použiť ten istý príkaz v inom systéme založenom na systéme UNIX, najmä pri prepínaní medzi systémami Linux, OS X a Solaris.

Linux nateraz nie je certifikovaný POSIX kvôli vysokým nákladom, s výnimkou dvoch komerčných distribúcií Linuxu 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 systému Linux sa riadia štandardom Linux Standard Base (LSB) namiesto systému POSIX [9]. Cieľom LSB je „minimalizovať rozdiely medzi jednotlivými distribúciami Linuxu“ [14]. Týka sa to štruktúry softvérového systému vrátane štandardu hierarchie súborov (FHS) použitého v jadre systému Linux. LSB je založený na špecifikácii POSIX, špecifikácii Single UNIX (SUS) [10] a niekoľkých ďalších otvorených štandardoch, ale tiež ich rozširuje v určitých oblastiach.

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

Pri vývoji sa pamätá na POSIX

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

Odkazy a referencie

Ďakujem

Autor by chcel poďakovať Axelovi Beckertovi a Veitovi Schielemu za pomoc a radu pri príprave tohto článku.

Hry Ako zobraziť prekrytie OSD v linuxových aplikáciách a hrách na celú obrazovku
Ako zobraziť prekrytie OSD v linuxových aplikáciách a hrách na celú obrazovku
Hranie hier na celú obrazovku alebo používanie aplikácií v režime rozptýlenia zadarmo na celú obrazovku vás môže odrezať od relevantných systémových i...
Hry Top 5 kariet na zachytávanie hier
Top 5 kariet na zachytávanie hier
Všetci sme videli a milovali streamovanie hier na YouTube. PewDiePie, Jakesepticye a Markiplier sú iba niektorí z najlepších hráčov, ktorí zarobili mi...
Hry Ako vyvíjať hru v systéme Linux
Ako vyvíjať hru v systéme Linux
Pred desiatimi rokmi by len málo používateľov Linuxu predpovedalo, že ich obľúbený operačný systém bude jedného dňa populárnou hernou platformou pre k...