Onko Linux POSIX -yhteensopiva?

Is Linux Posix Compliant



Ohjelmistoa ovat kirjoittaneet lukuisat eri taustojen kehittäjät. Yleisiä algoritmeja on saatavana ilmaisella lisenssillä tai ne on tieteellisesti julkaistu, ja ne voivat olla saatavana myös ilmaiseksi opiskelutarkoituksiin. Tästä seuraa erilaisia ​​toteutuksia ja ohjelmistoversioita, jotka sopivat erilaisiin tarpeisiin. Rajapintojen ja datamuotojen standardointi on tarpeen, jotta nämä eri toteutukset voidaan vaihtaa ja vaihtaa.

Lyhyesti sanottuna POSIX [1] tekee juuri niin UNIX- ja UNIX-tyyppisille järjestelmille (katso Zak H: n artikkeli [4] saadaksesi yksityiskohtaisemman historian tästä aiheesta). Se määrittelee ohjelmiston vaihtorajapinnat, kutsumekanismit ja siirretyt tiedot, mutta jättää sisäisen toteutuksen ohjelmiston kehittäjälle tai ylläpitäjälle. Tavoitteena on yhdistää kaikki UNIX-haarukat ja UNIX-kaltaiset järjestelmät siten, että eri ohjelmistototeutukset voivat olla vuorovaikutuksessa keskenään. POSIXin tärkein etu on, että näitä komponentteja - rajapintoja, mekanismeja ja tietoja - koskeva sitova dokumentaatio on saatavilla kirjallisesti.







Käyttöjärjestelmä, joka noudattaa kokonaisuudessaan POSIX-standardia, luokitellaan POSIX-yhteensopivaksi. Tässä artikkelissa selitämme, mitä POSIX tarkoittaa, määritetään, kuuluuko Linux tähän luokkaan, ja luetellaan, mitkä Linux -komponentit on jätettävä tämän luokituksen ulkopuolelle.



Mitä termi POSIX tarkoittaa?

POSIX on lyhenne sanoista Portable Operating System Interface. Kuten edellä lyhyesti selitettiin, POSIX on kokoelma standardeja, joita tarvitaan käyttöjärjestelmien yhteensopivuuden ylläpitämiseksi. Kuten kohdassa [1] todetaan, [se] määrittelee sovellusohjelmointirajapinnan (API) sekä komentorivikuoret ja käyttöliittymät ohjelmistojen yhteensopivuuden Unix- ja muiden käyttöjärjestelmien versioiden kanssa. Ensimmäinen POSIX -versio julkaistiin vuonna 1988. Siitä lähtien Austin Common Standards Revision Group (tunnetaan myös yksinkertaisesti nimellä The Austin Group) [7] on jatkuvasti laajentanut ja päivittänyt POSIXia.



Vuodesta 2021 lähtien POSIX -standardi sisältää seuraavat osat:





  1. Ydinpalvelut (Sisältää standardin ANSI C) (IEEE std 1003.1-1988)-Prosessin luominen ja hallinta, signaalit, tiedosto- ja hakemistotoiminnot, putket, C-kirjasto, I/O-portin rajapinta ja ohjaus, prosessilaukaisimet
  1. Laajennukset (Symboliset linkit)
  2. Reaaliaikaiset ja I/O-laajennukset (IEEE Std 1003.1b-1993)-Ensisijainen ajoitus, reaaliaikaiset signaalit, kellot ja ajastimet, semaforit, viestien välitys, jaettu muisti, asynkroninen ja synkroninen I/O, muistin lukitusliitäntä
  3. Langanpidennykset (IEEE Std 1003.1c-1995)-Langan luominen, ohjaus ja puhdistus, langan ajoitus, langan synkronointi, signaalin käsittely
  4. Lisää reaaliaikaisia ​​laajennuksia
  5. Suojauslaajennukset (Kulunvalvontaluettelot)
  1. Kuori ja apuohjelmat (IEEE Std 1003.2-1992)-Komentotulkki, Apuohjelmat

Standardia tarkistetaan säännöllisesti teknisten muutosten ja parannusten huomioon ottamiseksi. Joskus voi kestää useita vuosia, ennen kuin uusi versio julkaistaan ​​ja muutokset otetaan käyttöön. Tämä voi olla haitallista, mutta se on ymmärrettävää standardin laajuuden vuoksi.

Viime vuosina on lisätty reaaliaikaisen käsittelyn laajennuksia. Nykyinen versio julkaistiin alkuvuodesta 2018 [3]. SibylFS: n [5] kirjoittajat ovat myös julkaisseet monia merkintöjä POSIX-standardiin korkeamman asteen logiikan ja vuorovaikutusten määrittämiseksi.



Mitä POSIX-yhteensopivuus tarkoittaa?

Termi POSIX-yhteensopiva tarkoittaa, että käyttöjärjestelmä täyttää kaikki POSIX-kriteerit. Käyttöjärjestelmä voi käyttää UNIX -ohjelmia natiivina tai sovellus voidaan siirtää UNIX -järjestelmästä toiseen järjestelmään. Sovelluksen siirtäminen UNIX -laitteesta kohdekäyttöjärjestelmään on helppoa tai ainakin helpompaa kuin jos se ei tue POSIX -käyttöjärjestelmää. Turvallisuuden vuoksi käyttöjärjestelmän olisi pitänyt onnistuneesti saavuttaa POSIX -sertifikaatti [2]. Tämä vaihe saavutetaan (hinnalla) läpäisemällä automaattinen sertifiointitesti. Vastaava testisarja löytyy täältä [11].

