Ali je Linux skladen s POSIX?

Is Linux Posix Compliant



Programsko opremo pišejo številni razvijalci z različnim ozadjem. Splošni algoritmi so na voljo pod brezplačno licenco ali so bili znanstveno objavljeni, prav tako pa so lahko brezplačno na voljo za študijske namene. Posledica tega so različne izvedbe in različice programske opreme, ki ustrezajo različnim potrebam. Standardizacija vmesnikov in formatov podatkov je potrebna, da bodo te različne izvedbe zamenljive in modularne.

Skratka, POSIX [1] počne točno to za sisteme, podobne UNIX in UNIX (za podrobnejšo zgodovino na to temo glej članek [4] Zaka H). Opredeljuje vmesnike za izmenjavo, mehanizme klicanja in prenesene podatke za programsko opremo, notranjo izvedbo pa prepusti razvijalcu ali vzdrževalcu programske opreme. Cilj je združiti vse različne vilice UNIX in sisteme, podobne UNIX-u, na način, da lahko različne implementacije programske opreme medsebojno delujejo. Glavna prednost POSIX -a je, da ima zavezujočo dokumentacijo za te komponente - vmesnike, mehanizme in podatke - na voljo v pisni obliki.







Operacijski sistem, ki v celoti sledi standardu POSIX, je razvrščen kot skladen s POSIX. V tem članku razložimo, kaj pomeni POSIX, ugotovimo, ali Linux spada v to kategorijo, in naštejemo, katere komponente Linuxa je treba izključiti iz te klasifikacije.



Kaj pomeni izraz POSIX?

POSIX je kratica za vmesnik prenosnega operacijskega sistema. Kot je na kratko razloženo zgoraj, je POSIX ime za zbirko standardov, ki so potrebni za vzdrževanje združljivosti med operacijskimi sistemi. Kot je navedeno v [1], [it] opredeljuje vmesnik za programiranje aplikacij (API) skupaj z lupinami ukazne vrstice in vmesniki pripomočkov za združljivost programske opreme z različicami Unixa in drugimi operacijskimi sistemi. Prva različica POSIX je bila objavljena leta 1988. Od takrat je skupina za revizijo skupnih standardov Austina (znana tudi kot skupina Austin) stalno spreminjala in posodabljala POSIX [7].



Od leta 2021 standard POSIX vsebuje naslednje dele:





  1. Temeljne storitve (Vključuje standardni ANSI C) (IEEE std 1003.1-1988)-Ustvarjanje in nadzor procesov, signali, operacije datotek in imenikov, cevi, knjižnica C, vmesnik in nadzor vhodno-izhodnih vrat, sprožilci procesov
  1. Razširitve (Simbolične povezave)
  2. Razširitve v realnem času in V/I (IEEE Std 1003.1b-1993)-Prednostno razporejanje, signali v realnem času, ure in časovniki, semaforji, posredovanje sporočil, skupni pomnilnik, asinhroni in sinhroni V/I, vmesnik za zaklepanje pomnilnika
  3. Razširitve niti (IEEE Std 1003.1c-1995)-Ustvarjanje niti, nadzor in čiščenje, Načrtovanje niti, Sinhronizacija niti, Ravnanje s signalom
  4. Več razširitev v realnem času
  5. Varnostne razširitve (Seznami za nadzor dostopa)
  1. Shell in Utilities (IEEE Std 1003.2-1992)-Ukazni tolmač, pomožni programi

Standard se redno pregleduje, da odraža tehnične spremembe in izboljšave. Včasih lahko traja nekaj let, preden bo objavljena nova različica in spremembe vključene. To je lahko neugodno, vendar je razumljivo glede na obseg standarda.

V zadnjih letih so bile dodane razširitve obdelave v realnem času. Trenutna različica je izšla v začetku leta 2018 [3]. Avtorji SibylFS [5] so objavili tudi številne opombe k standardu POSIX za določitev logike in interakcij višjega reda.



Kaj pomeni biti skladen s POSIX?

Izraz skladen s POSIX pomeni, da operacijski sistem izpolnjuje vsa merila POSIX. Operacijski sistem lahko izvorno izvaja programe UNIX ali pa aplikacijo prenese iz sistema UNIX v drug sistem. Prenos aplikacije iz UNIX v ciljni operacijski sistem je enostaven ali vsaj lažji, kot če ne podpira POSIX. Če želite biti na varnem, bi moral operacijski sistem uspešno pridobiti certifikat POSIX [2]. Ta korak je dosežen (za ceno) z opravljenim avtomatiziranim certifikacijskim testom. Ustrezen testni sklop najdete tukaj [11].

