Kas Linux on POSIX-ühilduv?

Is Linux Posix Compliant



Tarkvara on kirjutanud arvukalt erineva taustaga arendajaid. Üldised algoritmid on saadaval tasuta litsentsi alusel või on teaduslikult avaldatud ning need võivad olla tasuta kättesaadavad ka õppimise eesmärgil. Selle tulemuseks on erinevad rakendused ja tarkvaraversioonid, mis sobivad erinevatele vajadustele. Nende erinevate rakenduste nii vahetatavate kui ka modulaarsete muutmiseks on vaja liideste ja andmevormingute standardimist.

Lühidalt, POSIX [1] teeb täpselt seda UNIXi ja UNIX-i sarnaste süsteemide puhul (vt Zak H artiklit [4] selle teema kohta üksikasjalikuma ajaloo jaoks). See määratleb tarkvara jaoks teabevahetusliidesed, helistamismehhanismid ja edastatud andmed, kuid jätab sisemise rakendamise tarkvara arendaja või hooldaja hooleks. Eesmärk on ühendada kõik erinevad UNIXi kahvlid ja UNIX-laadsed süsteemid nii, et erinevad tarkvararakendused saaksid üksteisega suhelda. POSIXi peamine eelis on nende komponentide - liideste, mehhanismide ja andmete - siduva dokumentatsiooni olemasolu kirjalikus vormis.







Operatsioonisüsteem, mis järgib tervikuna POSIX-standardit, on klassifitseeritud POSIX-ühilduvaks. Selles artiklis selgitame, mida POSIX tähistab, otsustame, kas Linux kuulub sellesse kategooriasse, ja loetleme, millised Linuxi komponendid tuleb sellest klassifikatsioonist välja jätta.



Mida tähendab termin POSIX?

POSIX on portatiivse operatsioonisüsteemi liidese lühend. Nagu eespool lühidalt selgitatud, on POSIX standardite kogumi nimi, mis on vajalik operatsioonisüsteemide ühilduvuse säilitamiseks. Nagu on öeldud [1], määratleb [it] rakenduse programmeerimisliidese (API) koos käsurea kestade ja utiliitidega, et tagada tarkvara ühilduvus Unixi ja muude operatsioonisüsteemide variantidega. POSIXi esimene versioon ilmus 1988. aastal. Sellest ajast alates on Austini ühiste standardite revideerimisrühm (tuntud ka kui The Austin Group) [7] POSIX -i pidevalt laiendanud ja ajakohastanud.



Alates 2021. aastast sisaldab POSIX standard järgmisi osi:





  1. Põhiteenused (Sisaldab standardit ANSI C) (IEEE std 1003.1-1988)-protsessi loomine ja juhtimine, signaalid, faili- ja kataloogitoimingud, torud, C-raamatukogu, I/O-pordi liides ja juhtimine, protsessi käivitajad
  1. Laiendused (Sümboolsed lingid)
  2. Reaalajas ja I/O laiendused (IEEE Std 1003.1b-1993)-prioriteediplaan, reaalajasignaalid, kellad ja taimerid, semafoorid, sõnumite edastamine, jagatud mälu, asünkroonne ja sünkroonne sisend/väljund, mälu lukustusliides
  3. Teemapikendused (IEEE Std 1003.1c-1995)-niidi loomine, juhtimine ja puhastamine, niidi ajastamine, niidi sünkroonimine, signaali käsitlemine
  4. Rohkem reaalajas laiendusi
  5. Turvalaiendid (Juurdepääsukontrollide loendid)
  1. Kest ja kommunaalteenused (IEEE Std 1003.2-1992)-käsutõlk, utiliitprogrammid

Standardit vaadatakse regulaarselt üle, et kajastada tehnilisi muudatusi ja täiustusi. Uue versiooni avaldamiseks ja muudatuste lisamiseks võib mõnikord kuluda mitu aastat. See võib olla ebasoodne, kuid standardi ulatust arvestades arusaadav.

Viimastel aastatel on reaalajas töötlemisele lisatud laiendusi. Praegune versioon ilmus 2018. aasta alguses [3]. SibylFS [5] autorid on avaldanud ka palju märkusi POSIX standardile, et määrata kõrgema järgu loogikat ja interaktsioone.



Mida tähendab POSIX-ühilduvus?

Mõiste POSIX-ühilduv tähendab, et opsüsteem vastab kõigile POSIX-i kriteeriumidele. Operatsioonisüsteem võib UNIX -i programme käivitada algselt või rakenduse saab UNIX -süsteemist teise süsteemi teisaldada. Rakenduse teisaldamine UNIX -ist sihtoperatsioonisüsteemi on lihtne või vähemalt lihtsam kui siis, kui see ei toeta POSIX -i. Ohutuse tagamiseks peaks operatsioonisüsteem olema edukalt saavutanud POSIX -sertifikaadi [2]. See samm saavutatakse (kuluga), sooritades automaatse sertifitseerimistesti. Vastava testikomplekti leiate siit [11].

