Linux è conforme a POSIX?

Is Linux Posix Compliant

Il software è scritto da numerosi sviluppatori con diversi background. Gli algoritmi generali sono disponibili con una licenza gratuita o sono stati pubblicati scientificamente e potrebbero anche essere disponibili gratuitamente per scopi di studio. Ciò si traduce in diverse implementazioni e versioni software che si adattano a una varietà di esigenze. È necessaria una standardizzazione delle interfacce e dei formati dei dati per rendere queste diverse implementazioni sia intercambiabili che modulari.

In breve, POSIX [1] fa esattamente questo per i sistemi UNIX e UNIX-like (vedi l'articolo di Zak H [4] per una storia più dettagliata su questo argomento). Definisce le interfacce di scambio, i meccanismi di chiamata e i dati trasferiti per il software, ma lascia l'implementazione interna allo sviluppatore o al manutentore del software. L'obiettivo è unificare tutti i vari fork UNIX e i sistemi UNIX-like in modo tale che diverse implementazioni software possano interagire tra loro. Il vantaggio principale di POSIX è di avere una documentazione vincolante per questi componenti – interfacce, meccanismi e dati – disponibile in forma scritta.



Un sistema operativo che segue lo standard POSIX nella sua interezza è classificato come conforme a POSIX. In questo articolo spieghiamo cosa significa POSIX, determiniamo se Linux appartiene a questa categoria ed elenchiamo quali componenti Linux devono essere esclusi da questa classificazione.



Che cosa significa il termine POSIX?

POSIX è l'abbreviazione di Portable Operating System Interface. Come spiegato brevemente sopra, POSIX è il nome di una raccolta di standard necessari per mantenere la compatibilità tra i sistemi operativi. Come affermato in [1], [it] definisce l'interfaccia di programmazione dell'applicazione (API), insieme alle shell della riga di comando e alle interfacce di utilità, per la compatibilità del software con le varianti di Unix e altri sistemi operativi. La prima versione di POSIX è stata pubblicata nel 1988. Da allora, POSIX è stato continuamente ampliato e aggiornato dall'Austin Common Standards Revision Group (noto anche semplicemente come The Austin Group) [7].



A partire dal 2021, lo standard POSIX contiene le seguenti parti:

  1. Servizi di base (Incorpora lo standard ANSI C) (IEEE std 1003.1-1988) – Creazione e controllo del processo, segnali, operazioni su file e directory, pipe, libreria C, interfaccia e controllo della porta I/O, trigger di processo
  1. Estensioni (Link simbolici)
  2. Estensioni in tempo reale e I/O (IEEE Std 1003.1b-1993) – Pianificazione prioritaria, segnali in tempo reale, orologi e timer, semafori, passaggio di messaggi, memoria condivisa, I/O asincrono e sincrono, interfaccia di blocco della memoria
  3. Estensioni delle discussioni (IEEE Std 1003.1c-1995) – Creazione, controllo e pulizia dei thread, pianificazione dei thread, sincronizzazione dei thread, gestione dei segnali
  4. Più estensioni in tempo reale
  5. Estensioni di sicurezza (Elenchi controllo accessi)
  1. Shell e Utilità (IEEE Std 1003.2-1992) – Interprete di comandi, programmi di utilità

Lo standard viene regolarmente rivisto per riflettere modifiche e miglioramenti tecnici. A volte possono essere necessari diversi anni prima che una nuova versione venga pubblicata e le modifiche vengano incorporate. Questo può essere svantaggioso, ma è comprensibile dato l'ambito di applicazione dello standard.

Negli ultimi anni sono state aggiunte estensioni all'elaborazione in tempo reale. La versione attuale è stata rilasciata all'inizio del 2018 [3]. Gli autori di SibylFS [5] hanno anche pubblicato molte annotazioni allo standard POSIX per determinare la logica e le interazioni di ordine superiore.



Cosa significa essere conformi a POSIX?

Il termine conforme a POSIX significa che un sistema operativo soddisfa tutti i criteri POSIX. Un sistema operativo può eseguire programmi UNIX in modo nativo oppure è possibile trasferire un'applicazione dal sistema UNIX a un altro sistema. Il porting di un'applicazione da UNIX al sistema operativo di destinazione è facile, o almeno più semplice, che se non supporta POSIX. Per essere sicuri, un sistema operativo dovrebbe aver ottenuto con successo la certificazione POSIX [2]. Questo passaggio si ottiene (a pagamento) superando un test di certificazione automatizzato. La suite di test corrispondente può essere trovata qui [11].

A partire dal 2021, l'elenco dei sistemi operativi certificati POSIX contiene AIX di IBM, HP-UX di HP, IRIX di SGI, EulerOS [6] di Huawei, Mac OS X di Apple (dal 10.5 Leopard), Solaris e QNX Neutrino di Oracle, K-UX di Inspur [11] e INTEGRITY del sistema operativo in tempo reale di Green Hills Software [15]. Al momento non è chiaro se le versioni più recenti dei tre successori di Solaris, OpenSolaris, Illumos e OpenIndiana, siano anch'esse classificate come completamente conformi a POSIX. Questi sistemi operativi erano conformi a POSIX fino a POSIX 2001.

Altri sistemi operativi considerati per lo più (ma non completamente) conformi a POSIX includono Android, BeOS, FreeBSD, Haiku, Linux (vedi sotto) e VMWare ESXi. Per Microsoft Windows, Cygwin fornisce un ambiente di sviluppo e runtime ampiamente conforme a POSIX.

Linux è conforme a POSIX?

Il termine Linux si riferisce all'intero sistema operativo Linux, indipendentemente dal sapore, come Debian GNU/Linux, RedHat Linux, Linux Mint, Ubuntu Linux, Fedora e CentOS, ad esempio. Per essere precisi, Linux è solo il nome del kernel che è il componente principale di questo sistema operativo gratuito.

Come descritto da Linus Torvalds nel libro Just For Fun [8], per sviluppare il kernel Linux ha richiesto una copia dello standard POSIX. Questo lo ha aiutato a implementare gli stessi meccanismi utilizzati nei sistemi UNIX commerciali. Inoltre, questo gli ha permesso di collegare il kernel Linux con gli strumenti GNU che seguivano principalmente lo stesso approccio. Per essere onesti, il software su un sistema Linux è fornito da una varietà di fonti che rispettano lo standard POSIX, ma che a volte implementano anche i propri concetti. Allo stesso tempo, tuttavia, questo mostra anche la diversità che costituisce Linux come sistema operativo.

Un esempio di ciò è il modo in cui vengono scritti gli argomenti della riga di comando. Gli argomenti con due trattini (es. –help) sono convenzioni GNU, mentre i comandi POSIX non usano mai argomenti con due trattini ma solo uno (es. -help). Fin dall'inizio, Linux è stato progettato pensando a GNU, ed è per questo che i comandi contengono lo stile GNU

argomenti. Per ottenere la conformità POSIX, gli argomenti in stile POSIX sono stati aggiunti passo dopo passo. Tuttavia, la decisione finale è presa dallo sviluppatore. Ad oggi, la maggior parte dei comandi accetta argomenti sia brevi che lunghi, o anche argomenti senza trattini, come ad esempio il comando trova. Per essere onesti, non c'è coerenza tra i comandi su un sistema e questo può essere un problema quando si intende utilizzare lo stesso comando su un diverso sistema basato su UNIX, in particolare quando si passa da Linux, OS X e Solaris.

Per ora, Linux non è certificato POSIX a causa dei costi elevati, ad eccezione delle due distribuzioni Linux commerciali Inspur K-UX [12] e Huawei EulerOS [6]. Invece, Linux è visto come per lo più conforme a POSIX.

Questa valutazione è dovuta al fatto che le principali distribuzioni Linux seguono la Linux Standard Base (LSB) invece di POSIX [9]. LSB mira a minimizzare le differenze tra le singole distribuzioni Linux [14]. Questo si riferisce alla struttura del sistema software, incluso il Filesystem Hierarchy Standard (FHS) utilizzato nel kernel Linux. LSB si basa sulla specifica POSIX, sulla Single UNIX Specification (SUS) [10] e su molti altri standard aperti, ma li estende anche in determinate aree.

Le distribuzioni Linux basate su LSB includono RedHat Linux, Debian GNU/Linux (2002-2015) e Ubuntu (fino al 2015), solo per citarne alcune.

Sviluppare pensando a POSIX

Per comprendere POSIX in modo più dettagliato, si consiglia di ottenere una copia dello standard POSIX e di leggerlo integralmente. È possibile ottenere il libro dal sito Web di Open Group. Ciò richiede una quota di registrazione ma ti dà pieno accesso a questa preziosa risorsa. Gli standard aiutano poiché consentono di sviluppare software in modo tale che si comporti allo stesso modo su tutte le piattaforme UNIX.

Link e riferimenti

Grazie

L'autore desidera ringraziare Axel Beckert e Veit Schiele per il loro aiuto e consiglio durante la preparazione di questo articolo.