Je li Linux POSIX-kompatibilan?

Is Linux Posix Compliant



Softver pišu brojni programeri s različitim iskustvom. Opći algoritmi dostupni su pod besplatnom licencom ili su znanstveno objavljeni, a mogu biti dostupni i besplatno za potrebe učenja. To rezultira različitim implementacijama i verzijama softvera koje odgovaraju različitim potrebama. Standardizacija sučelja i formata podataka neophodna je kako bi ove različite implementacije bile zamjenjive i modularne.

Ukratko, POSIX [1] radi upravo to za sustave slične UNIX-u i UNIX-u (za detaljniju povijest o ovoj temi pogledajte Zak H-ov članak [4]). Definira sučelja za razmjenu, mehanizme pozivanja i prenesene podatke za softver, ali unutarnju implementaciju prepušta programeru ili održavatelju softvera. Cilj je ujediniti sve različite UNIX vilice i sustave slične UNIX-u na takav način da različite implementacije softvera mogu međusobno djelovati. Glavna prednost POSIX -a je što ima obvezujuću dokumentaciju za te komponente - sučelja, mehanizme i podatke - dostupnu u pisanom obliku.







Operativni sustav koji u cijelosti slijedi standard POSIX klasificiran je kao usklađen s POSIX-om. U ovom članku objašnjavamo što znači POSIX, utvrđujemo pripada li Linux ovoj kategoriji i nabrajam koje Linux komponente moraju biti isključene iz ove klasifikacije.



Što znači pojam POSIX?

POSIX je kratica za prijenosno sučelje operativnog sustava. Kao što je gore ukratko objašnjeno, POSIX je naziv za skup standarda koji su potrebni za održavanje kompatibilnosti između operativnih sustava. Kao što je navedeno u [1], [to] definira sučelje aplikacijskog programiranja (API), zajedno s oklopima naredbenog retka i uslužnim sučeljima, za kompatibilnost softvera s varijantama Unixa i drugih operativnih sustava. Prva verzija POSIX -a objavljena je 1988. Od tada je POSIX stalno proširivan i ažuriran od strane Austin Common Common Standards Revision Group (također poznate i kao Austin Group) [7].



Od 2021. godine standard POSIX sadrži sljedeće dijelove:





  1. Temeljne usluge (Uključuje standardni ANSI C) (IEEE std 1003.1-1988)-Stvaranje i upravljanje procesima, signali, operacije datoteka i direktorija, cijevi, biblioteka C, sučelje i upravljanje I/O portovima, okidači procesa
  1. Proširenja (Simbolične veze)
  2. Proširenja u stvarnom vremenu i U/I (IEEE Std 1003.1b-1993)-Prioritetno raspoređivanje, signali u stvarnom vremenu, satovi i mjerači vremena, semafori, prosljeđivanje poruka, zajednička memorija, asinkroni i sinkroni I/O, sučelje za zaključavanje memorije
  3. Proširenja niti (IEEE Std 1003.1c-1995)-Stvaranje niti, kontrola i čišćenje, Zakazivanje niti, Sinkronizacija niti, Rukovanje signalom
  4. Više proširenja u stvarnom vremenu
  5. Sigurnosna proširenja (Popisi za kontrolu pristupa)
  1. Shell i komunalije (IEEE Std 1003.2-1992)-Naredbeni tumač, pomoćni programi

Standard se redovito pregledava kako bi odražavao tehničke promjene i poboljšanja. Ponekad može proći nekoliko godina prije nego što se nova verzija objavi i promjene uključe. To može biti nepovoljno, ali je razumljivo s obzirom na opseg standarda.

Posljednjih godina dodana su proširenja za obradu u stvarnom vremenu. Trenutna verzija objavljena je početkom 2018. [3]. Autori SibylFS-a [5] također su objavili mnoge napomene na standard POSIX kako bi odredili logiku i interakcije višeg reda.



Što znači biti u skladu s POSIX-om?

Izraz usklađen s POSIX-om znači da operacijski sustav zadovoljava sve POSIX kriterije. Operacijski sustav može izvorno pokretati UNIX programe ili se aplikacija može prenijeti iz UNIX sustava na drugi sustav. Prijenos aplikacije iz UNIX -a na ciljani operacijski sustav lak je ili barem lakši nego ako ne podržava POSIX. Da bismo bili sigurni, operacijski sustav trebao je uspješno postići POSIX certifikat [2]. Ovaj korak postiže se (uz cijenu) polaganjem automatiziranog certifikacijskog testa. Odgovarajući testni paket može se pronaći ovdje [11].

