Posix

Är Linux POSIX-kompatibel?

Är Linux POSIX-kompatibel?

Programvara är skriven av många utvecklare med olika bakgrunder. Allmänna algoritmer är tillgängliga under en gratis licens eller har publicerats vetenskapligt, och de kan också vara tillgängliga gratis för studier. Detta resulterar i olika implementeringar och programvaruversioner som passar olika behov. En standardisering av gränssnitt och dataformat är nödvändig för att göra dessa olika implementeringar både utbytbara och modulära.

Kort sagt gör POSIX [1] exakt det för UNIX och UNIX-liknande system (se Zak Hs artikel [4] för en mer detaljerad historik om detta ämne). Den definierar utbytesgränssnitt, anropsmekanismer och överförda data för programvaran men lämnar den interna implementeringen till utvecklaren eller underhållaren av programvaran. Målet är att förena alla UNIX-gafflar och UNIX-liknande system på ett sådant sätt att olika programvaruimplementeringar kan interagera med varandra. Den största fördelen med POSIX är att ha en bindande dokumentation för dessa komponenter - gränssnitt, mekanismer och data - tillgänglig i skriftlig form.

Ett operativsystem som följer POSIX-standarden i sin helhet klassificeras som POSIX-kompatibelt. I den här artikeln förklarar vi vad POSIX står för, avgör om Linux tillhör denna kategori och listar vilka Linux-komponenter som ska undantas från denna klassificering.

Vad betyder termen POSIX för?

POSIX är en förkortning för Portable Operating System Interface. Som kort förklarats ovan är POSIX namnet på en samling standarder som krävs för att upprätthålla kompatibilitet mellan operativsystem. Som anges i [1] definierar “[it] applikationsprogrammeringsgränssnittet (API), tillsammans med kommandoradsskal och verktygsgränssnitt, för mjukvarukompatibilitet med varianter av Unix och andra operativsystem.”Den första versionen av POSIX publicerades 1988. Sedan dess har POSIX kontinuerligt utökats och uppdaterats av Austin Common Standards Revision Group (även känt helt enkelt som The Austin Group) [7].

Från och med 2021 innehåller POSIX-standarden följande delar:

  1. Kärn tjänster (Innehåller standard ANSI C) (IEEE std 1003.1-1988) - Processskapande och kontroll, signaler, fil- och katalogoperationer, rör, C-bibliotek, I / O-portgränssnitt och kontroll, processutlösare
  1. Tillägg (Symboliska länkar)
  2. Realtids- och I / O-tillägg (IEEE Std 1003.1b-1993) - Prioriterad schemaläggning, realtidssignaler, klockor och timers, semaforer, meddelandeöverföring, delat minne, asynkron och synkron I / O, minneslåsningsgränssnitt
  3. Trådförlängningar (IEEE Std 1003.1c-1995) - Trådskapande, kontroll och sanering, trådplanering, trådsynkronisering, signalhantering
  4. Fler tillägg i realtid
  5. Säkerhetstillägg (Åtkomstkontrollistor)
  1. Skal och verktyg (IEEE Std 1003.2-1992) - Kommandotolk, verktygsprogram

Standarden granskas regelbundet för att återspegla tekniska förändringar och förbättringar. Ibland kan det ta flera år innan en ny version publiceras och ändringarna införlivas. Detta kan vara ofördelaktigt, men det är förståeligt med tanke på standardens omfattning.

Under de senaste åren har tillägg till realtidsbehandling lagts till. Den nuvarande versionen släpptes i början av 2018 [3]. Författarna till SibylFS [5] har också publicerat många kommentarer till POSIX-standarden för att bestämma logik och interaktioner av högre ordning.

Vad betyder det att vara POSIX-kompatibel?

Termen "POSIX-kompatibel" betyder att ett operativsystem uppfyller alla POSIX-kriterier. Ett operativsystem kan köra UNIX-program inbyggt, eller en applikation kan överföras från UNIX-systemet till ett annat system. Att portera en applikation från UNIX till måloperativsystemet är enkelt eller åtminstone lättare än om det inte stöder POSIX. För att vara på den säkra sidan borde ett operativsystem framgångsrikt ha uppnått POSIX-certifiering [2]. Detta steg uppnås (till en kostnad) genom att klara ett automatiserat certifieringstest. Motsvarande testsvit finns här [11].

Från och med 2021 innehåller listan över POSIX-certifierade operativsystem AIX från IBM, HP-UX från HP, IRIX från SGI, EulerOS [6] från Huawei, Mac OS X från Apple (sedan 10.5 Leopard), Solaris och QNX Neutrino från Oracle, Inspurs K-UX [11] och OS-INTEGRITET i realtid från Green Hills Software [15]. Det är för närvarande oklart om nyare versioner av de tre Solaris-efterträdarna, OpenSolaris, Illumos och OpenIndiana, också klassificeras som helt POSIX-kompatibla. Dessa operativsystem var POSIX-kompatibla fram till POSIX 2001.

