Single UNIX Specification
# Single UNIX Specification

Single UNIX Specification (in acronimo SUS) è una definizione collettiva di una serie di standard che i sistemi operativi per computer devono rispettare per potersi fregiare del nome "Unix". La SUS viene sviluppata e mantenuta da Austin Group, ed è basata su specifiche precedenti dell'IEEE e di The Open Group.

## Storia

La SUS è il prodotto scaturito da un progetto nato nella prima metà degli anni ottanta per uniformare l'interfaccia del sistema operativo dal punto di vista dei software progettati per essere eseguiti sulle diverse varianti del sistema operativo Unix. La necessità di una standardizzazione si fece sentire poiché le aziende che avevano acquistato dei computer volevano essere in grado di sviluppare programmi che potevano essere utilizzati su sistemi di produttori diversi senza che fosse necessario reimplementarli da zero. Unix fu scelto come base di un'interfaccia di sistema standard poiché non era legato a nessun produttore in particolare. Questi standard divennero nel 1988 IEEE 1003 (registrato anche come ISO/IEC 9945), o POSIX, che significa proprio Interfaccia di Sistema Operativo Portabile per uniX.

Nei primi anni novanta, diverse grandi aziende, che formarono l'alleanza COSE all'inizio delle Unix wars, crearono la Common API Specification, o Spec 1170. Questa specifica divenne sempre più popolare perché era disponibile gratuitamente, mentre l'IEEE chiedeva il pagamento di una somma di denaro consistente prima di fornire l'accesso alle specifiche POSIX.

A partire dal 1998, un gruppo di lavoro congiunto noto come Austin Group ha iniziato a sviluppare lo standard combinato che sarebbe divenuta la Single UNIX Specification Version 3, pubblicata il 30 gennaio 2002.

## Descrizione

### Specifiche

L'interfaccia utente e il software del sistema operativo vengono descritti in quattro sezioni principali:

* Definizioni basilari - lista di definizioni e convenzioni utilizzate nelle specifiche e una lista di file d'intestazione C che devono essere forniti dai sistemi.
* Shell ed utility - lista di utility e descrizione della shell, sh.
* Interfacce di sistema - lista di chiamate di sistema C che devono essere fornite.
* Rationale - la motivazione che sta dietro allo standard

L'interfaccia di riga di comando e di scripting standard è la shell POSIX, un'estensione della Bourne shell basata su una delle prime versioni della Korn shell. Altri programmi a livello utente sono awk, echo, ed, vi, e centinaia di altri. È richiesta la presenza di servizi quali quelli di I/O (per i file, i terminali e le reti).

Una suite di test viene fornita insieme allo standard, chiamata PCTS (Posix Certification Test Suite).

Si noti che un sistema non deve includere necessariamente del codice sorgente derivato da AT&T Unix per poter rispettare la specifica: ad esempio, IBM OS/390, ora z/OS, è uno Unix secondo la specifica, sebbene non abbia alcun legame a livello di codice.

### Marchi per i sistemi

I marchi ufficiali di cui i sistemi operativi che rispettavano la specifica possono fregiarsi:

* UNIX 98 - per i sistemi conformi alla versione 2 della SUS (aderenza parziale)
* UNIX 03 - per i sistemi conformi alla versione 3 della SUS (aderenza totale)

In precedenza ne sono stati disponibili degli altri, adesso obsoleti:

* UNIX93 (del tutto obsoleto)
* UNIX95 (aderenza tuttora accettabile per alcuni sottosistemi software semplici)

## Sistemi aderenti alla specifica

### AIX

IBM AIX 7.1 TL5 ed AIX 7.2 TL2 sono UNIX 03 compliant. AIX 5L V5.2 è UNIX 98 compliant.

### HP/UX

HP-UX 11i V3 Release B.11.31 è UNIX 03 compliant. Le release ad essa precedenti erano UNIX 95 compliant.

### Mac OS X

La prima versione di OS X ad essere certificata UNIX 03 è Mac OS X Leopard. La versione più recente a ricevere la certificazione è macOS Big Sur.

### SCO

UnixWare 7.1.3 è UNIX 95 compliant. SCO OpenServer 5 è UNIX 93 compliant.

### Solaris

Oracle Solaris 10 è UNIX 03 compliant sui sistemi x86 e SPARC a 32-bit e 64-bit. Solaris 8 e 9 sono UNIX 98 compliant sulle medesime piattaforme, eccezion fatta per i sistemi x86 a 64-bit.

Solaris 2.5.1 era stato certificato come UNIX 95 compliant sulla piattaforma PReP PowerPC nel 1996, ma il prodotto è stato ritirato prima che ne venisse venduta poco meno di una dozzina di copie.

### Tru64 UNIX

Tru64 UNIX V5.1A (e versioni successive) sono UNIX 98 compliant.

### z/OS

Le versioni di IBM z/OS precedenti alla 1.9 sono UNIX 95 compliant.

IBM ha annunciato che z/OS 1.9, pubblicato il 28 settembre 2007 si "allineerà meglio" ad UNIX 03 (non è chiaro, in questo momento, se rispetterà del tutto la specifica, o soltanto in maniera parziale).

### Altri sistemi che seguono la specifica

Altri sistemi operativi registrati come UNIX 95 o UNIX 93 compliant:

* NCR UNIX SVR4
* NEC UX/4800

### Sistemi Unix-like non registrati

I distributori di sistemi Unix-like quali GNU/Linux e BSD non certificano, in genere, i loro prodotti, dal momento che il costo della certificazione e la loro natura estremamente mutevole rendono la procedura troppo costosa da affrontare.

**BSD**

FreeBSD ha un "Progetto di adeguamento agli standard C99 e POSIX" che ha lo scopo di raggiungere l'aderenza ad un vasto subset della specifica.

Darwin è un sistema operativo open source basato su BSD: a conti fatti è un subset open source di Mac OS X. Darwin rispetta la SUS 03.

Nessun altro sistema BSD liberamente disponibile ha la certificazione SUS.

**Linux**

Linus Torvalds nel libro "Rivoluzionario per caso - Come ho creato Linux solo per divertirmi" (di Linus Torvalds e David Diamond) ha affermato che il kernel Linux è progettato per rispettare quanto più possibile la specifica POSIX, sebbene abbia cominciato a scriverne il codice prima di aver ottenuto una copia della stessa (al tempo molto costosa, e non accessibile a tutti), basando il comportamento delle chiamate di sistema sulle pagine di manuale di sistemi Unix preesistenti.

La Linux Standard Base è stata costituita nel 2001 come tentativo di standardizzare le strutture interne dei sistemi basati su Linux per migliorarne la compatibilità. Si basa, ed estende, le specifiche POSIX, la Single UNIX Specification ed altri standard aperti. È accettata de facto e seguita da molte distribuzioni Linux.

