Vai Linux ir saderīgs ar POSIX?

Is Linux Posix Compliant



Programmatūru raksta daudzi izstrādātāji ar dažādu pieredzi. Vispārīgi algoritmi ir pieejami saskaņā ar bezmaksas licenci vai ir zinātniski publicēti, un tie var būt pieejami arī bez maksas mācību nolūkos. Tā rezultātā ir dažādas ieviešanas un programmatūras versijas, kas atbilst dažādām vajadzībām. Lai šīs dažādās ieviešanas iespējas būtu gan savstarpēji aizvietojamas, gan modulāras, ir nepieciešama saskarņu un datu formātu standartizācija.

Īsi sakot, POSIX [1] dara tieši to UNIX un UNIX līdzīgām sistēmām (sīkāku vēsturi par šo tēmu skatiet Zak H rakstā [4]). Tas nosaka programmatūras apmaiņas saskarnes, izsaukšanas mehānismus un pārsūtītos datus, bet iekšējo ieviešanu atstāj programmatūras izstrādātāja vai uzturētāja ziņā. Mērķis ir apvienot visas dažādās UNIX dakšas un UNIX līdzīgās sistēmas tā, lai dažādas programmatūras ieviešanas iespējas varētu savstarpēji mijiedarboties. POSIX galvenā priekšrocība ir saistoša dokumentācija par šiem komponentiem - saskarnēm, mehānismiem un datiem - pieejama rakstiskā veidā.







Operētājsistēma, kas pilnībā atbilst POSIX standartam, ir klasificēta kā saderīga ar POSIX. Šajā rakstā mēs izskaidrojam, ko nozīmē POSIX, nosakām, vai Linux pieder šai kategorijai, un uzskaitām, kuri Linux komponenti ir jāizslēdz no šīs klasifikācijas.



Ko nozīmē termins POSIX?

POSIX ir portatīvās operētājsistēmas saskarnes saīsinājums. Kā īsi paskaidrots iepriekš, POSIX ir nosaukums standartiem, kas nepieciešami, lai saglabātu operētājsistēmu saderību. Kā norādīts [1], [tas] definē lietojumprogrammu saskarni (API) kopā ar komandrindas čaulām un utilītu saskarnēm, lai nodrošinātu programmatūras savietojamību ar Unix un citu operētājsistēmu variantiem. Pirmā POSIX versija tika publicēta 1988. gadā. Kopš tā laika Austinas Kopējo standartu pārskatīšanas grupa (pazīstama arī kā The Austin Group) [7] POSIX ir nepārtraukti paplašinājusi un atjauninājusi.



Kopš 2021. gada POSIX standartā ir šādas daļas:





  1. Pamatpakalpojumi (Ietver standarta ANSI C) (IEEE std 1003.1-1988)-Procesu izveide un vadība, Signāli, Failu un direktoriju darbības, Caurules, C bibliotēka, I/O portu saskarne un vadība, Procesa trigeri
  1. Paplašinājumi (Simboliskās saites)
  2. Reāllaika un I/O paplašinājumi (IEEE Std 1003.1b-1993)-prioritāšu plānošana, reāllaika signāli, pulksteņi un taimeri, semafora, ziņojumu nodošana, koplietojamā atmiņa, asinhronā un sinhronā I/O, atmiņas bloķēšanas saskarne
  3. Vītņu paplašinājumi (IEEE Std 1003.1c-1995)-pavedienu izveide, vadība un tīrīšana, pavedienu plānošana, pavedienu sinhronizācija, signālu apstrāde
  4. Vairāk paplašinājumu reāllaikā
  5. Drošības paplašinājumi (Piekļuves kontroles saraksti)
  1. Korpuss un komunālie pakalpojumi (IEEE Std 1003.2-1992)-komandu tulks, utilītprogrammas

Standarts tiek regulāri pārskatīts, lai atspoguļotu tehniskās izmaiņas un uzlabojumus. Dažreiz var paiet vairāki gadi, pirms tiek publicēta jauna versija un iekļautas izmaiņas. Tas var būt neizdevīgi, taču tas ir saprotams, ņemot vērā standarta darbības jomu.

Pēdējos gados ir pievienoti reāllaika apstrādes paplašinājumi. Pašreizējā versija tika izlaista 2018. gada sākumā [3]. SibylFS [5] autori ir arī publicējuši daudzas POSIX standarta anotācijas, lai noteiktu augstākas kārtas loģiku un mijiedarbību.



Ko nozīmē būt saderīgam ar POSIX?

Termins, kas ir saderīgs ar POSIX, nozīmē, ka operētājsistēma atbilst visiem POSIX kritērijiem. Operētājsistēma var darbināt UNIX programmas sākotnēji, vai arī lietojumprogrammu var pārnest no UNIX sistēmas uz citu sistēmu. Lietojumprogrammas pārnešana no UNIX uz mērķa operētājsistēmu ir vienkārša vai vismaz vieglāka nekā tad, ja tā neatbalsta POSIX. Lai būtu drošībā, operētājsistēmai vajadzētu būt sekmīgi iegūtai POSIX sertifikācijai [2]. Šis solis tiek sasniegts (par maksu), nokārtojot automatizētu sertifikācijas testu. Atbilstošo testa komplektu var atrast šeit [11].

