È conforme a Linux Posix?

È conforme a Linux Posix?

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

In breve, Posix [1] fa esattamente questo per i sistemi unix e unix (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 tutte le varie forcelle unix e sistemi simili a unix in modo tale che diverse implementazioni software possano interagire tra loro. Il vantaggio principale di Posix è avere una documentazione vincolante per questi componenti - interfacce, meccanismi e dati - disponibili 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, determinano se Linux appartiene a questa categoria ed elenca quali componenti Linux devono essere esclusi da questa classificazione.

Cosa rappresenta il termine posix?

Posix è un'abbreviazione per l'interfaccia del sistema operativo portatile. Come brevemente spiegato sopra, Posix è il nome per una raccolta di standard necessari per mantenere la compatibilità tra i sistemi operativi. Come indicato in [1], “[IT] definisce l'interfaccia di programmazione dell'applicazione (API), insieme a shell della riga di comando e interfacce di utilità, per la compatibilità del software con varianti di UNIX e altri sistemi operativi."La prima versione di Posix è stata pubblicata nel 1988. Da allora, Posix è stato continuamente ampliato e aggiornato dal gruppo di revisione degli standard comuni di Austin (noto anche semplicemente come gruppo Austin) [7].

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

  1. Servizi di base (Incorpora ANSI C) (IEEE STD 1003.1-1988) - Creazione e controllo del processo, segnali, operazioni di file e directory, tubi, libreria C, interfaccia e controllo della porta I/O, trigger di processo
  1. Estensioni (Collegamenti 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 dei messaggi, memoria condivisa, I/O sincrona e sincrona, Interfaccia di blocco della memoria
  3. Estensioni di fili (IEEE STD 1003.1C-1995)-Creazione del thread, controllo e pulizia, pianificazione del thread, sincronizzazione del filo, gestione del segnale
  4. Estensioni più in tempo reale
  5. Estensioni di sicurezza (Elenchi di controllo degli accessi)
  1. Shell e utility (IEEE STD 1003.2-1992) - Interprete di comando, programmi di utilità

Lo standard viene regolarmente rivisto per riflettere i cambiamenti tecnici e i miglioramenti. A volte possono essere necessari diversi anni prima della pubblicazione di una nuova versione e le modifiche sono incorporate. Questo può essere svantaggioso, ma è comprensibile dato l'ambito 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 secondo lo standard POSIX per determinare la logica e le interazioni di ordine superiore.

Cosa significa essere conformi a posix?

Il termine "conforme al posix" significa che un sistema operativo soddisfa tutti i criteri Posix. Un sistema operativo può eseguire programmi UNIX in modo nativo o un'applicazione può essere portata dal sistema UNIX a un altro sistema. Portare un'applicazione da UNIX al sistema operativo target è semplice o almeno più semplice, se non supporta Posix. Per essere al sicuro, un sistema operativo avrebbe dovuto raggiungere con successo la certificazione POSIX [2]. Questo passaggio si ottiene (a un costo) superando un test di certificazione automatizzato. La suite di test corrispondente è disponibile 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 (da 10.5 Leopard), Solaris e QNX Neutrino di Oracle, K-Ux di Inspur [11] e l'integrità del sistema operativo in tempo reale di Green Hills Software [15]. Attualmente non è chiaro se le versioni più recenti dei tre successori Solaris, OpenSolaris, Illumos e OpenIndiana, siano classificate anche come pienamente conformi a Posix. Questi sistemi operativi erano conformi a Posix fino a Posix 2001.

Altri sistemi operativi che sono visti come principalmente (ma non completamente) conformi a Posix includono Android, BEOS, FreeBSD, Haiku, Linux (vedi sotto) e VMware ESXI. Per Microsoft Windows, Cygwin fornisce uno sviluppo in gran parte conforme a Posix e l'ambiente di runtime.

È conforme a Linux 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 libero.

Come ha descritto 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, ciò gli ha permesso di collegare il kernel Linux con gli strumenti GNU che hanno seguito principalmente lo stesso approccio. Per essere onesti, il software su un sistema Linux è contribuito 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 questo è il modo in cui vengono scritti gli argomenti della linea di comando. Argomenti con due trattini (E.G., "-Help") sono convenzioni GNU, mentre i comandi Posix non usano mai argomenti a due dash ma solo un singolo (E.G., "-aiuto"). Fin dall'inizio, Linux è stato progettato pensando a GNU, ed è per questo che i comandi contengono in stile GNU

argomenti. Per raggiungere la conformità a Posix, sono stati aggiunti argomenti in stile POSIX. Tuttavia, la decisione finale viene presa dallo sviluppatore. Ad oggi, la maggior parte dei comandi accetta argomenti brevi e lunghi, o addirittura argomenti senza trattini, come il comando "Trova", ad esempio. Per essere onesti, non vi è alcuna 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 tra Linux, OS X e Solaris.

Per ora, Linux non è certificato POSIX a causa di costi elevati, ad eccezione delle due distribuzioni commerciali Linux Insur 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 base standard Linux (LSB) anziché POSIX [9]. LSB mira "a ridurre al minimo le differenze tra le singole distribuzioni Linux" [14]. Ciò si riferisce alla struttura del sistema software, incluso lo standard gerarchia del filesystem (FHS) utilizzato nel kernel Linux. LSB si basa sulla specifica POSIX, la singola specifica UNIX (SU) [10] e molti altri standard aperti, ma le estende anche in alcune aree.

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

Sviluppandosi con Posix in mente

Per comprendere Posix in modo più dettagliato, ti consigliamo di ottenere una copia dello standard POSIX e di leggerlo per intero. Puoi ottenere il libro dal sito web del gruppo aperto. Ciò richiede una quota di registrazione ma ti dà pieno accesso a questa preziosa risorsa. Gli standard aiutano poiché ti consentono di sviluppare software in modo tale che si comporta allo stesso modo su tutte le piattaforme UNIX.

Collegamenti e riferimenti

  • [1] Posix, Wikipedia, https: // en.Wikipedia.org/wiki/posix
  • [2] Certificazione POSIX, http: // GET.posixcertificato.Ieee.org/
  • [3] Posix Standard, Open Group, https: // Publications.OpenGroup.org/t101
  • [4] Zak H: Posix Standard, https: // linuxhint.com/posix-standard/
  • [5] Annotazioni Posix, Sybilfs, https: // github.com/sibylfs/sibylfs_src
  • [6] Euleros, https: // sviluppatore.Huaweicloud.com/ict/en/site-euleros/euleros
  • [7] Il gruppo di revisione degli standard comuni di Austin, https: // www.OpenGroup.org/austin/
  • [8] Torvalds, Linus; Diamond, David (2001). Solo per divertimento: la storia di un rivoluzionario accidentale. New York City, Stati Uniti: HarperCollins. ISBN 0-06-662072-4
  • [9] Linux Standard Base (LSB), Wikipedia, https: // en.Wikipedia.org/wiki/linux_standard_base
  • [10] Single Unix Specification (SUS), Wikipedia, https: // en.Wikipedia.org/wiki/single_unix_specification
  • [11] Posix Test Suites, https: // www.OpenGroup.org/test/testsuites/vsx4.htm
  • [12] Inspir K-Ux, Wikipedia, https: // en.Wikipedia.org/wiki/ispir_k-ux
  • [14] Linux Standard Base (LSB), https: // wiki.LinuxFoundation.org/lsb/start
  • [15] Integrità, https: // www.GHS.com/prodotti/rtos/integrità.html

Grazie

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