A Linux POSIX-kompatibilis?

Is Linux Posix Compliant



A szoftvert számos, különböző hátterű fejlesztő írja. Az általános algoritmusok ingyenes licenc alapján állnak rendelkezésre, vagy tudományosan közzétették őket, és tanulási célokra is ingyenesen elérhetők. Ez különböző megvalósításokat és szoftververziókat eredményez, amelyek megfelelnek a különböző igényeknek. Az interfészek és az adatformátumok szabványosítása szükséges ahhoz, hogy ezek a különböző megvalósítások felcserélhetők és modulárisak legyenek.

Röviden, a POSIX [1] pontosan ezt teszi a UNIX és UNIX-szerű rendszerek esetében (lásd Zak H cikkét [4] a témával kapcsolatos részletesebb előzményekért). Meghatározza a szoftvercsere -interfészeket, hívómechanizmusokat és átvitt adatokat, de a belső megvalósítást a szoftver fejlesztőjére vagy karbantartójára bízza. A cél az, hogy egyesítse a különféle UNIX villákat és UNIX-szerű rendszereket oly módon, hogy a különböző szoftver implementációk kölcsönhatásba léphessenek egymással. A POSIX fő előnye, hogy ezekhez az összetevőkhöz - interfészek, mechanizmusok és adatok - kötelező dokumentáció áll rendelkezésre írásban.







A POSIX szabványt teljes egészében követő operációs rendszer POSIX-kompatibilisnek minősül. Ebben a cikkben elmagyarázzuk, mit jelent a POSIX, meghatározzuk, hogy a Linux ebbe a kategóriába tartozik -e, és felsoroljuk, mely Linux -összetevőket kell kizárni ebből a besorolásból.



Mit jelent a POSIX kifejezés?

A POSIX a hordozható operációs rendszer interfész rövidítése. Amint azt a fentiekben röviden kifejtettük, a POSIX az olyan szabványok gyűjteményének neve, amelyek szükségesek az operációs rendszerek közötti kompatibilitás fenntartásához. Amint az [1] -ben le van írva, [ez] meghatározza az alkalmazásprogramozási felületet (API), valamint a parancssori parancsértelmezőket és a segédprogramok interfészeit, hogy kompatibilis legyen a Unix és más operációs rendszerek változataival. A POSIX első verziója 1988 -ban jelent meg. Azóta a POSIX -ot folyamatosan bővítette és frissítette az Austin Common Standards Revision Group (más néven egyszerűen The Austin Group) [7].



2021 -től a POSIX szabvány a következő részeket tartalmazza:





  1. Alapszolgáltatások (Standard ANSI C szabványt tartalmaz) (IEEE std 1003.1-1988)-Folyamatok létrehozása és vezérlése, jelek, fájl- és címtárműveletek, csövek, C könyvtár, I/O port interfész és vezérlés, folyamatindítók
  1. Bővítmények (Szimbolikus linkek)
  2. Valós idejű és I/O bővítmények (IEEE Std 1003.1b-1993)-Elsőbbségi ütemezés, valós idejű jelek, órák és időzítők, szemaforok, üzenetátadás, megosztott memória, aszinkron és szinkron I/O, memóriazáró interfész
  3. Szálak kiterjesztései (IEEE Std 1003.1c-1995)-Szálak létrehozása, vezérlése és tisztítása, menetek ütemezése, szálak szinkronizálása, jelkezelés
  4. Több valós idejű bővítmény
  5. Biztonsági bővítmények (Beléptető listák)
  1. Shell és segédprogramok (IEEE Std 1003.2-1992)-Parancs tolmács, segédprogramok

A szabványt rendszeresen felülvizsgálják, hogy tükrözze a technikai változásokat és fejlesztéseket. Néha több évbe is beletelhet, amíg egy új verzió megjelenik, és a módosításokat beépítik. Ez hátrányos lehet, de a szabvány hatályát tekintve érthető.

Az elmúlt években a valós idejű feldolgozások bővítéseit adták hozzá. A jelenlegi verzió 2018 elején jelent meg [3]. A SibylFS [5] szerzői számos megjegyzést is publikáltak a POSIX szabványhoz a magasabb rendű logika és kölcsönhatások meghatározása érdekében.



Mit jelent a POSIX-kompatibilitás?

A POSIX-kompatibilis kifejezés azt jelenti, hogy egy operációs rendszer megfelel minden POSIX kritériumnak. Egy operációs rendszer natív UNIX programokat futtathat, vagy egy alkalmazás átvihető a UNIX rendszerből egy másik rendszerbe. Egy alkalmazás UNIX -ból a cél operációs rendszerbe történő átvitele egyszerű, vagy legalábbis könnyebb, mint ha nem támogatja a POSIX -ot. A biztonság kedvéért az operációs rendszernek sikeresen el kellett érnie a POSIX tanúsítványt [2]. Ezt a lépést (költséggel) automatizált tanúsítási teszt letételével érik el. A megfelelő tesztcsomag itt található [11].