Kopš 2021. gada POSIX sertificēto operētājsistēmu sarakstā ir AIX no IBM, HP-UX no HP, IRIX no SGI, EulerOS [6] no Huawei, Mac OS X no Apple (kopš 10.5 Leopard), Solaris un QNX Neutrino no Oracle, Inspur K-UX [11] un reāllaika OS INTEGRITY no Green Hills Software [15]. Pašlaik nav skaidrs, vai trīs Solaris pēcteču, OpenSolaris, Illumos un OpenIndiana, jaunākās versijas ir klasificētas arī kā pilnībā saderīgas ar POSIX. Šīs operētājsistēmas bija saderīgas ar POSIX līdz POSIX 2001.

Citas operētājsistēmas, kas tiek uzskatītas par lielākoties (bet ne pilnībā) saderīgām ar POSIX, ir Android, BeOS, FreeBSD, Haiku, Linux (skatīt zemāk) un VMWare ESXi. Operētājsistēmai Microsoft Windows Cygwin nodrošina ar POSIX saderīgu izstrādes un izpildlaika vidi.

Vai Linux ir saderīgs ar POSIX?

Termins Linux attiecas uz visu Linux operētājsistēmu neatkarīgi no garšas, piemēram, Debian GNU/Linux, RedHat Linux, Linux Mint, Ubuntu Linux, Fedora un CentOS. Precīzāk sakot, Linux ir tikai kodola nosaukums, kas ir šīs bezmaksas operētājsistēmas galvenā sastāvdaļa.

Kā Linus Torvalds aprakstīja grāmatā Just For Fun [8], lai izstrādātu Linux kodolu, viņš pieprasīja POSIX standarta kopiju. Tas viņam palīdzēja ieviest tos pašus mehānismus, kas tiek izmantoti UNIX komerciālajās sistēmās. Turklāt tas ļāva viņam sasaistīt Linux kodolu ar GNU rīkiem, kas galvenokārt izmantoja to pašu pieeju. Taisnības labad jāsaka, ka Linux sistēmas programmatūra ir iegūta no dažādiem avotiem, kas ievēro POSIX standartu, bet dažreiz arī īsteno savas koncepcijas. Tomēr tajā pašā laikā tas parāda arī daudzveidību, kas veido Linux kā operētājsistēmu.

Viens piemērs tam ir komandrindas argumentu rakstīšanas veids. Argumenti ar divām svītrām (piemēram, –help) ir GNU konvencijas, turpretī POSIX komandas nekad neizmanto divu domuzīmju argumentus, bet tikai vienu (piemēram, -help). Jau no paša sākuma Linux tika izstrādāts, ņemot vērā GNU, un tāpēc komandas satur GNU stilu

argumenti. Lai panāktu atbilstību POSIX, POSIX stila argumenti ir pievienoti pakāpeniski. Tomēr galīgo lēmumu pieņem izstrādātājs. No šodienas lielākā daļa komandu pieņem gan īsus, gan garus argumentus vai pat argumentus bez domuzīmēm, piemēram, atrašanas komandu. Taisnības labad jāsaka, ka vienas sistēmas komandām nav konsekvences, un tas var radīt problēmas, ja plānojat izmantot to pašu komandu citā UNIX balstītā sistēmā, it īpaši, pārslēdzoties starp Linux, OS X un Solaris.

Pagaidām Linux nav POSIX sertificēts augsto izmaksu dēļ, izņemot divus komerciālos Linux izplatījumus Inspur K-UX [12] un Huawei EulerOS [6]. Tā vietā tiek uzskatīts, ka Linux lielākoties ir saderīgs ar POSIX.

Šis novērtējums ir saistīts ar faktu, ka lielākie Linux izplatījumi ievēro Linux standarta bāzi (LSB), nevis POSIX [9]. LSB mērķis ir samazināt atšķirības starp atsevišķiem Linux izplatījumiem [14]. Tas attiecas uz programmatūras sistēmas struktūru, ieskaitot failu kodolu hierarhijas standartu (FHS), ko izmanto Linux kodolā. LSB ir balstīta uz POSIX specifikāciju, Vienoto UNIX specifikāciju (SUS) [10] un vairākiem citiem atvērtiem standartiem, bet arī paplašina tos noteiktās jomās.

LSB bāzes Linux izplatījumi ietver RedHat Linux, Debian GNU/Linux (2002-2015) un Ubuntu (līdz 2015. gadam).

Izstrādājot, ņemot vērā POSIX

Lai sīkāk izprastu POSIX, iesakām iegūt POSIX standarta kopiju un izlasīt to pilnībā. Grāmatu var iegūt Open Group vietnē. Tas prasa reģistrācijas maksu, bet nodrošina pilnīgu piekļuvi šim vērtīgajam resursam. Standarti palīdz, jo tie ļauj izstrādāt programmatūru tā, lai tā darbotos vienādi visās UNIX platformās.

Saites un atsauces

Paldies

Autore vēlas pateikties Akselim Bekertam un Veitai Šīlei par palīdzību un padomu, sagatavojot šo rakstu.