Unix History

Categorie: 

Se non lo conosci sarai condannato a reinventarlo!

Nel 1965 la General Electric, monopolista dell’energia elettrica negli USA e uno dei principali clienti dei costruttori di computer, si pone il problema di ridurre i costi della gestione delle macchine e della loro programmazione: occorreva un sistema operativo comune sia per l’uso sia per lo sviluppo del software, in modo da semplificare la condivisione di dati e programmi. Viene interessato del problema il centro ricerche Bell Laboratories, il prestigioso istituto finanziato dalla AT&T.

MULTICS

Tutti i ricercatori dei laboratori Bell che si interessavano di informatica vennero presto coinvolti nel progetto: il nuovo sistema operativo doveva girare su una moltitudine di hardware diversi di diversi costruttori, doveva supportare la multiutenza e la multiprogrammazione, doveva supportare processi multipli in esecuzione contemporanea ed essere multi-purpouse: il nome scelto per questo progetto fu perciò MULTICS. In questo progetto i ricercatori cercarono di esprimere il massimo delle tecnologie informatiche dell’epoca, e il sistema assunse ben presto dimensioni e complessità ai limiti delle possibilità delle macchine disponibili.

UNIX

Dopo alcuni anni di sviluppo, divenne chiaro che il progetto era troppo ambizioso, e le funzionalità previste di MULTICS troppo difficili da implementare, e i ricercatori coinvolti cominciarono a considerare soluzioni alternative. Tra questi, Dennis Ritchie e Ken Thompson proposero un sistema ridotto all’essenziale, traendo dal progetto MULTICS solo gli aspetti che sembravano loro indispensabili. Ne nacque un sistema più snello, meno ambizioso ma più pratico: lo chiamarono UNIX (il nome pare che sia stato suggerito da Brian Kernighan, successivamente coinvolto nello sviluppo del linguaggio C).

Ottenuta l’approvazione dei laboratori Bell, nel 1969 Ritchie e Thompson iniziarono la scrittura del nuovo sistema operativo su di un computer Digital PDP-7 e nell’arco di un paio di anni il sistema divenne funzionante e stabile:

una unità di processo a 16 bit grande come un frigorifero, una memoria RAM di 384 KB a nuclei di ferrite e due telescriventi permettevano a due operatori di lavorare sul sistema in contemporanea.

Linguaggio C

La scrittura del kernel di Unix avveniva ancora in linguaggio assembly: la stesura del codice e il suo debugging era perciò molto laboriosa. Per velocizzare il lavoro, decisero di utilizzare un linguaggio di programmazione di più alto livello e in grado di generare codice ottimizzato dalle prestazioni paragonabili al codice assembly. Dopo vari perfezionamenti, il linguaggio venne chiamato C, e già il nome è indice della sua stringatezza. Quasi tutto il kernel e tutti i programmi di sistema vennero riscritti in C e compilati per ottenere il codice macchina eseguibile. Un altro vantaggio di questa scelta fu che il trasporto del sistema su nuove macchine veniva enormemente facilitato (la famosa portabilità): per generare il sistema su di un nuovo computer bastava istruire il compilatore C per generare il codice specifico di quella macchina, dopodiché i sorgenti del sistema operativo Unix potevano esser compilati.

In virtù della sua natura di progetto di ricerca, il laboratorio Bell scelse di distribuire gratuitamente i sorgenti di Unix presso le università e gli altri istituti di ricerca sparsi nel mondo: così ben presto Unix diventò disponibile su una varietà di macchine diverse, e con esso si diffondeva anche il C come linguaggio di riferimento per il software di sistema realizzato in questo ambiente.

Nel 1974 il progetto Unix aveva raggiunto la sua maturità, e cominciavano a moltiplicarsi anche le installazioni per uso aziendale, oltre che per uso di ricerca. Ad indicare questa maturità raggiunta, i Bell Labs registrarono il marchio Unix® e pacchetizzarono il prodotto con il nome di Unix System III, sebbene non siano mai esistiti un System II o un System I.

La famiglia cresce

Dagli originali sorgenti in circolazione per il mondo, presero anche a moltiplicarsi varianti sul tema: praticamente ogni costruttore di computer realizzò una propria implementazione di Unix. I nomi di questi sistemi operativi, per ragioni di marchio, ereditarono da Unix almeno la U o la X in modo da essere facilmente riconoscibili.

Nel 1984, a seguito della applicazione delle norme antitrust, il governo USA decise per lo scorporamento dalla AT&T di varie attività, tra le quali anche i laboratori Bell, oggi di proprietà di Lucent Technologies Inc. A seguito delle ristrettezze economiche conseguenti, i Bell Labs furono costretti a cedere in licenza vari gioielli di famiglia, e tra essi anche il marchio Unix, oggi di proprietà del consorzio Open Group. Intanto, il sistema Unix giungeva alla sua versione System V Release 4: questa va considerata come l’implementazione di riferimento per le altre implementazioni commerciali realizzate dalle ditte che appartengono al consorzio:

  • SunOS (basato su BSD), poi Solaris (basato su System V R4) di Sun Microsystems;
  • AIX di IBM;
  • HP-UX di Hewlett Packard;
  • A-UX di Apple;
  • Xenix di Microsoft;
  • SCO Unix;
  • Compaq Tru64;
  • SGI IRIX;
  • ecc…

