Menu

Deprecated: Non-static method JApplicationSite::getMenu() should not be called statically in /web/htdocs/www.storiainformatica.it/home/templates/gk_news/lib/framework/helper.layout.php on line 175

Deprecated: Non-static method JApplicationCms::getMenu() should not be called statically in /web/htdocs/www.storiainformatica.it/home/libraries/cms/application/site.php on line 272

Deprecated: Non-static method JApplicationSite::getMenu() should not be called statically in /web/htdocs/www.storiainformatica.it/home/templates/gk_news/lib/framework/helper.layout.php on line 175

Deprecated: Non-static method JApplicationCms::getMenu() should not be called statically in /web/htdocs/www.storiainformatica.it/home/libraries/cms/application/site.php on line 272

Storia di UNIX (Unix History)

timeline

Le origini di Unix risalgono al 1960, quando AT&T (attreverso la divisione Bell Labs guidata daE. E. David, Jr.), Honeywell, General Electric, e il Massachusetts Institute of Tecnology attivano il progettoMULTICS(Multiplexed Information and Computing Service), finanziato dall'Agenzia Progetti di Ricerca Avanzata Dipartimento della Difesa ARPA.

MULTICS nasce per essere altamente scalabile e fornire servizi informatici 24 ore al giorno per 365 giorni all'anno, in modo da fornire al settore della difesa USA un nuovo strumento super affidabile per i propri compiti. In particolare, alla base delle sua progettazione, si trova il concetto di sicurezza multilivello,sia in riferimento ad attacchi esterni che a manomissioni interne. La security d’accesso riguarda in modo particolare i documenti, e si attestano su 5 configurazioni: Massimo SegretoSegretoConfidenzialeInformazione non classificata

Le premesse sono assolutamente di prim’ordine, ma la complessità viene sottostimata e nel 1969, dopo quasi 10 anni di lavoro, i Team di sviluppo si rende conto che quanto prospettato è al di là delle possibilità concrete di realizzazione, sia per difficoltà propriamente tecniche che per le difficoltà di comunicazione tra i vari centri di ricerca e sviluppo.

E’ doveroso sottolineare che il progetto MULTICS non muore nel 1969 ma viene portato avanti dal MIT insieme alla Honeywell (che acquisce la divisione computer di General Electric nel 1970). Il Massachusetts Institute of Tecnolog inizia ad utilizzare ufficialmente MULTICS ad ottobre del 1969, mentre la Honeywell annuncia una serie di calcolatori basati su MULTICS nel 1973. In entrambi i casi i sistemi resteranno in funzione per oltre un ventennio, generando introiti per diversi milioni di dollari. 

Lo sviluppo di MULTICS è continuato fino al 1987 grazie alla BULL (inizialmente parte di Honeywell, e successivamente capace di inglobare la stessa ex casa madre) e il suo utilizzo è durato per diversi anni dopo.

A questo punto i Bell Labs decidono di abbandonare il progetto e impiegare il proprio Team per progetti meno ambiziosi, ma più concreti dal punto di vista del mercato. Tra questi troviamo Ken Thompson, che ufficiosamente, durante le attività di sviluppo di MULTICS, realizza Space Travel, un simulatore del Sistema Solare che consente al giocatore di pilotare una navetta, navigando tra i pianeti e tentando anche di effettuare l’atterraggio.

Il gioco è scritto inizialmente in assembly per MULTICS e poi convertito in Fortran per GECOS (sistema operativo della GE messo a fattore comune per MULTICS). Il risultato non è propriamente entusiasmante:

 la simulazione soffre di frequenti «scatti» ed il gioco è difficile da controllare a causa dell’interazione tramite comandi da digitare sulla tastiera;

- il costo per partita è di circa 75$ se si considera il costo di impiego della CPU.