Alates 2021. aastast sisaldab POSIX-sertifikaadiga opsüsteemide loend IBM-i AIX-i, HP-UX-i HP-lt, IRIX-i SGI-lt, EulerOS-i [6] Huaweilt, Mac OS X-i Apple'ilt (alates 10.5 Leopardist), Solaris ja QNX Neutrino Oracle, Inspuri K-UX [11] ja Green Hills Tarkvara reaalajas toimiv INTEGRITY [15]. Praegu on ebaselge, kas kolme Solarise järglase, OpenSolaris, Illumos ja OpenIndiana uuemad versioonid on samuti klassifitseeritud täielikult POSIX-iga ühilduvateks. Need operatsioonisüsteemid olid POSIX-ühilduvad kuni POSIX 2001.

Teised operatsioonisüsteemid, mida peetakse enamasti (kuid mitte täielikult) POSIX-iga ühilduvateks, hõlmavad Androidi, BeOS-i, FreeBSD-d, Haiku, Linuxit (vt allpool) ja VMWare ESXi. Microsoft Windowsi jaoks pakub Cygwin suures osas POSIX-iga ühilduvat arendus- ja käituskeskkonda.

Kas Linux on POSIX-ühilduv?

Mõiste Linux viitab kogu Linuxi operatsioonisüsteemile, olenemata maitsest, näiteks Debian GNU/Linux, RedHat Linux, Linux Mint, Ubuntu Linux, Fedora ja CentOS. Täpsemalt öeldes on Linux lihtsalt selle kerneli nimi, mis on selle tasuta operatsioonisüsteemi põhikomponent.

Nagu Linus Torvalds kirjeldas raamatus Just For Fun [8], taotles ta Linuxi kerneli arendamiseks POSIX -standardi koopiat. See aitas tal rakendada samu mehhanisme, mida kasutatakse kaubanduslikes UNIX -süsteemides. Lisaks võimaldas see tal siduda Linuxi tuuma GNU tööriistadega, mis järgisid peamiselt sama lähenemisviisi. Ausalt öeldes on Linuxi süsteemi tarkvara loodud erinevatest allikatest, mis järgivad POSIX -standardit, kuid rakendavad mõnikord ka oma kontseptsioone. Samas näitab see aga ka mitmekesisust, millest koosneb Linux kui opsüsteem.

Üks näide sellest on käsurea argumentide kirjutamise viis. Kahe kriipsuga argumendid (nt –help) on GNU konventsioonid, samas kui POSIX -i käsud ei kasuta kunagi kahe kriipsuga argumente, vaid ainult ühte (nt -help). Linux oli algusest peale loodud GNU-d silmas pidades ja seetõttu sisaldavad käsud GNU-stiilis

argumente. POSIX-i vastavuse saavutamiseks on samm-sammult lisatud POSIX-stiilis argumente. Lõpliku otsuse teeb siiski arendaja. Tänase seisuga aktsepteerib enamik käske nii lühikesi kui ka pikki argumente või isegi argumente ilma kriipsudeta, näiteks käsk leida. Ausalt öeldes ei ole ühe süsteemi käskude vahel järjepidevust ja see võib olla probleemiks, kui kavatsete kasutada sama käsku teises UNIX-põhises süsteemis, eriti Linuxi, OS X-i ja Solarise vahel vahetamisel.

Praegu ei ole Linux kõrgete kulude tõttu POSIX-sertifikaadiga, välja arvatud kaks kaubanduslikku Linuxi distributsiooni Inspur K-UX [12] ja Huawei EulerOS [6]. Selle asemel peetakse Linuxit enamasti POSIX-iga ühilduvaks.

See hinnang on tingitud asjaolust, et peamised Linuxi distributsioonid järgivad POSIXi asemel Linuxi standardbaasi (LSB) [9]. LSB eesmärk on minimeerida erinevusi üksikute Linuxi distributsioonide vahel [14]. See viitab tarkvarasüsteemi struktuurile, sealhulgas Linuxi kernelis kasutatavale failisüsteemi hierarhia standardile (FHS). LSB põhineb POSIXi spetsifikatsioonil, ühtsel UNIXi spetsifikatsioonil (SUS) [10] ja mitmel teisel avatud standardil, kuid laiendab neid ka teatud valdkondades.

LSB-põhiste Linuxi distributsioonide hulka kuuluvad RedHat Linux, Debian GNU/Linux (2002-2015) ja Ubuntu (kuni 2015).

Arendamine POSIXi silmas pidades

POSIXi üksikasjalikumaks mõistmiseks soovitame hankida POSIX -standardi koopia ja see täielikult lugeda. Raamatu saate Open Groupi veebisaidilt. See nõuab registreerimistasu, kuid annab teile täieliku juurdepääsu sellele väärtuslikule ressursile. Standardid aitavad, kuna need võimaldavad teil tarkvara arendada nii, et see käituks ühtmoodi kõigil UNIX -i platvormidel.

Viited ja viited

Aitäh

Autor soovib tänada Axel Beckerti ja Veit Schielet abi ja nõuande eest selle artikli ettevalmistamisel.