Lo sviluppo di Unix rap­pre­sen­ta senz’ombra di dubbio una pietra miliare della storia dei computer. Il sistema operativo non ha soltanto apportato alcuni dei concetti basilari per le tecniche in­for­ma­ti­che, come ad esempio il file system strut­tu­ra­to ge­rar­chi­ca­men­te in cartelle: è servito anche come base per lo sviluppo di altri sistemi, come ad esempio il sistema operativo di Apple macOS o il progetto open source Linux, il quale a propria volta ha dato vita a numerose de­ri­va­zio­ni come Ubuntu, Debian o Android mobile. In che senso Unix è divenuto una delle ap­pli­ca­zio­ni più influenti per la gestione dei computer e come ha potuto un team di svi­lup­pa­to­ri concepire le proprie idee solamente usando lavagne e appunti?

La prima pietra: il progetto Multics

Nel 1965 un gruppo di lavoro presentò la propria idea di un nuovo sistema operativo nell’ambito della Joint Computer Con­fe­ren­ce, una con­fe­ren­za tenuta negli Stati Uniti. Il gruppo con­si­ste­va di colleghi del Mas­sa­chu­setts Institute of Tech­no­lo­gy (MIT), della General Electric e dei Bell La­bo­ra­to­ries (Bell Labs) di AT&T (parte del di­par­ti­men­to ricerca e sviluppo di Nokia dal 2016). Bat­tez­za­ro­no il sistema operativo Mul­ti­ple­xed In­for­ma­tion and Computing Service, ab­bre­via­to in Multics. Il team per­se­gui­va approcci com­ple­ta­men­te nuovi, con par­ti­co­la­re at­ten­zio­ne al concetto di time sharing. Dunque Multics si può an­no­ve­ra­re tra i primi sistemi che con­sen­ti­va­no a più utenti di lavorare con­tem­po­ra­nea­men­te su uno stesso computer, con­di­vi­den­do il tempo di ela­bo­ra­zio­ne del pro­ces­so­re uti­liz­za­to.

Per il progetto il gruppo di lavoro di Multics aveva bisogno di un cal­co­la­to­re che sod­di­sfa­ces­se una serie di ca­rat­te­ri­sti­che: da un lato doveva disporre di un set di comandi puliti e strut­tu­ra­ti per poter uti­liz­za­re il previsto lin­guag­gio di pro­gram­ma­zio­ne PL/I di IBM. Dall’altro doveva anche essere in grado di sup­por­ta­re l’utilizzo con­tem­po­ra­neo di diversi utenti e lavorare in asincrono per mi­ni­miz­za­re le perdite di pre­sta­zio­ne nella gestione della memoria. Per questo motivo ini­zial­men­te si optò per il GE-635 e in seguito per il GE-645 di General Electric. Lo sviluppo fu condotto sul già esistente sistema mul­tiu­ten­te CTSS, che era stato svi­lup­pa­to dal MIT già agli inizi degli anni 60.

I ritardi nello sviluppo del PL/I Compiler, le impasse fi­nan­zia­rie, le dif­fe­ren­ze all’interno del gruppo e le crescenti pressioni dall’esterno portarono infine Bell Labs a ritirarsi dal progetto nel 1969.

Da Multics a Unix

Multics fu ul­te­rior­men­te svi­lup­pa­to presso il MIT e suc­ces­si­va­men­te com­mer­cia­liz­za­to sulle macchine Honeywell 6180 fino al 1986 da Honeywell In­ter­na­tio­nal Inc., dopo il suo acquisto da parte di General Electric. L’in­for­ma­ti­co Ken Thompson, che allora era col­la­bo­ra­to­re di Bell Labs, non abbandonò l’idea di un sistema mul­tiu­ten­te: insieme a Dennis Ritchie e a un piccolo team di AT&T iniziò a pia­ni­fi­ca­re un proprio sistema sulla base dei principi di Multics. La ricerca di un computer che si prestasse al progetto non ebbe ini­zial­men­te successo e poiché Bell Labs si era pro­nun­cia­ta contro l’eventuale acquisto di un esemplare che potesse fare al caso, gli svi­lup­pa­to­ri dovettero ac­con­ten­tar­si di mettere su carta e lavagna i propri progressi.

