Di solito, quando leggiamo un albero genealogico, siamo di fronte ad una struttura molto simile ad un albero. In qualche rara occasione è possibile trovare un incrocio con consanguinei, ma in generale tali alberi sono strutture planari.
L’albero genealogico di Unix racconta invece una genesi complessa e frazionata.
Nella seconda metà degli anni sessanta, i Bell Labs decisero di contribuire allo sviluppo di Multics (MULTiplexed Information and Computing Service), un sistema operativo in time-sharing basato su memoria virtuale. Il progetto pose le base per i successivi sistemi operativi, tuttavia il suo sviluppo fu lento. Per questo motivo nel 1969 i Bell Labs decisero di abbandonare il progetto.
All’inizio degli anni 70 i Bell Labs diedero vita ad Unix, un sistema operativo multitasking e multiutente. Poco dopo AT&T, l’azienda controllante i Bell Labs, decise di concedere in licenza il sistema operativo ad altre aziende ed università. Ciascun licenziatario estese il sistema operativo originale, dando vita a tante diverse versioni, simili, ma spesso incompatibili tra di loro.
Le differenze sono riassumibili in:
- differenti layout del filesystem
- differenti funzioni e librerie disponibili
- differenti piattaforme HW supportate
Nella seguente immagine è possibile vedere come l’albero genealogico di Unix sia contorto e complesso.
In un mondo caratterizzato da una frammentazione così spinta e dalla fusione delle funzionalità tra release diverse, ciascuna azienda proponeva una propria versione di Unix, simile ma mai completamente compatibile con le offerte di altre software house. Le vittime di questa frammentazione erano gli sviluppatori e gli utenti finali, che non erano in grado di fornire e/o fruire degli stessi strumenti su tutte le piattaforme. Il grado di frustrazione dovuto a questa frammentazione portò gli utenti di Unix a coniare il nome Unix Wars per descrivere la situazione.
Al fine di superare questa impasse vennero lanciate diverse iniziative:
- Nel 1984 venne creato il consorzio X/Open
- Nel 1985 AT&T lanciò le specifiche System V Interface Definition (SVID)
- Nel 1988 IEEE rilasciò le specifiche Posix. Queste specifiche divennero rapidamente obbligatorie per i bandi dell’amministrazione pubblica americana e di conseguenza ebbero una ampia diffusione nel giro di pochi mesi.
Grazie all’adozione delle specifiche Posix il porting del software tra Unix System V e BSD divenne molto più semplice.
Ci si potrebbe chiedere perché Linux non è nell’albero genealogico. La risposta sta nel significato del nome stesso di Linux: Linux Is Not UniX. In una intervista, Linus Torvalds stesso afferma che se avesse potuto avere accesso a 386BSD prima di iniziare a sviluppare Linux, probabilmente non avrebbe sviluppato il suo sistema operativo:
M: What is your opinion of 386BSD?
L: Actually, I have never even checked 386BSD out; when I started on Linux it wasn’t available (although Bill Jolitz’ series on it in Dr. Dobbs’ Journal had started and were interesting), and when 386BSD finally came out, Linux was already in a state where it was so usable that I never really thought about switching. If 386BSD had been available when I started on Linux, Linux would probably never had happened.
Allo stesso modo, anche Minix è basato su dei sorgenti indipendenti dalla stria di Unix. Minix è un sistema operativo sviluppato dal professor Andrew Tanenbaum, per scopi didattici.
Sia Linux che Minix sono compatibili con le specifiche POSIX, anche se non sono ufficialmente certificati.
Come vedremo in un post futuro, questo ecosistema ricco di sistemi operativi simili ma non identici che vengono eseguiti su architetture hardware anche molto diverse tra di loro ha generato la necessità di strumenti in grado di riconoscere su quale combinazione di hardware e software si sta cercando di compilare il programma e di adattare dinamicamente il codice per superare queste diversità. Come vedremo, questi strumenti di portabilità giocano un ruolo fondamentale non solo nello sviluppo di applicazioni per computer, ma anche per lo sviluppo di sistemi embedded.
comments powered by Disqus