Thompson, supportato da Dennis Ritchie (anch'egli membro del TEAM di sviluppo di MULTICS) decide di sfruttare un PDP-7 poco utilizzato per realizzare una versione «avanzata» di Space Travel, ritenendo il suo sottosistema grafico assolutamente adeguato al compito. L’impresa è però ardua: i due colleghi devono riscrivere praticamente l’intero sistema di controllo dell’hardware da zero: dalle rutine di gestione dell’aritmetica in virgola mobile fino al sistema di Debug.

Il tutto viene creato in assembly con un cross-compiler che gira su GECOS e da cui si ricavano schede/nastri perforate/i da caricare nel PDP-7. Thompson si innamora del PDP-7 e decide di creare un file-system ed una serie di utility per operare direttamente con esso, senza la necessità di passare attraverso GECOS: nasce il primo embrione di UNIX!

A Thompson e Ritchie si unisce anche  Peter Neumann che suggerisce di adottare il nome UNIX per il nuovo sistema operativo.

Il nome derivava da un gioco di parole sull'acronimo MULTICS, ironizzando sul fatto che UNIX sarebbe riuscito a fare una cosa fondamentale che a MULTICS non era riuscita (almeno finchè AT&T era parte del progetto):eseguire programmi. Ovviamente il concetto di massima sicurezza non rientrava in questo obbiettivo.

La passione per il nuovo progetto porta i tre tecnici a rilasciare una prima release di UNIX dopo pochi mesi dall'inizio delle attività di sviluppo e ad effettuarne rapidamente il porting sul nuovo computer PDP-11 della Digital.

richie-n-thompson-pdp-11

Ritchie e Thompson al lavoro sul PDP-11

UNIX è costituito da programmi compatti chiamati "tools", ognuno dei quali esegue una specifica funzione e la loro combinazione permette di risolvere problemi complessi. Il lavoro successivo si concentra sull'aggiunta continua di nuovi tools e del miglioramento dei precedenti.

Una tappa fondamentale di UNIX (1973) è la quasi totale riscrittura del sistema con il nuovo linguaggio di programmazione scritto da Ritchie, il “C”, semplice, flessibili ed in grado di garantire una estrema portabilità dei programmi tra calcolatori diversi. In realtà, nonostante la possibilità reale di ricompilare agevolmente il sorgente, resta presente un forte elemento di dipendenza dalle modalità specifiche di gestione dell'I/O.

Un tentativo di porre rimedio, almeno parzialmente, a tale problematica è la "portable I/O library" di Mike Lesk. Bisogna comunque attendere il 1977 prima che lo Unix team decida di concentrarsi direttamente su un porting sistematico di UNIX stesso che delle singole librerie, abbracciando calcolatori come l'Interdata 8/32 e, nel 1978, il nuovo minicomputer VAX. UNIX, pur esseno un sistema operativo ancora sperimentale, diventa estremamente popolare in molte università e attira su di se l'attenzione di diverse aziende del settore: in sostanza il progetto non è più un mero esercizio sperimentale e acquisisce una road-map ben definita e il supporto ufficiale di AT&T.

Nell'arco di quattro anni (dal 1973 al 1977) si passa dalle 16 installazioni alle 500 di cui 125 nelle università e 10 in nazioni straniere.

Resta comunque il fatto che UNIX è un sistema per "esperti" che non esitano a modificarlo per adattarlo a diverse tipologie di calcolatori, tralasciando elementi fondamentali per un sistema operativo multi utente, come ad esempio la gestione degli accessi. In particolare le università sono un laboratorio di test importantissimo per Unix tant'è che a Berkeley, i due studenti Bill Joy Chuck Haley effettuano importanti modifiche sul codice originale (acquistato su nastro per 400$) e nel 1978 rilasciano una propria versione custom denominata "Berkeley Software Distribution”: ovvero BSD.

La crescita di popolarità di BSD spinge AT&T a crea uno UNIX Support Group (USG) per standardizzare lo sviluppo e la commercializzazione di UNIX, cosa che porta al rapido rilascio di System V, dichiarato come il nuovo "standard" UNIX. La mossa di AT&T spinge Berkeley a rilasciare la nuova release del proprio Unix come release "4.2" e non 5.0 per evitare confronti diretti e problemi legali dovuti alle nuove modalità di licenze imposte da AT&T.

L'interesse per BSD “UNIX” cresce costantemente negli anni successivi, complice il sostegno finanziario dell’ARPA, e nel giro di pochi anni BSD UNIX e AT&T UNIX (come viene ribattezzata la versione originale) divergono considerevolmente: diversa lunghezza dei nomi dei file (14 caratteri su AT&T e 255 su BSD), ma, soprattutto, BSD UNIX 4.2 dispone di un insieme di tool con i quali creare rapidamente una rete Lan.