Programvare er skrevet av mange utviklere med forskjellige bakgrunner. Generelle algoritmer er tilgjengelige under en gratis lisens eller er 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 utvekslingsgrensesnittene, samtalemekanismer 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 systemer 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-kompatibel. I denne artikkelen forklarer vi hva POSIX står for, bestemme om Linux tilhører denne kategorien, og liste over hvilke Linux -komponenter som må utelukkes fra denne klassifiseringen.
Hva står begrepet posix for?
POSIX er en forkortelse for bærbart operativsystemgrensesnitt. Som kort forklart ovenfor, er POSIX navnet på en samling av standarder som kreves for å opprettholde kompatibilitet mellom operativsystemer. Som angitt i [1], “[IT] definerer applikasjonsprogrammeringsgrensesnittet (API), sammen med kommandolinjeskall og verktøygrensesnitt, for programvarekompatibilitet med varianter av UNIX og andre operativsystemer.”Den første versjonen av Posix ble publisert i 1988. Siden den gang har POSIX kontinuerlig blitt utvidet og oppdatert av Austin Common Standards Revision Group (også kjent ganske enkelt som Austin -gruppen) [7].
Fra 2021 inneholder POSIX -standarden følgende deler:
Standarden blir regelmessig gjennomgått for å gjenspeile tekniske endringer og forbedringer. Noen ganger kan det ta flere år før en ny versjon blir publisert og endringene er integrert. Dette kan være ugunstig, men det er forståelig gitt omfanget av standarden.
De siste årene er 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 merknader til POSIX-standarden for å bestemme høyere orden logikk og interaksjoner.
Hva betyr det å være posix-kompatibel?
Begrepet "POSIX-kompatibel" betyr at et operativsystem oppfyller alle POSIX-kriteriene. Et operativsystem kan kjøre UNIX -programmer innfødt, eller en applikasjon kan porteres fra UNIX -systemet til et annet system. Å portere en applikasjon fra UNIX til måloperativsystemet er enkelt, eller i det minste enklere, enn om det ikke støtter POSIX. For å være på den sikre siden, burde et operativsystem ha oppnådd POSIX -sertifiseringen [2]. Dette trinnet oppnås (til en pris) ved å bestå en automatisert sertifiseringstest. Den tilsvarende testsuiten finner du her [11].
Fra 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, er klassifisert som fullt Posix-kompatibel, også. Disse operativsystemene var POSIX-kompatible til POSIX 2001.
Andre operativsystemer som blir sett på som mest (men ikke fullt) POSIX-kompatibel inkluderer Android, Beos, FreeBSD, Haiku, Linux (se nedenfor) og VMware ESXi. For Microsoft Windows gir Cygwin en stort sett posix-kompatibel utvikling 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 beskrevet i boka “Just For Fun” [8], for å utvikle Linux -kjernen, ba han om en kopi av POSIX -standarden. Dette hjalp ham til å implementere de samme mekanismene som brukes i kommersielle UNIX -systemer. Videre tillot dette ham å koble Linux -kjernen til GNU -verktøyene som hovedsakelig fulgte den samme tilnærmingen. For å være rettferdig, blir 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 er skrevet. Argumenter med to streker (e.g., “-Hjelp”) er GNU-konvensjoner, mens POSIX-kommandoer aldri bruker to-dash-argumenter, men i stedet bare en enkelt (e.g., "-hjelp"). Helt fra starten ble Linux designet med GNU i tankene, og det er grunnen til at kommandoene inneholder GNU-stil
argumenter. For å oppnå POSIX-samsvar, har argumenter for posix-stil blitt lagt til trinn for trinn. Fortsatt tas den endelige avgjørelsen av utvikleren. Per i dag aksepterer de fleste kommandoer både korte og lange argumenter, eller til og med argumenter uten noen streker, for eksempel “Finn” -kommandoen, for eksempel. 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 inspirerer K-UX [12] og Huawei Euleros [6]. I stedet blir Linux sett på som stort sett Posix-kompatibel.
Denne vurderingen skyldes det faktum at store Linux -distribusjoner følger Linux Standard Base (LSB) i stedet for POSIX [9]. LSB sikter “å minimere forskjellene mellom individuelle Linux -distribusjoner” [14]. Dette refererer til programvaresystemstrukturen, inkludert filsystemets hierarki -standard (FHS) brukt i Linux -kjernen. LSB er basert på POSIX -spesifikasjonen, Single Unix -spesifikasjonen (SUS) [10], og flere andre åpne standarder, men utvider dem også i visse områder.
LSB-baserte Linux-distribusjoner inkluderer Redhat Linux, Debian GNU/Linux (2002-2015) og Ubuntu (til 2015), for å nevne noen få.
Utvikle med Posix i tankene
For å forstå Posix mer detaljert, anbefaler vi å skaffe en kopi av POSIX -standarden og lese den i sin helhet. Du kan få boka fra nettstedet Open Group. Dette krever et registreringsgebyr, 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 deres hjelp og råd mens han utarbeidet denne artikkelen.