Vuodesta 2021 alkaen POSIX-sertifioitujen käyttöjärjestelmien luettelo sisältää IBM: n AIX: n, HP: n UX: n, IRIX: n SGI: ltä, EulerOS: n [6] Huaweilta, Mac OS X: n Applelta (10.5 Leopardin jälkeen), Solarisin ja QNX Neutrinon Oracle, Inspurin K-UX [11] ja Green Hills -ohjelmiston reaaliaikainen käyttöjärjestelmän integrointi [15]. Tällä hetkellä on epäselvää, luokitellaanko kolmen Solaris-seuraajan, OpenSolaris, Illumos ja OpenIndiana, uudemmat versiot myös täysin POSIX-yhteensopiviksi. Nämä käyttöjärjestelmät olivat POSIX-yhteensopivia vuoteen POSIX 2001 asti.

Muita käyttöjärjestelmiä, joiden katsotaan olevan pääosin (mutta ei täysin) POSIX-yhteensopivia, ovat Android, BeOS, FreeBSD, Haiku, Linux (katso alla) ja VMWare ESXi. Microsoft Windowsille Cygwin tarjoaa suurelta osin POSIX-yhteensopivan kehitys- ja ajonaikaisen ympäristön.

Onko Linux POSIX -yhteensopiva?

Termi Linux viittaa koko Linux -käyttöjärjestelmään mausta riippumatta, kuten Debian GNU/Linux, RedHat Linux, Linux Mint, Ubuntu Linux, Fedora ja CentOS. Tarkemmin sanottuna Linux on vain sen ytimen nimi, joka on tämän ilmaisen käyttöjärjestelmän ydin.

Kuten Linus Torvalds kuvaili Just For Fun -kirjassa [8], hän pyysi Linux -ytimen kehittämiseksi POSIX -standardin kopion. Tämä auttoi häntä toteuttamaan samat mekanismit, joita käytetään kaupallisissa UNIX -järjestelmissä. Lisäksi tämän ansiosta hän pystyi linkittämään Linux -ytimen GNU -työkaluihin, jotka noudattivat pääasiassa samaa lähestymistapaa. Ollakseni oikeudenmukainen, Linux -järjestelmän ohjelmistot ovat peräisin useista lähteistä, jotka noudattavat POSIX -standardia, mutta jotka myös toteuttavat joskus omia konseptejaan. Samaan aikaan tämä kuitenkin osoittaa myös monimuotoisuuden, joka muodostaa Linuxin käyttöjärjestelmänä.

Yksi esimerkki tästä on tapa, jolla komentoriviargumentit kirjoitetaan. Argumentit, joissa on kaksi viivaa (esim. –Help), ovat GNU -yleissopimuksia, kun taas POSIX -komennot eivät koskaan käytä kahden viivan argumentteja, vaan vain yhtä (esim. -Help). Linux on suunniteltu alusta alkaen GNU: ta ajatellen, ja siksi komennot sisältävät GNU-tyylisiä

argumentteja. POSIX-yhteensopivuuden saavuttamiseksi POSIX-tyylisiä argumentteja on lisätty vaihe vaiheelta. Lopullisen päätöksen tekee kuitenkin kehittäjä. Nykyään useimmat komennot hyväksyvät sekä lyhyitä että pitkiä argumentteja tai jopa argumentteja ilman viivoja, kuten esimerkiksi Find -komento. Ollakseni oikeudenmukainen, yhden järjestelmän komentojen välillä ei ole johdonmukaisuutta, ja tämä voi olla ongelma, kun aiot käyttää samaa komentoa eri UNIX-pohjaisessa järjestelmässä, erityisesti vaihdettaessa Linuxin, OS X: n ja Solarisin välillä.

Tällä hetkellä Linux ei ole POSIX-sertifioitu korkeiden kustannusten vuoksi, lukuun ottamatta kahta kaupallista Linux-jakelua Inspur K-UX [12] ja Huawei EulerOS [6]. Sen sijaan Linuxin katsotaan olevan enimmäkseen POSIX-yhteensopiva.

Tämä arviointi johtuu siitä, että suuret Linux -jakelut noudattavat LSB -standardia (POSIX) [9]. LSB pyrkii minimoimaan erot yksittäisten Linux -jakelujen välillä [14]. Tämä viittaa ohjelmistojärjestelmän rakenteeseen, mukaan lukien Linux -ytimen käyttämä tiedostojärjestelmähierarkian standardi (FHS). LSB perustuu POSIX -määritykseen, Single UNIX -määritykseen (SUS) [10] ja useisiin muihin avoimiin standardeihin, mutta laajentaa niitä myös tietyillä alueilla.

LSB-pohjaisia ​​Linux-jakeluja ovat RedHat Linux, Debian GNU/Linux (2002-2015) ja Ubuntu (vuoteen 2015 asti).

Kehitetään POSIXia ajatellen

POSIXin ymmärtämiseksi tarkemmin suosittelemme hankkimaan kopion POSIX -standardista ja lukemaan sen kokonaan. Kirjan saa Open Groupin verkkosivuilta. Tämä vaatii rekisteröintimaksun, mutta antaa sinulle täyden pääsyn tähän arvokkaaseen resurssiin. Standardit auttavat, koska niiden avulla voit kehittää ohjelmistoja siten, että ne toimivat samalla tavalla kaikilla UNIX -alustoilla.

Linkit ja viitteet

Kiitos

Kirjoittaja haluaa kiittää Axel Beckertia ja Veit Schieleä avusta ja neuvoista tämän artikkelin valmistelussa.