Posix

Er Linux POSIX-kompatibel?

Er Linux POSIX-kompatibel?

Programvare er skrevet av mange utviklere med forskjellige bakgrunner. Generelle algoritmer er tilgjengelige under en gratis lisens eller har blitt publisert vitenskapelig, og de kan også være tilgjengelige gratis for studiearbeid. 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 fortalt gjør POSIX [1] 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 programvareimplementasjoner 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, avgjør 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 operativsystemene. Som nevnt i [1], “[it] definerer applikasjonsprogrammeringsgrensesnittet (API), sammen med kommandolinjeskall og grensesnitt for programvarekompatibilitet med varianter av Unix og andre operativsystemer.”Den første versjonen av POSIX ble utgitt i 1988. Siden den gang har POSIX kontinuerlig blitt 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) - Prosessoppretting og kontroll, signaler, fil- og katalogoperasjoner, rør, C-bibliotek, I / O-portgrensesnitt og kontroll, prosessutløsere
  1. Utvidelser (Symbolske lenker)
  2. Sanntids- og I / O-utvidelser (IEEE Std 1003.1b-1993) - Prioritert planlegging, sanntidssignaler, klokker og tidtakere, semaforer, meldingsoverføring, delt minne, asynkron og synkron I / U, minnelåsingsgrensesnitt
  3. Trådforlengelser (IEEE Std 1003.1c-1995) - Trådoppretting, kontroll og opprydding, trådplanlegging, trådsynkronisering, signalhåndtering
  4. Flere utvidelser i sanntid
  5. Sikkerhetsutvidelser (Tilgangskontrollister)
  1. Skall og verktøy (IEEE Std 1003.2-1992) - Kommandotolk, verktøyprogrammer

Standarden blir regelmessig gjennomgått for å gjenspeile tekniske endringer og forbedringer. Noen ganger kan det ta flere år før en ny versjon publiseres og endringene blir innlemmet. Dette kan være ufordelaktig, men det er forståelig med tanke på standardens omfang.

De siste årene har utvidelser til sanntidsbehandling blitt lagt til. Den nåværende versjonen ble utgitt tidlig på 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?

Uttrykket “POSIX-kompatibel” betyr at et operativsystem oppfyller alle POSIX-kriteriene. Et operativsystem kan kjøre UNIX-programmer naturlig, eller et program 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. Tilsvarende testpakke 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 INTEGRITY 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 gir Cygwin et stort sett POSIX-kompatibelt utviklings- og kjøretidsmiljø.

Er Linux POSIX-kompatibel?

Uttrykket “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 samme tilnærming. 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 operativsystem.

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

argumenter. For å oppnå POSIX-samsvar er argumenter i POSIX-stil lagt til trinn for trinn. Likevel tas den endelige avgjørelsen av utvikleren. Per i dag godtar de fleste kommandoer både korte og lange argumenter, eller til og med argumenter uten bindestreker, for eksempel "finn" -kommandoen, for eksempel. For å være rettferdig er det ingen samsvar 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-kompatibel.

Denne vurderingen skyldes 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 programvaresystemstrukturen, inkludert FHS (File System Hierarchy Standard) 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å i visse områder.

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

Utvikler med tanke på POSIX

For å forstå POSIX mer detaljert, anbefaler vi å skaffe deg en kopi av POSIX-standarden og lese den i sin helhet. Du kan få boken fra Open Group-nettstedet. 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 forbereder denne artikkelen.

Installer det siste OpenRA-strategispillet på Ubuntu Linux
OpenRA er en Libre / Free Real Time Strategy-spillmotor som gjenskaper de tidlige Westwood-spillene som den klassiske Command & Conquer: Red Alert. Di...
Installer nyeste Dolphin Emulator for Gamecube & Wii på Linux
Dolphin Emulator lar deg spille de valgte Gamecube- og Wii-spillene dine på Linux Personal Computers (PC). Som en fritt tilgjengelig og åpen kildekod...
Hvordan bruke GameConqueror Cheat Engine i Linux
Artikkelen dekker en guide om bruk av GameConqueror-juksemotoren i Linux. Mange brukere som spiller spill på Windows bruker ofte "Cheat Engine" -appli...