Alla fine riu­sci­ro­no a pro­cu­rar­si un mi­ni­com­pu­ter PDP-7 usato ap­par­te­nen­te a Digital Equipment Cor­po­ra­tion (DEC). Il cal­co­la­to­re in questione, che occupava “soltanto” lo spazio di un armadio a muro, fun­zio­na­va con il sistema operativo GECOS (General Electric Com­pre­hen­si­ve Operating System), che da questo momento servì da piat­ta­for­ma di sviluppo.

Presto nacquero strumenti software di grande im­por­tan­za come una riga di comando (sh), un editor (ed) ed un file system già esistente in forma cartacea, anche se ini­zial­men­te in un lin­guag­gio assembly (vicino all’hardware, ma sem­pli­fi­ca­to per gli utenti umani). Siccome il nuovo sistema operativo, al contrario di Multics, per­met­te­va l’accesso a soltanto due utenti, i quali potevano eseguire soltanto un processo alla volta, venne nominato Unics. A causa della li­mi­ta­zio­ne nelle lunghezze dei nomi dei file in GECOS, venne ab­bre­via­to in Unix.

Prima B, poi C: Unix viene dotato di un lin­guag­gio di pro­gram­ma­zio­ne proprio

Dopo aver creato Unix e qualche programma ele­men­ta­re, il team di Bell Labs si occupò di so­sti­tui­re il corrente lin­guag­gio assembly con varianti di minore com­ples­si­tà. Il piano per lo sviluppo di un com­pi­la­to­re per il lin­guag­gio IBM Fortran già esistente venne ab­ban­do­na­to dopo poco tempo. Al suo posto i col­la­bo­ra­to­ri ini­zia­ro­no a lavorare a una nuova lingua, che si orientava al modello PL/I (il lin­guag­gio di Multics) e BCPL (Basic Combined Pro­gram­ming Language), svi­lup­pa­to presso il MIT. A questo scopo Ritchie e gli altri scrissero da capo alcuni degli strumenti di sistema in questo lin­guag­gio im­pe­ra­ti­vo, fino a che nel 1970 ottennero un nuovo cal­co­la­to­re PDP-11 e dovettero ripensare nuove soluzioni, dato che la nuova ar­chi­tet­tu­ra di sistema non era, come invece quella del PDP-7 e del lin­guag­gio di pro­gram­ma­zio­ne B, orientata alle parole, bensì ai byte.

Nei due anni suc­ces­si­vi Bell Labs sviluppò il suc­ces­so­re di C, la cui sintassi e altre proprietà si trovano in vari linguaggi di pro­gram­ma­zio­ne moderni come l’esten­sio­ne C++, Java, Ja­va­Script, PHP e Perl. Nel 1973, quando il lin­guag­gio era ormai giunto a ma­tu­ra­zio­ne, il team di svi­lup­pa­to­ri iniziò a ri­scri­ve­re l’intero kernel di Unix in C. Il risultato venne reso pubblico dal team di Unix a metà degli anni 70. Poiché all’epoca AT&T, un mo­no­po­li­sta con­trol­la­to dallo stato nel settore delle te­le­co­mu­ni­ca­zio­ni, non era au­to­riz­za­to a vendere alcun software, Unix (versione 6), nel frattempo un sistema mul­tiu­ten­te che con­sen­ti­va anche diversi processi con­tem­po­ra­nea­men­te, fu reso di­spo­ni­bi­le gra­tui­ta­men­te in tutte le uni­ver­si­tà in­te­res­sa­te con incluso un com­pi­la­to­re C che rendeva il sistema uti­liz­za­bi­le su quasi tutte le piat­ta­for­me.

Hardware friendly e open source: Unix conquista la scena degli svi­lup­pa­to­ri

