Este compatibil Linux POSIX?

Is Linux Posix Compliant



Software-ul este scris de numeroși dezvoltatori cu diferite medii. Algoritmii generali sunt disponibili sub o licență gratuită sau au fost publicați științific și pot fi, de asemenea, disponibili gratuit în scopuri de studiu. Acest lucru are ca rezultat diferite implementări și versiuni de software care se potrivesc unei varietăți de nevoi. Este necesară o standardizare a interfețelor și formatelor de date pentru ca aceste implementări diferite să fie interschimbabile și modulare.

Pe scurt, POSIX [1] face exact asta pentru sistemele UNIX și UNIX (a se vedea articolul [4] al lui Zak H pentru un istoric mai detaliat pe această temă). Acesta definește interfețele de schimb, mecanismele de apelare și datele transferate pentru software, dar lasă implementarea internă dezvoltatorului sau întreținătorului software-ului. Scopul este de a uni toate diversele furci UNIX și sisteme similare UNIX, astfel încât diferite implementări software să poată interacționa una cu alta. Principalul avantaj al POSIX este de a avea o documentație obligatorie pentru aceste componente - interfețe, mecanisme și date - disponibile în formă scrisă.







Un sistem de operare care respectă standardul POSIX în întregime este clasificat ca fiind conform cu POSIX. În acest articol, explicăm ce reprezintă POSIX, stabilim dacă Linux aparține acestei categorii și listăm ce componente Linux trebuie excluse din această clasificare.



Ce înseamnă termenul POSIX?

POSIX este o abreviere pentru Portable Operating System Interface. După cum s-a explicat pe scurt mai sus, POSIX este numele unei colecții de standarde care sunt necesare pentru a menține compatibilitatea între sistemele de operare. După cum se menționează în [1], [it] definește interfața de programare a aplicației (API), împreună cu shell-urile din linia de comandă și interfețele utilitare, pentru compatibilitatea software-ului cu variantele Unix și alte sisteme de operare. Prima versiune a POSIX a fost publicată în 1988. De atunci, POSIX a fost continuu extins și actualizat de Austin Common Standards Revision Group (cunoscut și sub numele de Austin Group) [7].



Începând cu 2021, standardul POSIX conține următoarele părți:





  1. Servicii de baza (Incorporează standardul ANSI C) (IEEE std 1003.1-1988) - Crearea și controlul proceselor, semnale, operații de fișiere și directoare, țevi, bibliotecă C, interfață și control port I / O, declanșatoare de proces
  1. Extensii (Legături simbolice)
  2. Extensii în timp real și I / O (IEEE Std 1003.1b-1993) - Planificare prioritară, semnale în timp real, ceasuri și temporizatoare, semaforuri, transmiterea mesajelor, memorie partajată, I / O asincronă și sincronă, interfață de blocare a memoriei
  3. Extensii de fire (IEEE Std 1003.1c-1995) - Crearea, controlul și curățarea firelor, programarea firelor, sincronizarea firelor, gestionarea semnalului
  4. Mai multe extensii în timp real
  5. Extensii de securitate (Liste de control acces)
  1. Shell și utilități (IEEE Std 1003.2-1992) - Interpret de comandă, programe utilitare

Standardul este revizuit periodic pentru a reflecta modificările și îmbunătățirile tehnice. Uneori poate dura câțiva ani înainte ca o nouă versiune să fie publicată și modificările să fie încorporate. Acest lucru poate fi dezavantajos, dar este de înțeles având în vedere domeniul de aplicare al standardului.

În ultimii ani, au fost adăugate extensii la procesarea în timp real. Versiunea actuală a fost lansată la începutul anului 2018 [3]. Autorii SibylFS [5] au publicat, de asemenea, multe adnotări la standardul POSIX pentru a determina logica și interacțiunile de ordin superior.



Ce înseamnă a fi compatibil cu POSIX?

Termenul conform cu POSIX înseamnă că un sistem de operare îndeplinește toate criteriile POSIX. Un sistem de operare poate rula programe UNIX în mod nativ sau o aplicație poate fi portată din sistemul UNIX către alt sistem. Portarea unei aplicații de la UNIX la sistemul de operare țintă este ușoară sau cel puțin mai ușoară decât dacă nu acceptă POSIX. Pentru a fi sigur, un sistem de operare ar fi trebuit să obțină cu succes certificarea POSIX [2]. Acest pas se realizează (la un cost) prin promovarea unui test de certificare automatizat. Suita de testare corespunzătoare poate fi găsită aici [11].

