Er Linux POSIX-kompatibel?

Is Linux Posix Compliant



Programvare er skrevet av mange utviklere med ulik bakgrunn. Generelle algoritmer er tilgjengelige under en gratis lisens eller har blitt vitenskapelig publisert, og de kan også være tilgjengelige gratis for studier. Dette resulterer i forskjellige implementeringer og programvareversjoner som passer til en rekke behov. En standardisering av grensesnitt og dataformater er nødvendig for å gjøre disse forskjellige implementeringene både utskiftbare og modulære.

Kort sagt, POSIX [1] gjør akkurat det for UNIX og UNIX-lignende systemer (se Zak Hs artikkel [4] for en mer detaljert historie om dette emnet). Den definerer utvekslingsgrensesnitt, anropsmekanismer og overførte data for programvaren, men overlater den interne implementeringen til utvikleren eller vedlikeholderen av programvaren. Målet er å forene alle de forskjellige UNIX-gaflene og UNIX-lignende systemene på en slik måte at forskjellige programvareimplementeringer kan samhandle med hverandre. Den største fordelen med POSIX er å ha en bindende dokumentasjon for disse komponentene - grensesnitt, mekanismer og data - tilgjengelig i skriftlig form.







Et operativsystem som følger POSIX-standarden i sin helhet, er klassifisert som POSIX-kompatibelt. I denne artikkelen forklarer vi hva POSIX står for, bestemmer om Linux tilhører denne kategorien, og lister opp hvilke Linux -komponenter som må utelukkes fra denne klassifiseringen.



Hva står begrepet POSIX for?

POSIX er en forkortelse for Portable Operating System Interface. Som kort forklart ovenfor, er POSIX navnet på en samling standarder som kreves for å opprettholde kompatibilitet mellom operativsystemer. Som det fremgår av [1], definerer [det] applikasjonsprogrammeringsgrensesnittet (API), sammen med kommandolinjeskall og verktøygrensesnitt, for programvarekompatibilitet med varianter av Unix og andre operativsystemer. Den første versjonen av POSIX ble utgitt i 1988. Siden den gang har POSIX blitt kontinuerlig utvidet og oppdatert av Austin Common Standards Revision Group (også kjent som The Austin Group) [7].



Fra og med 2021 inneholder POSIX -standarden følgende deler:





  1. Kjernetjenester (Inkluderer standard ANSI C) (IEEE std 1003.1-1988)-Opprettelse og kontroll av prosesser, signaler, fil- og katalogoperasjoner, rør, C-bibliotek, I/O-portgrensesnitt og kontroll, prosessutløsere
  1. Utvidelser (Symboliske koblinger)
  2. Sanntid og I/O-utvidelser (IEEE Std 1003.1b-1993)-Prioritetsplanlegging, sanntidsignaler, klokker og tidtakere, semaforer, meldingsoverføring, delt minne, asynkron og synkron I/O, grensesnitt for minnelås
  3. Trådforlengelser (IEEE Std 1003.1c-1995)-Trådopprettelse, kontroll og opprydding, trådplanlegging, trådssynkronisering, signalhåndtering
  4. Flere utvidelser i sanntid
  5. Sikkerhetsutvidelser (Lister over tilgangskontroll)
  1. Shell og verktøy (IEEE Std 1003.2-1992)-Kommandotolk, verktøyprogrammer

Standarden gjennomgås jevnlig for å gjenspeile tekniske endringer og forbedringer. Noen ganger kan det ta flere år før en ny versjon blir publisert og endringene er innarbeidet. Dette kan være ufordelaktig, men det er forståelig gitt omfanget av standarden.

De siste årene har utvidelser til sanntidsbehandling blitt lagt til. Den nåværende versjonen ble utgitt tidlig i 2018 [3]. Forfatterne av SibylFS [5] har også publisert mange kommentarer til POSIX-standarden for å bestemme logikk og interaksjoner av høyere orden.



Hva betyr det å være POSIX-kompatibel?

Begrepet POSIX-kompatibelt betyr at et operativsystem oppfyller alle POSIX-kriteriene. Et operativsystem kan kjøre UNIX -programmer innfødt, eller et program kan portes fra UNIX -systemet til et annet system. Å portere et program fra UNIX til måloperativsystemet er enkelt, eller i det minste enklere, enn hvis det ikke støtter POSIX. For å være på den sikre siden, burde et operativsystem ha oppnådd POSIX -sertifisering [2]. Dette trinnet oppnås (til en pris) ved å bestå en automatisert sertifiseringstest. Den tilsvarende testsuiten finner du her [11].