Con il rilascio del software Unix per le isti­tu­zio­ni educative iniziò la marcia trionfale del nuovo sistema operativo, ini­zial­men­te più che altro come gio­cat­to­lo per i pro­gram­ma­to­ri.

Gli ordinari processi di lavoro sugli ex mainframe IBM e sulle macchine PDP con­ti­nua­va­no a fun­zio­na­re, infatti, su sistemi nativi come RSX-11, RT-11 o IST. Per gli svi­lup­pa­to­ri il valore del codice sorgente creato dal kernel e le relative ap­pli­ca­zio­ni non si limitava certo a una semplice espe­rien­za di ap­pren­di­men­to: Unix ri­chie­de­va davvero poco agli hardware, inoltre la facilità di utilizzo invitava a spe­ri­men­tar­lo e svi­lup­par­lo ul­te­rior­men­te. A rac­co­glie­re la sfida fu so­prat­tut­to l’Uni­ver­si­tà di Ca­li­for­nia a Berkley, l’uni­ver­si­tà da cui proveniva Thompson, anche grazie al con­tri­bu­to di un pro­fes­so­re in visita nel neonato di­par­ti­men­to di in­for­ma­ti­ca.

Così Bill Joy e Chuck Haley, che all’epoca erano studenti, mi­glio­ra­ro­no Pascal, il sistema svi­lup­pa­to da Thompson, e pro­gram­ma­ro­no con ex un editor di testo com­ple­ta­men­te nuovo, pre­de­ces­so­re di vi, tuttora una delle in­stal­la­zio­ni standard nei sistemi unixoid. Nel 1977 apparve infine una variante di Unix mo­di­fi­ca­ta sotto la direzione di Joy, che conteneva tutte le migliorie e gli sviluppi ottenuti fino a quel momento. La Berkeley Software Di­stri­bu­tion (BSD), che suc­ces­si­va­men­te integrò tra gli altri il pro­to­col­lo network TCP/IP nell’universo di Unix rendendo ap­pe­ti­bi­le per la prima volta l’im­po­sta­zio­ne di un sistema operativo libero (grazie alla licenza BSD), è con­si­de­ra­ta da allora una delle varianti più im­por­tan­ti di Unix.

Gli anni 80: la com­mer­cia­liz­za­zio­ne e la guerra di Unix

Negli anni suc­ces­si­vi le continue e si­gni­fi­ca­ti­ve in­no­va­zio­ni at­ti­ra­ro­no l’at­ten­zio­ne di tutto il mondo, mentre gli aspetti fi­nan­zia­ri di­ve­ni­va­no sempre più im­por­tan­ti. Già nel 1979 Microsoft acquisì una licenza Unix V7 per svi­lup­pa­re tra le altre cose le porte per i pro­ces­so­ri Intel e Motorola. Negli anni suc­ces­si­vi l’azienda di software pubblicò Xenix, inteso come sistema operativo standard per i PC, che però aveva requisiti hardware piuttosto elevati. Microsoft affidò la ricerca per lo sviluppo a SCO (Santa Cruz Operation), un pro­dut­to­re di software, per con­cen­trar­si su OS/2 e sullo sviluppo di MS-DOS.

Anche Bill Joy nel 1982 prese parte alla com­pe­ti­zio­ne aprendo l’azienda Sun Mi­cro­sy­stems, pro­prie­ta­ria del sistema basato su BSD SunOS (il pre­de­ces­so­re di Solaris), spe­ci­fi­ca­men­te pro­get­ta­to per l’uso su server e work­sta­tion.