2021-től a POSIX-tanúsítvánnyal rendelkező operációs rendszerek listája tartalmazza az AIX-t az IBM-től, a HP-UX-t a HP-tól, az IRIX-t az SGI-től, az EulerOS-t [6] a Huawei-től, a Mac OS X-et az Apple-től (10.5 Leopard óta), a Solaris-t és a QNX Neutrino-t Az Oracle, az Inspur K-UX [11] és a Green Hills Software valós idejű operációs rendszer-integritása [15]. Jelenleg nem világos, hogy a három Solaris utód, az OpenSolaris, az Illumos és az OpenIndiana újabb verziói is teljesen POSIX-kompatibilisnek minősülnek-e. Ezek az operációs rendszerek POSIX-kompatibilisek voltak egészen POSIX 2001-ig.

Egyéb, többnyire (de nem teljesen) POSIX-kompatibilisnek tekintett operációs rendszerek közé tartozik az Android, a BeOS, a FreeBSD, a Haiku, a Linux (lásd alább) és a VMWare ESXi. A Microsoft Windows számára a Cygwin nagyrészt POSIX-kompatibilis fejlesztési és futási környezetet biztosít.

A Linux POSIX-kompatibilis?

A Linux kifejezés ízétől függetlenül a teljes Linux operációs rendszert jelenti, például a Debian GNU/Linux, a RedHat Linux, a Linux Mint, az Ubuntu Linux, a Fedora és a CentOS. Pontosabban: a Linux csak a kernel neve, amely ennek az ingyenes operációs rendszernek az alapvető összetevője.

Ahogy Linus Torvalds leírta a Just For Fun című könyvben [8], a Linux -kernel kifejlesztéséhez kérte a POSIX szabvány másolatát. Ez segített neki ugyanazon mechanizmusok megvalósításában, amelyeket a kereskedelmi UNIX rendszerekben használnak. Továbbá ez lehetővé tette számára, hogy összekapcsolja a Linux kernelt a GNU eszközökkel, amelyek főként ugyanazt a megközelítést követték. Az igazat megvallva, a Linux rendszeren található szoftverek különféle forrásokból származnak, amelyek tiszteletben tartják a POSIX szabványt, de néha megvalósítják saját elképzeléseiket is. Ugyanakkor azonban ez is mutatja a Linuxot operációs rendszerként alkotó sokféleséget.

Ennek egyik példája a parancssori argumentumok írásának módja. A két kötőjelet tartalmazó érvek (pl. –Help) a GNU konvenciói, míg a POSIX parancsok soha nem használnak két kötőjelből álló argumentumokat, hanem csak egyet (pl. -Help). A Linuxot a kezdetektől fogva a GNU szem előtt tartásával tervezték, ezért a parancsok GNU-stílust tartalmaznak

érvek. A POSIX megfelelőség elérése érdekében lépésről lépésre hozzáadták a POSIX-stílusú érveket. Ennek ellenére a végső döntést a fejlesztő hozza meg. A mai naptól kezdve a legtöbb parancs elfogadja a rövid és hosszú argumentumokat, vagy akár kötőjel nélküli érveket, például a find parancsot. Az igazat megvallva, egy rendszer parancsai között nincs összhang, és ez problémát okozhat, ha ugyanazt a parancsot kívánja használni egy másik UNIX-alapú rendszeren, különösen Linux, OS X és Solaris közötti váltáskor.

Egyelőre a Linux nem rendelkezik POSIX-tanúsítvánnyal a magas költségek miatt, kivéve a két kereskedelmi Linux-disztribúciót: Inspur K-UX [12] és Huawei EulerOS [6]. Ehelyett a Linuxot többnyire POSIX-kompatibilisnek tekintik.

Ez az értékelés annak a ténynek köszönhető, hogy a főbb Linux disztribúciók a POSIX helyett a Linux Standard Base (LSB) szabványt követik [9]. Az LSB célja, hogy minimalizálja az egyes Linux disztribúciók közötti különbségeket [14]. Ez a szoftver rendszer szerkezetére vonatkozik, beleértve a Linux rendszermagban használt FHS (File System Hierarchy Standard) szabványt. Az LSB a POSIX specifikáción, az egységes UNIX specifikáción (SUS) [10] és számos más nyílt szabványon alapul, de bizonyos területeken kiterjeszti azokat is.

Az LSB-alapú Linux disztribúciók közé tartozik a RedHat Linux, a Debian GNU/Linux (2002-2015) és az Ubuntu (2015-ig).

Fejlesztés a POSIX szem előtt tartásával

A POSIX részletesebb megértéséhez javasoljuk, hogy szerezzen be egy példányt a POSIX szabványból, és olvassa el teljes egészében. A könyvet az Open Group webhelyéről szerezheti be. Ez regisztrációs díjat igényel, de teljes hozzáférést biztosít ehhez az értékes erőforráshoz. A szabványok segítenek, mivel lehetővé teszik a szoftver fejlesztését oly módon, hogy az minden UNIX platformon azonos módon viselkedjen.

Hivatkozások és hivatkozások

Köszönöm

A szerző szeretné megköszönni Axel Beckertnek és Veit Schiele -nek a segítséget és tanácsokat a cikk elkészítése során.