Od 2021. popis operativnih sustava s certifikatom POSIX sadrži AIX iz IBM-a, HP-UX iz HP-a, IRIX iz SGI-a, EulerOS [6] iz Huawei-a, Mac OS X iz Apple-a (od 10.5 Leopard), Solaris i QNX Neutrino iz Oracle, Inspurov K-UX [11] i OSNOVNI INTEGRITET OS u stvarnom vremenu iz Green Hills Software-a [15]. Trenutno nije jasno jesu li novije verzije tri nasljednika Solarisa, OpenSolarisa, Illumosa i OpenIndiane, također klasificirane kao potpuno usklađene s POSIX-om. Ovi operativni sustavi bili su usklađeni s POSIX-om do POSIX-a 2001.

Drugi operacijski sustavi koji se smatraju uglavnom (ali ne u potpunosti) kompatibilnima s POSIX-om uključuju Android, BeOS, FreeBSD, Haiku, Linux (vidi dolje) i VMWare ESXi. Za Microsoft Windows, Cygwin pruža razvojno okruženje koje je u velikoj mjeri usklađeno s POSIX-om.

Je li Linux POSIX-kompatibilan?

Pojam Linux odnosi se na cijeli Linux operativni sustav, bez obzira na okus, kao što su Debian GNU/Linux, RedHat Linux, Linux Mint, Ubuntu Linux, Fedora i CentOS, na primjer. Točnije, Linux je samo naziv jezgre koja je jezgra ovog besplatnog operacijskog sustava.

Kako je Linus Torvalds opisao u knjizi Samo za zabavu [8], za razvoj Linux kernela zatražio je kopiju POSIX standarda. To mu je pomoglo u implementaciji istih mehanizama koji se koriste u komercijalnim UNIX sustavima. Nadalje, to mu je omogućilo povezivanje Linuxove jezgre s GNU alatima koji su uglavnom slijedili isti pristup. Da budemo iskreni, softver na Linux sustavu doprinosi iz različitih izvora koji poštuju standard POSIX, ali koji ponekad implementiraju i vlastite koncepte. Istodobno, ovo također pokazuje raznolikost koja čini Linux kao operativni sustav.

Jedan primjer za to je način na koji se ispisuju argumenti naredbenog retka. Argumenti s dvije crtice (npr. –Help) su GNU konvencije, dok POSIX naredbe nikada ne koriste argumente s dvije crtice, nego samo jednu (npr. -Help). Od samog početka, Linux je dizajniran s GNU-om na umu, pa zato naredbe sadrže GNU stil

argumenti. Da bi se postigla usklađenost s POSIX-om, argumenti u stilu POSIX-a dodani su korak po korak. Ipak, konačnu odluku donosi programer. Od danas većina naredbi prihvaća kratke i duge argumente, pa čak i argumente bez crtica, poput naredbe find, na primjer. Da budemo iskreni, nema dosljednosti između naredbi na jednom sustavu, a to može biti problem kada namjeravate koristiti istu naredbu na drugom sustavu temeljenom na UNIX-u, osobito pri prebacivanju između Linuxa, OS X-a i Solarisa.

Za sada, Linux nema POSIX certifikat zbog visokih troškova, osim za dvije komercijalne Linux distribucije Inspur K-UX [12] i Huawei EulerOS [6]. Umjesto toga, smatra se da je Linux uglavnom usklađen s POSIX-om.

Ova je procjena posljedica činjenice da velike distribucije Linuxa slijede Linux Standard Base (LSB) umjesto POSIX [9]. LSB ima za cilj smanjiti razlike između pojedinih distribucija Linuxa [14]. To se odnosi na strukturu softverskog sustava, uključujući Standard hijerarhije datotečnog sustava (FHS) koji se koristi u jezgri Linuxa. LSB se temelji na POSIX specifikaciji, Jedinstvenoj UNIX specifikaciji (SUS) [10] i nekoliko drugih otvorenih standarda, ali ih također proširuje na određena područja.

LSB-ove Linux distribucije uključuju RedHat Linux, Debian GNU/Linux (2002.-2015.) I Ubuntu (do 2015.), da spomenemo samo neke.

Razvoj s POSIX -om na umu

Da biste bolje razumjeli POSIX, preporučujemo da nabavite kopiju standarda POSIX i pročitate je u cijelosti. Knjigu možete nabaviti na web stranici Otvorene grupe. To zahtijeva pristojbu za registraciju, ali vam daje potpuni pristup ovom vrijednom resursu. Standardi pomažu jer vam omogućuju razvoj softvera na takav način da se ponaša na isti način na svim UNIX platformama.

Linkovi i reference

Hvala vam

Autor želi zahvaliti Axel Beckert i Veit Schiele na pomoći i savjetima pri pripremi ovog članka.