Tra AT&T, che nel frattempo aveva ottenuto il permesso per la com­mer­cia­liz­za­zio­ne, e l’Uni­ver­si­tà di Berkeley, che si era con­trad­di­stin­ta grazie a numerosi pro­gram­ma­to­ri per la qualità e quantità di in­no­va­zio­ni, esplose quindi una vera e propria lotta per godere dei vantaggi di Unix. Così ini­zial­men­te AT&T cercò di con­qui­sta­re il mercato con il System III (1981) e in par­ti­co­la­re con l’ot­ti­miz­za­to System V (1983), entrambi basati su Unix V7, mentre l’Uni­ver­si­tà di Berkeley pubblicò con­tem­po­ra­nea­men­te 4.2BSD, per il quale furono ri­la­scia­te più di 1.000 licenze in 18 mesi. Era si­cu­ra­men­te molto più amato del System V, che era a pagamento e che ol­tre­tut­to, rispetto alla variante di Berkeley, non disponeva del Fast File System (FFS) e delle pos­si­bi­li­tà di net­wor­king (grazie al TCP/IP).

Con il quarto release del System V (1988), AT&T im­ple­men­tò queste e altre funzioni di BSD, ma anche di Xenix e SunOS, il che portò molti utenti a decidersi per la soluzione com­mer­cia­le.

Unix diventa una soluzione server

Se i vari sistemi Unix com­pe­te­va­no tra loro nella ricerca delle soluzioni migliori e per il bene della propria comunità, Apple e Microsoft in­gag­gia­ro­no una gara nel settore dei personal computer e suc­ces­si­va­men­te nell’ambiente server. Mentre Microsoft era con­cen­tra­ta sulla corsa ai PC domestici, nel 1991 apparse sulla scena Linux, un sistema basato su Unix che si preparava a con­qui­sta­re negli anni seguenti l’ambiente server. Con questo pacchetto creato da un kernel a licenza gratuita e con il software GNU, anch’esso di­spo­ni­bi­le gra­tui­ta­men­te, lo svi­lup­pa­to­re Linus Torvalds soddisfò il desiderio di un sistema operativo open source con­cor­ren­zia­le, colpendo pie­na­men­te nel segno. A oggi esistono numerose de­ri­va­zio­ni di Unix-Linux, come Debian, CentOS, Red Hat o Ubuntu, chiamati anche derivati, come software di sistema per server di tutti i tipi. In par­ti­co­la­re Ubuntu è sempre più amato per i PC di casa. Linux, di cui abbiamo parlato più dif­fu­sa­men­te nel nostro articolo su Linux, non è però l’unico dei suc­ces­so­ri di Unix a poter vantare grandi successi nel mondo dei computer: a partire da Mac OS X 10.0 e Mac OS X Server 1.0, il sistema operativo di Apple si basa su Darwin, una variante gratuita di BSD. Lo stesso Unix di Berkeley compare con numerose de­ri­va­zio­ni gratuite come FreeBSD, OpenBSD o NetBSD. Con iOS (lo stesso sistema di macOS) e Android (basato sul kernel di Linux), anche i sistemi operativi più diffusi per i di­spo­si­ti­vi mobili ap­par­ten­go­no alla famiglia di Unix.

Che cos’è Unix: le ca­rat­te­ri­sti­che più im­por­tan­ti

L’im­por­tan­za di Unix consiste in­nan­zi­tut­to nel fatto che molte delle sue ca­rat­te­ri­sti­che sono state un’in­no­va­zio­ne epocale per i tempi, che non soltanto hanno in­fluen­za­to i suc­ces­si­vi sviluppi dei sistemi unixoid, ma sono state as­si­mi­la­te anche dai con­cor­ren­ti Apple e Microsoft per i loro sistemi operativi. In par­ti­co­la­re sono le seguenti ca­rat­te­ri­sti­che ad aver reso Unix un apripista per i moderni sistemi operativi:

File system ge­rar­chi­co e uni­ver­sa­le

Fin dall’inizio un elemento fon­da­men­ta­le di Unix fu l’or­ga­niz­za­zio­ne ge­rar­chi­ca del file system che per­met­te­va all’utente di strut­tu­ra­re i file in cartelle. Alla directory root (root significa radice), con­tras­se­gna­ta dalla barra “/”, può essere assegnato un numero a piacere di sot­to­di­rec­to­ry. Secondo il principio di base “eve­ry­thing is a file” (“tutto è un file”) Unix può raf­fi­gu­ra­re unità, dischi rigidi, terminali o cal­co­la­to­ri esterni come file di di­spo­si­ti­vo nel file system. Inoltre alcuni derivati, tra cui anche Linux, mostrano i processi e le loro proprietà come file nel file system virtuale procfs.