Andra operativsystem som ses som mest (men inte helt) POSIX-kompatibla inkluderar Android, BeOS, FreeBSD, Haiku, Linux (se nedan) och VMWare ESXi. För Microsoft Windows tillhandahåller Cygwin en i stort sett POSIX-kompatibel utvecklings- och körtidsmiljö.

Är Linux POSIX-kompatibel?

Termen ”Linux” avser hela Linux-operativsystemet, oavsett smak, såsom Debian GNU / Linux, RedHat Linux, Linux Mint, Ubuntu Linux, Fedora och CentOS, till exempel. För att vara exakt är Linux bara namnet på kärnan som är kärnkomponenten i detta gratis operativsystem.

Som Linus Torvalds beskrev i boken "Just For Fun" [8], för att utveckla Linux-kärnan, begärde han en kopia av POSIX-standarden. Detta hjälpte honom att implementera samma mekanismer som används i kommersiella UNIX-system. Dessutom tillät detta honom att länka Linux-kärnan med GNU-verktygen som huvudsakligen följde samma tillvägagångssätt. För att vara rättvis har mjukvaran på ett Linux-system bidragit från en mängd olika källor som respekterar POSIX-standarden, men som ibland också implementerar sina egna koncept. Samtidigt visar detta dock också mångfalden som utgör Linux som operativsystem.

Ett exempel på detta är hur kommandoradsargument skrivs. Argument med två streck (t.ex.g., ”-Hjälp”) är GNU-konventioner, medan POSIX-kommandon använder aldrig två streck-argument utan istället bara en enda (e.g., "-hjälp"). Redan från början designades Linux med GNU i åtanke, och det är därför som kommandona innehåller GNU-stil

argument. För att uppnå POSIX-efterlevnad har argument i POSIX-stil lagts till steg för steg. Ändå fattas det slutliga beslutet av utvecklaren. Från och med idag accepterar de flesta kommandon både korta och långa argument, eller till och med argument utan bindestreck, till exempel kommandot "hitta", till exempel. För att vara rättvis finns det ingen enhetlighet mellan kommandona på ett system, och det kan vara ett problem när du tänker använda samma kommando på ett annat UNIX-baserat system, särskilt när du växlar mellan Linux, OS X och Solaris.

För närvarande är Linux inte POSIX-certifierat på grund av höga kostnader, förutom de två kommersiella Linux-distributionerna Inspur K-UX [12] och Huawei EulerOS [6]. I stället ses Linux som mest POSIX-kompatibelt.

Denna bedömning beror på att större Linux-distributioner följer Linux Standard Base (LSB) istället för POSIX [9]. LSB syftar "att minimera skillnaderna mellan enskilda Linux-distributioner" [14]. Detta avser mjukvarusystemstrukturen, inklusive FHS (Filesystem Hierarchy Standard) som används i Linux-kärnan. LSB baseras på POSIX-specifikationen, Single UNIX Specification (SUS) [10] och flera andra öppna standarder, men utökar dem också inom vissa områden.

LSB-baserade Linux-distributioner inkluderar RedHat Linux, Debian GNU / Linux (2002-2015) och Ubuntu (fram till 2015), för att nämna några.

Utvecklar med POSIX i åtanke

För att förstå POSIX mer detaljerat rekommenderar vi att du skaffar en kopia av POSIX-standarden och läser den fullständigt. Du kan hämta boken från Open Groups webbplats. Detta kräver en registreringsavgift men ger dig full tillgång till denna värdefulla resurs. Standarder hjälper eftersom de tillåter dig att utveckla programvara på ett sådant sätt att den beter sig på samma sätt på alla UNIX-plattformar.

Länkar och referenser

Tack

Författaren vill tacka Axel Beckert och Veit Schiele för deras hjälp och råd när han förbereder denna artikel.

De bästa Oculus App Lab-spelen
Om du är Oculus-headsetägare måste du vara förtjust i sidoladdning. Sideladdning är processen för att installera icke-butiksinnehåll på ditt headset. ...
Topp 10 spel att spela på Ubuntu
Windows-plattformen har varit en av de dominerande plattformarna för spel på grund av den enorma andelen spel som utvecklas idag för att stödja Window...
5 bästa arkadspel för Linux
Numera är datorer seriösa maskiner som används för spel. Om du inte kan få den nya poängen vet du vad jag menar. I det här inlägget kommer du att känn...