Alcuni di questi prodotti non sono più in circolazione da anni.

Altre implementazioni simil-Unix, come il sistema BSD della università di Berkley, proseguivano parallelamente la loro strada generando a loro volta nuovi membri della famiglia:

Genealogy Tree

Il progetto GNU

A metà degli anni ‘80 Richard Stallman, ricercatore del MIT a Boston, lancia la sfida per un nuovo sistema operativo libero (free software - free as in freedom): il progetto si chiama GNU (gioco di parole che significa «GNU’s Not Unix», tipico esempio di acronimo ricorsivo molto diffuso nel mondo hacker) e che punta a realizzare l’ennesima implementazione, questa volta completamente libera di Unix (nel senso delle 4 libertà fondamentali del software riportate nella licenza GPL creata ad-hoc). All’inizio degli anni ‘90 il progetto GNU vede all’attivo un gran volume di software che man mano si diffonde sugli UNIX proprietari per il loro altissimo livello di qualità e affidabilità (compilatori, editor, system-utilities). Per consentire un sistema totalmente indipendente e autonomo però manca solo il cuore, cioè il kernel. Su questa mancanza il progetto si arena per un po’.

Il kernel Linux

Nel 1991 Linus Torvalds, studente della facoltà di informatica presso l’università di Helsinky (Finlandia) annuncia di aver realizzato un kernel per processori Intel 386 su piattaforma IBM-PC-compatibile. In omaggio alla tacita convenzione sui nomi, l’amministratore del server FTP dell’università chiama il file contenente il sorgente del kernel Linux. Linus sceglie di distribuire liberamente il proprio programma con la licenza GNU GPL. Di conseguenza, Linux costituiva il tassello mancante del grande progetto GNU. Il sistema operativo risultante, completo di kernel Linux, compilatore gcc, librerie a programmi applicativi di base assume quindi il nome di sistema operativo GNU/Linux.

Grazie alla popolarità e al basso costo delle macchine sul quale è implementato, GNU/Linux si diffonde rapidamente attraverso la rete Internet. Nascono le distribuzioni Linux, versioni variamente pacchettizzate del sistema GNU/Linux funzionanti su molteplici architetture (intel, POWER-PC, Alpha, ARM ecc…) e corredate da una quantità di software di altre parti. Oggi si contano decine di distribuzioni diverse realizzate intorno al nucleo centrale costituito dal software GNU/Linux.

Le più famose e mantenute attivamente sono:

  • Slackware, tra le primissime che nacquero l’unica ancora mantenuta;
  • Debian GNU/Linux, il sistema operativo universale;
  • Red Hat Enterprise Linux;
  • Fedora Linux, versione «community» e gratuita di Red Hat;
  • Gentoo Linux, basata sulla compilazione diretta dai sorgenti;
  • SuSE Enterprise Linux, recentemente acquisita da Novell;
  • Mandriva Linux, joint-venture franco-brasialiana delle ex Mandrake / Connectiva;
  • Ubuntu GNU/Linux, derivata da Debian e particolarmente orientata all’uso umano Smile ;
  • Freespire / Linspire Linux, ex «Lindows»;
  • Knoppix Live CD, il mitico sistema che si avvia direttamente da CD/DVD;

…e tantissime altre derivate e / o «assemblate» da semplici appassionati, tecnici, ricercatori.

Il kernel Hurd

Nella primavera 2002 il progetto GNU porta a compimento anche l’ultimo tassello del progetto, e viene annunciato il completamento del kernel Hurd basato su tecnologia a microkernel, che sarà presto in competizione con il kernel Linux (kernel di concezione monolitica).

Conclusioni

Possiamo affermare che i concetti alla base del sistema operativo Unix sono così efficaci che il modello è stato seguito, copiato e reinterpretato in infinite varianti. Si usa anche dire che chi vuole costruire un nuovo sistema operativo finisce per fare la brutta copia di Unix:

Who doesn’t know UNIX is condamned to reinvent it, poorly.

anche se forse un po’ forzata, questa affermazione illustra bene quanto i concetti di base di Unix abbiano influenzato il mondo dell’informatica negli ultimi 30 anni.

Bibliografia

La letteratura sul sistema Unix e annessi e connessi è sterminata. In realtà più che un sistema operativo si tratta di esplorare un universo, fatto delle sue terminologie, dei suoi usi e costumi, della sua filosofia di utilizzo e programmazione.

Alcuni siti di riferimento:

  • La storia di Unix e dei suoi protagonisti raccontata nel sito dei Bell Laboratories;
  • Il sito del consorzio Open Group che possiede il marchio UNIX;
  • Sito ufficiale dove sono riposti i sorgenti del kernel Linux;
  • Sito ufficiale del progetto GNU. Le ultime sul kernel Hurd.