Ese­cu­zio­ne di diversi processi con­tem­po­ra­nea­men­te (mul­ti­ta­sking)

Decisiva per il successo di Unix fu anche la pos­si­bi­li­tà di eseguire più processi o programmi allo stesso tempo, senza che si in­tral­cias­se­ro a vicenda. Per evitare ciò, infatti, il sistema operativo fin dall’inizio si basava sul mul­ti­ta­sking pre­ven­ti­vo: questo metodo, il co­sid­det­to scheduler (dall’inglese schedule = sca­den­za­rio), che è parte del kernel del sistema operativo, si fa carico dei singoli processi seguendo un sistema di priorità. Apple e Microsoft giunsero a simili soluzioni per la gestione dei processi molto più tardi, soltanto negli anni 90.

Sistema a più utenti (multiuser system)

Già a partire da Multics il fine prin­ci­pa­le era quello di rea­liz­za­re un sistema che con­sen­tis­se a più utenti di lavorare con­tem­po­ra­nea­men­te. A questo scopo venne assegnato un pro­prie­ta­rio a ogni programma e processo. E anche se ini­zial­men­te Unix era limitato a soltanto due utenti, questa rimane una ca­rat­te­ri­sti­ca che con­trad­di­stin­gue dall’inizio il portfolio del software di sistema. Il vantaggio di un tale sistema mul­tiu­ten­te non è soltanto la pos­si­bi­li­tà di poter uti­liz­za­re nello stesso momento singoli pro­ces­so­ri, ma anche la relativa gestione dei diritti: gli am­mi­ni­stra­to­ri potevano ora definire diversi diritti di accesso e di­spo­ni­bi­li­tà di risorse per diversi utenti. Per fare ciò era però in­nan­zi­tut­to ne­ces­sa­rio che l’hardware del computer lo per­met­tes­se.

Pos­si­bi­li­tà di net­wor­king

Con il rilascio del 4.2BSD nel 1983, Berkeley Unix fu uno dei primi sistemi operativi a integrare lo stack del pro­to­col­lo Internet, e ha così fornito la base per Internet e una semplice con­fi­gu­ra­zio­ne di rete, con­sen­ten­do di agire come client o server.

Alla fine degli anni 80 con la citata quarta versione del System V, si affacciò sul mercato anche una variante del sistema AT&T com­mer­cia­le, nel quale venne inserita la leg­gen­da­ria famiglia di pro­to­col­li nel kernel. Windows, invece, poté sup­por­ta­re un’esten­sio­ne cor­ri­spon­den­te soltanto con il 3.11 (1993) un’esten­sio­ne cor­ri­spon­den­te.

In­di­pen­den­za della piat­ta­for­ma

Ai tempi della nascita di Unix, mentre in generale gli altri sistemi operativi e le loro ap­pli­ca­zio­ni erano fi­na­liz­za­ti spe­ci­fi­ca­men­te a un preciso tipo di pro­ces­so­re, il team di Bell Labs si mosse fin da subito nella direzione di un sistema portatile. In realtà si iniziò con un lin­guag­gio assembly, ma, non appena rea­liz­za­ta la struttura di base del software di sistema, fu avviato il progetto di un lin­guag­gio di pro­gram­ma­zio­ne di livello superiore, dal quale sarebbe nato lo storico lin­guag­gio C.

Di fatto le com­po­nen­ti scritte in C, no­no­stan­te fosse incluso un compiler, erano ancora molto legate all’ar­chi­tet­tu­ra delle macchine PDP, che Ritchie e gli altri uti­liz­za­va­no come base per i propri lavori. Con la versione Unix V7, che era stata for­te­men­te rivista (1979), il sistema operativo si è gua­da­gna­to la re­pu­ta­zio­ne di sistema portatile.