Începând cu 2021, lista sistemelor de operare certificate POSIX conține AIX de la IBM, HP-UX de la HP, IRIX de la SGI, EulerOS [6] de la Huawei, Mac OS X de la Apple (din 10.5 Leopard), Solaris și QNX Neutrino de la Oracle, Inspur's K-UX [11] și sistemul de operare INTEGRITY în timp real de la Green Hills Software [15]. În prezent, nu este clar dacă versiunile mai noi ale celor trei succesori Solaris, OpenSolaris, Illumos și OpenIndiana, sunt clasificate, de asemenea, pe deplin conforme cu POSIX. Aceste sisteme de operare au fost conforme cu POSIX până la POSIX 2001.

Alte sisteme de operare care sunt considerate ca fiind în mare parte (dar nu pe deplin) compatibile cu POSIX includ Android, BeOS, FreeBSD, Haiku, Linux (vezi mai jos) și VMWare ESXi. Pentru Microsoft Windows, Cygwin oferă un mediu de dezvoltare și de execuție compatibil POSIX.

Este compatibil Linux POSIX?

Termenul Linux se referă la întregul sistem de operare Linux, indiferent de aromă, cum ar fi Debian GNU / Linux, RedHat Linux, Linux Mint, Ubuntu Linux, Fedora și CentOS, de exemplu. Pentru a fi mai precis, Linux este doar numele nucleului care este componenta de bază a acestui sistem de operare gratuit.

După cum a descris Linus Torvalds în cartea Just For Fun [8], pentru a dezvolta nucleul Linux, el a solicitat o copie a standardului POSIX. Acest lucru l-a ajutat să implementeze aceleași mecanisme care sunt utilizate în sistemele UNIX comerciale. Mai mult, acest lucru i-a permis să lege kernel-ul Linux cu instrumentele GNU care au urmat în principal aceeași abordare. Pentru a fi corect, software-ul unui sistem Linux este contribuit dintr-o varietate de surse care respectă standardul POSIX, dar care uneori își implementează și propriile concepte. În același timp, însă, aceasta arată și diversitatea care alcătuiește Linux ca sistem de operare.

Un exemplu în acest sens este modul în care sunt scrise argumentele din linia de comandă. Argumentele cu două liniuțe (de exemplu, –help) sunt convenții GNU, în timp ce comenzile POSIX nu folosesc niciodată argumente cu două liniuțe, ci în schimb doar un singur (de exemplu, -help). Încă de la început, Linux a fost conceput având în vedere GNU și de aceea comenzile conțin stil GNU

argumente. Pentru a obține conformitatea POSIX, argumentele în stil POSIX au fost adăugate pas cu pas. Totuși, decizia finală este luată de dezvoltator. Începând de astăzi, majoritatea comenzilor acceptă atât argumente scurte cât și lungi, sau chiar argumente fără liniuțe, cum ar fi comanda find, de exemplu. Pentru a fi corect, nu există coerență între comenzile unui sistem și aceasta poate fi o problemă atunci când intenționați să utilizați aceeași comandă pe un sistem diferit bazat pe UNIX, în special atunci când comutați între Linux, OS X și Solaris.

Deocamdată, Linux nu este certificat POSIX din cauza costurilor ridicate, cu excepția celor două distribuții comerciale Linux Inspur K-UX [12] și Huawei EulerOS [6]. În schimb, Linux este văzut ca fiind în mare parte compatibil POSIX.

Această evaluare se datorează faptului că distribuțiile majore Linux urmează Linux Standard Base (LSB) în loc de POSIX [9]. LSB își propune să reducă la minimum diferențele dintre distribuțiile Linux individuale [14]. Aceasta se referă la structura sistemului software, inclusiv la File System Hierarchy Standard (FHS) utilizat în kernel-ul Linux. LSB se bazează pe specificația POSIX, Specificația unică UNIX (SUS) [10] și pe alte câteva standarde deschise, dar le extinde și în anumite zone.

Distribuțiile Linux bazate pe LSB includ RedHat Linux, Debian GNU / Linux (2002-2015) și Ubuntu (până în 2015), pentru a numi câteva.

Dezvoltarea având în vedere POSIX

Pentru a înțelege POSIX mai detaliat, vă recomandăm să obțineți o copie a standardului POSIX și să îl citiți integral. Puteți obține cartea de pe site-ul Open Group. Acest lucru necesită o taxă de înregistrare, dar vă oferă acces complet la această resursă valoroasă. Standardele vă ajută, deoarece vă permit să dezvoltați software în așa fel încât acesta să se comporte în același mod pe toate platformele UNIX.

Linkuri și referințe

Mulțumesc

Autorul ar dori să mulțumească lui Axel Beckert și Veit Schiele pentru ajutor și sfaturi în timp ce pregătea acest articol.