Od leta 2021 seznam operacijskih sistemov s certifikatom POSIX vsebuje AIX od IBM, HP-UX od HP, IRIX od SGI, EulerOS [6] od Huawei, Mac OS X od Apple (od 10.5 Leopard), Solaris in QNX Neutrino od Oracle, Inspurjev K-UX [11] in OS INTEGRITY OS v realnem času iz programske opreme Green Hills Software [15]. Trenutno ni jasno, ali so novejše različice treh naslednikov Solarisa, OpenSolaris, Illumos in OpenIndiana, uvrščene tudi med popolnoma skladne s POSIX. Ti operacijski sistemi so bili skladni s POSIX do POSIX 2001.

Drugi operacijski sistemi, ki so večinoma (vendar ne v celoti) skladni s POSIX, vključujejo Android, BeOS, FreeBSD, Haiku, Linux (glej spodaj) in VMWare ESXi. Za Microsoft Windows Cygwin ponuja razvojno in izvajalno okolje, ki je v veliki meri skladno s POSIX.

Ali je Linux skladen s POSIX?

Izraz Linux se nanaša na celoten operacijski sistem Linux, ne glede na okus, na primer Debian GNU/Linux, RedHat Linux, Linux Mint, Ubuntu Linux, Fedora in CentOS, na primer. Natančneje, Linux je samo ime jedra, ki je osrednja komponenta tega brezplačnega operacijskega sistema.

Kot je opisal Linus Torvalds v knjigi Just For Fun [8], je za razvoj jedra Linuxa zahteval kopijo standarda POSIX. To mu je pomagalo pri izvajanju istih mehanizmov, ki se uporabljajo v komercialnih sistemih UNIX. Poleg tega mu je to omogočilo povezavo jedra Linuxa z orodji GNU, ki so večinoma sledila istemu pristopu. Če smo pošteni, programska oprema v sistemu Linux prispeva iz različnih virov, ki spoštujejo standard POSIX, včasih pa izvajajo tudi lastne koncepte. Hkrati pa to kaže tudi na raznolikost, ki sestavlja Linux kot operacijski sistem.

Eden od primerov tega je način pisanja argumentov ukazne vrstice. Argumenti z dvema črticama (npr. –Help) so konvencije GNU, medtem ko ukazi POSIX nikoli ne uporabljajo argumentov z dvema pomišljajema, temveč le en sam (npr. -Help). Linux je bil že na začetku zasnovan z mislijo na GNU, zato ukazi vsebujejo slog GNU

argumenti. Za dosego skladnosti s POSIX-om so bili korak za korakom dodani argumenti v slogu POSIX. Končno odločitev pa sprejme razvijalec. Danes večina ukazov sprejema kratke in dolge argumente ali celo argumente brez pomišljajev, na primer ukaz find. Če smo pošteni, med ukazi v enem sistemu ni doslednosti, kar je lahko težava, če nameravate isti ukaz uporabiti v drugem sistemu, ki temelji na UNIX, zlasti pri preklapljanju med Linuxom, OS X in Solarisom.

Zaenkrat Linux zaradi visokih stroškov nima certifikata POSIX, razen dveh komercialnih distribucij Linuxa Inspur K-UX [12] in Huawei EulerOS [6]. Namesto tega je Linux večinoma skladen s POSIX.

Ta ocena je posledica dejstva, da večje distribucije Linuxa sledijo Linux Standard Base (LSB) namesto POSIX [9]. Cilj LSB je zmanjšati razlike med posameznimi distribucijami Linuxa [14]. To se nanaša na sistemsko strukturo programske opreme, vključno s standardom hierarhije datotečnega sistema (FHS), ki se uporablja v jedru Linuxa. LSB temelji na specifikaciji POSIX, enotni specifikaciji UNIX (SUS) [10] in številnih drugih odprtih standardih, vendar jih na nekaterih področjih tudi razširja.

LSB distribucije Linuxa vključujejo RedHat Linux, Debian GNU/Linux (2002-2015) in Ubuntu (do leta 2015).

Razvoj z mislijo na POSIX

Za podrobnejše razumevanje sistema POSIX priporočamo, da pridobite kopijo standarda POSIX in jo v celoti preberete. Knjigo lahko dobite na spletnem mestu Open Group. To zahteva registracijo, vendar vam omogoča popoln dostop do tega dragocenega vira. Standardi pomagajo, saj vam omogočajo razvoj programske opreme tako, da se obnaša enako na vseh platformah UNIX.

Povezave in reference

Hvala vam

Avtor se zahvaljuje Axel Beckert in Veit Schiele za pomoč in nasvete pri pripravi tega članka.