Il principio di Unix toolbox e la shell

I sistemi Unix combinano una quantità di tool e comandi che nor­mal­men­te sono concepiti soltanto per pochi compiti specifici. Per questo Linux attinge ad esempio ai tool di GNU. Per la generale ri­so­lu­zio­ne dei problemi vale il principio di trovare risposte in com­bi­na­zio­ne con tool standard, anziché di svi­lup­pa­re nuove pro­gram­ma­zio­ni spe­ci­fi­che. Il tool più im­por­tan­te da questo punto di vista è sempre stata la shell (sh), un’in­ter­pre­te di comandi orientata al testo che offre ampie opzioni di pro­gram­ma­zio­ne. La classica in­ter­fac­cia utente si può uti­liz­za­re anche senza un’in­ter­fac­cia grafica grafica, anche se una tale in­ter­fac­cia, che è entrata nell’ambiente Unix al più tardi con Linux, aumenta na­tu­ral­men­te la sem­pli­ci­tà di utilizzo. La shell offre una serie di vantaggi per gli utenti esperti:

  • Fun­zio­na­men­to sem­pli­fi­ca­to grazie al com­ple­ta­men­to au­to­ma­ti­co
  • Funzione copy-paste
  • Uti­liz­za­bi­le in modo in­te­rat­ti­vo (accesso diretto) o non in­te­rat­ti­vo (ese­cu­zio­ne di script)
  • Grande fles­si­bi­li­tà, poiché le singole ap­pli­ca­zio­ni (strumenti, comandi) sono com­bi­na­bi­li quasi li­be­ra­men­te
  • In­ter­fac­ce utente stan­dar­diz­za­te e stabili, cosa non sempre garantita con un GUI
  • Do­cu­men­ta­zio­ne au­to­ma­ti­ca dei percorsi di lavoro degli script
  • Im­ple­men­ta­zio­ne veloce e semplice delle ap­pli­ca­zio­ni

In sintesi: chi vuol capire un sistema operativo deve dare uno sguardo a Unix

L’ascesa di Microsoft e Apple, legata a doppio filo ai fondatori Bill Gates e Steve Jobs, non ha si­cu­ra­men­te eguali. Le ragioni dell’enorme successo di entrambe le mul­ti­na­zio­na­li risiedono si­cu­ra­men­te nell’operato pio­nie­ri­sti­co di Dennis Ritchie, Ken Thompson e del resto del team Unix negli anni tra il 1969 e il 1974. Unix non soltanto portò a diversi tipi di derivati propri, ma ha anche in­fluen­za­to altri sistemi operativi con i propri concetti come quello del file system strut­tu­ra­to ge­rar­chi­ca­men­te, la potente shell o la por­ta­bi­li­tà. Al fine di im­ple­men­ta­re quest’ultimo è stato svi­lup­pa­to C, il lin­guag­gio di pro­gram­ma­zio­ne più influente della storia dei computer.

Per farsi un’idea delle pos­si­bi­li­tà di lin­guag­gio e dell’insieme di funzioni dei sistemi operativi, non c’è miglior oggetto di os­ser­va­zio­ne di un sistema Unix. Ol­tre­tut­to non dovete per forza ricorrere a una delle varianti classiche: di­stri­bu­zio­ni Linux come Gentoo o Ubuntu sono ag­gior­na­te alle moderne esigenze, senza tuttavia ri­nun­cia­re alla funzione prin­ci­pa­le, il massimo controllo sul sistema. Con macOS, che è si­cu­ra­men­te più adatto ai prin­ci­pian­ti, si è invece un po’ più limitati nelle pos­si­bi­li­tà. Questo sistema operativo riesce a coniugare con maestria la potente base Unix a un’in­ter­fac­cia grafica dal design ac­cat­ti­van­te.

Vai al menu prin­ci­pa­le