Fra og med 2021 inneholder listen over POSIX-sertifiserte operativsystemer AIX fra IBM, HP-UX fra HP, IRIX fra SGI, EulerOS [6] fra Huawei, Mac OS X fra Apple (siden 10.5 Leopard), Solaris og QNX Neutrino fra Oracle, Inspurs K-UX [11], og sanntids OS-INTEGRITET fra Green Hills Software [15]. Det er foreløpig uklart om nyere versjoner av de tre Solaris-etterfølgerne, OpenSolaris, Illumos og OpenIndiana, også er klassifisert som fullt POSIX-kompatible. Disse operativsystemene var POSIX-kompatible frem til POSIX 2001.

Andre operativsystemer som er sett på som for det meste (men ikke fullt ut) POSIX-kompatible inkluderer Android, BeOS, FreeBSD, Haiku, Linux (se nedenfor) og VMWare ESXi. For Microsoft Windows tilbyr Cygwin et stort sett POSIX-kompatibelt utviklings- og kjøretidsmiljø.

Er Linux POSIX-kompatibel?

Begrepet Linux refererer til hele Linux -operativsystemet, uavhengig av smak, for eksempel Debian GNU/Linux, RedHat Linux, Linux Mint, Ubuntu Linux, Fedora og CentOS, for eksempel. For å være presis, er Linux bare navnet på kjernen som er kjernekomponenten i dette gratis operativsystemet.

Som Linus Torvalds beskrev i boken Just For Fun [8], for å utvikle Linux -kjernen, ba han om en kopi av POSIX -standarden. Dette hjalp ham med å implementere de samme mekanismene som brukes i kommersielle UNIX -systemer. Videre tillot dette ham å koble Linux -kjernen med GNU -verktøyene som hovedsakelig fulgte den samme tilnærmingen. For å være rettferdig, er programvaren på et Linux -system bidratt fra en rekke kilder som respekterer POSIX -standarden, men som også noen ganger implementerer sine egne konsepter. Samtidig viser dette imidlertid også mangfoldet som utgjør Linux som et operativsystem.

Et eksempel på dette er måten kommandolinjeargumenter skrives på. Argumenter med to bindestreker (f.eks. –Hjelp) er GNU -konvensjoner, mens POSIX -kommandoer aldri bruker to -binders -argumenter, men i stedet bare en enkelt (f.eks. -Hjelp). Helt fra starten ble Linux designet med tanke på GNU, og det er derfor kommandoene inneholder GNU-stil

argumenter. For å oppnå POSIX-samsvar har argumenter i POSIX-stil blitt lagt til trinn for trinn. Den endelige avgjørelsen er imidlertid tatt av utvikleren. Fra og med i dag godtar de fleste kommandoer både korte og lange argumenter, eller til og med argumenter uten bindestreker, for eksempel finn -kommandoen. For å være rettferdig er det ingen konsistens mellom kommandoene på ett system, og dette kan være et problem når du har tenkt å bruke den samme kommandoen på et annet UNIX-basert system, spesielt når du bytter mellom Linux, OS X og Solaris.

Foreløpig er Linux ikke POSIX-sertifisert på grunn av høye kostnader, bortsett fra de to kommersielle Linux-distribusjonene Inspur K-UX [12] og Huawei EulerOS [6]. I stedet blir Linux sett på som for det meste POSIX-kompatibelt.

Denne vurderingen skyldes det faktum at store Linux -distribusjoner følger Linux Standard Base (LSB) i stedet for POSIX [9]. LSB har som mål å minimere forskjellene mellom individuelle Linux -distribusjoner [14]. Dette refererer til programvarens systemstruktur, inkludert Filesystem Hierarchy Standard (FHS) som brukes i Linux -kjernen. LSB er basert på POSIX -spesifikasjonen, Single UNIX Specification (SUS) [10] og flere andre åpne standarder, men utvider dem også på visse områder.

LSB-baserte Linux-distribusjoner inkluderer RedHat Linux, Debian GNU/Linux (2002-2015) og Ubuntu (til 2015), for å nevne noen.

Utvikler med tanke på POSIX

For å forstå POSIX mer detaljert, anbefaler vi å skaffe en kopi av POSIX -standarden og lese den i sin helhet. Du kan få boken fra nettstedet Open Group. Dette krever en registreringsavgift, men gir deg full tilgang til denne verdifulle ressursen. Standarder hjelper siden de lar deg utvikle programvare på en slik måte at den oppfører seg på samme måte på alle UNIX -plattformer.

Lenker og referanser

Takk skal du ha

Forfatteren vil takke Axel Beckert og Veit Schiele for hjelpen og rådene under utarbeidelsen av denne artikkelen.