Linus ha copiato Tanenbaum?

Storie di kernel e microkernel

Ken Brown, della fondazione Alexis de Tocqueville Institution, sosteneva, in un suo studio di qualche anno fa che Linux non è altro che una copia mal riuscita di Minix. Ovviamente questa affermazione è priva di fondamento e lo stesso Tanenbaum replicò che tutto  questo è falso.
Circa trenta anni fa, alla fine degli anni settanta, per acquistare una licenza Unix occorrevano più di 40.000 dollari e anche le università, sebbene usufruissero di forti sconti, dovevano spendere non meno di 7.000/8.000 dollari. Questa è stata una delle ragioni principali che hanno indotto il professor Andrew Tanenbaum a scrivere Minix, in modo che i suoi studenti avessero a disposizione un qualcosa su cui studiare e mettere in pratica il suo libro di testo, compatibile con Unix ma senza licenza da pagare.
Minix era (ed è ancora) un sistema a microkernel modulare e la gestione della memoria e il file system venivano eseguiti come processi in user space. Ma non solo questo: venivano eseguite in user space tutte le funzionalità che era possibile portare fuori dal kernel Questo rendeva il microkernel più affidabile di un grosso kernel monolitico, più semplice da mantenere e sul quale è più facile correggere gli errori.
Linus Torvalds conosceva bene Minix perchè lo utilizzava e conosceva bene i libri di Tanenbaum. Probabilmente non conosceva  Unix, perchè non credo potesse avere accesso al codice sorgente.  Se questo è vero, mi sembra naturale che Linus si sia ispirato a Tanenbaum, ma il codice di Linux è stato scritto da zero e su questo non ci sono dubbi.
Lo stesso Tanenbaum dice in proposito:
“Minix è un simpatico e modulare sistema a microkernel, con un gestore della memoria e un file system che venivano eseguiti come processi nello spazio utente. Questo rende il sistema più chiaro e più affidabile di un grosso kernel monolitico e più facile da correggere e mantenere, con un piccolo prezzo in prestazioni: perfino in un 8088 a 4.77 MHz si avvia in circa 5 secondi (contro un minuto per Windows su un hardware 500 volte più veloce). Invece di scrivere un nuovo file system e un nuovo gestore di memoria, che sarebbe stato facile, Linus riscrisse tutto quanto come un grosso kernel monolitico. La prima versione di Linux era come una macchina del  tempo. Portava indietro a un sistema peggiore di quello che aveva già sulla sua scrivania. Naturalmente era solo un ragazzo e non sapeva far di meglio. Ma produrre un sistema che era fondamentalmente differente dalla base da cui era partito mi sembra una chiara prova che era una progettazione da zero…….
Io non penso che abbia copiato UNIX perché non aveva accesso al codice sorgente di UNIX, eccetto forse il libro di John Lions, relativo a una precedente versione di UNIX che non assomiglia molto a Linux. Alcuni possono trovare strano che io stia difendendo Linus in questa sede, conclude Tanenbaum. Dopo tutto, io e lui abbiamo avuto un “dibattito”pubblico alcuni anni fa. Il mio interesse primario è cercare di ottenere la verità, io e Linus non siamo “nemici” o niente del genere. L’ho incontrato una volta e mi è sembrato un ragazzo simpatico, amichevole e intelligente. L’unica cosa che mi dispiace è che non ha sviluppato Linux sulla base della tecnologia a microkernel di MINIX. Con tutti i problemi di sicurezza che Windows ha adesso, è ovvio in maniera crescente a tutti che piccoli microkernel, come quelli di MINIX, sono una base migliore per i sistemi operativi che grossi sistemi monolitici. Linux è stato vittima di minori attacchi rispetto a Windows perché è effettivamente più sicuro, ma anche gran parte degli attaccanti prendono di mira Windows perché offre un bersaglio più grande, e quindi Windows viene attaccato di più…… La mia conclusione è che Ken Brown non sapeva di cosa stava parlando”.

Ricapitolando e riassumendo molte dichiarazioni di Linus Torvalds e anche di Andrew Tanenbaum, Linus, studente universitario, si mise a studiare il nuovo processore Intel 80386. Questo aveva caratteristiche completamente diverse dai precedenti processori (multitasking e altro). Linus utilizzava Minix, uno strumento didattico eccellente ma non era certo un vero sistema operativo.  Torvalds voleva migliorare Minix; ma non ci riuscì e, allora, iniziò lo sviluppo di un kernel che permettesse di scrivere una versione libera di UNIX. Torvalds e Tanenbaum non resero disponibili i loro prodotti con gli stessi criteri: Tanenbaum pretendeva che chiunque realizzasse del codice per il suo Minix, poi lo avrebbe dovuto preventivamente sottoporre alla sua approvazione, mentre invece Torvalds diede libertà assoluta agli sviluppatori, mantenendo per sè solamente il marchio.
Probabilmente, a mio modesto parere Andrew Tanenbaum è uno dei più grandi programmatori della storia. Le sue intuizioni nello sviluppare Minix potevano portare ad un prodotto vincente, forse migliore anche di Linux. Il sottoporre alla sua approvazione il tutto è stato probabilmente il freno allo sviluppo di Minix.

fonti:
http://michele.sciabarra.com/
http://www.key4biz.it/News/2004/05/25/

2 commenti

  1. GipPasso
    Pubblicato 15 luglio 2010 alle 12:47 | Permalink

    Firefox 3.5.10 Linux

    Da più di un anno sento parlare dei micro-kernel come una soluzione molto più versatile e sicura soprattutto in un contesto in cui le macchine su cui devono girare si è allargato moltissimo.

    Dal kernel per inter 80386 siamo oggi di fronte non solo a un numero di architetture diffuse anche nei prodotti per tutti che una volta era appannaggio ristretto delle macchine per ricerca o scopi altamente specifici. Siamo di fronte alla rivoluzione della struttua, con un parallelismo sempre più necessario e diffuso.
    Avere molti centri di elaborazione dell’informazione consentirà anche di abbassare i consumi senza perdere in versatilità (un core al doppio della frequenza consuma più di due core a frequenza dimezzata).

    La cosa più interessante da esplorare è però la possibilità offerta a chi amministra il sistema di poter riavviare e correggere difetti in servizi e driver molto più a basso livello di quanto si possa fare oggi il tutto senza riavviare la macchina (fattore critico in non poche realtà).

    Hurd è un mucro-kernel, no?

    Debian ci gira già sopra. Passare da Debian GNU/Linux a GNU/Hurd penso mi comporterebbe perdite di tempo trascurabili.

    Il linux di oggi è in effetti parecchio grande. Il software libero è, se non altro, strutturato in maniera talmente modulare che credo, come dicevo, che il passaggio a un nuovo kernel non sia un problema (per gli utenti!). Altro discorso è organizzare uno sviluppo organico in tal senso.

    Vediamo cosa salta fuori.
    GipPasso

  2. Francesco
    Pubblicato 18 agosto 2010 alle 18:42 | Permalink

    Firefox 3.6.8 Ubuntu 10.04

    Una delle poche delusioni che ho avuto da Linux è proprio scoprire che è monolitico (mentre Windows e Mac sono già ibridi). A quanto pare non è poi un problema, visto quello che sono riusciti a farci… ma è un peccato essere ancorati ad una soluzione “vecchia” (come lo stesso Torvalds in linea di principio ha ammesso, nella famosa discussione con Tanenbaum).

    Ma, che alternative ci sono… lo GNU Hurd? Sarebbe fantastico… ma sarà mai una realtà? E quando, nel 2015? Nel 1990 erano convinti che sarebbe stato pronto definitivamente per il 1995, e s’è visto… che speranze si possono riporre in un progetto che resta 20 anni senza neppure raggiungere uno stadio di “beta”??

    Non appena avrò tempo proverò MINIX 3… ma non so se aspettarmi molto da qualcosa che, leggo su Wikipedia, è pensato “ad esempio per dispositivi embedded” :/

Scrivi un commento

La tua e-mail non sarà mai comunicata ad altri. I campi obbligatori sono contrassegnati con un *

*
*

- Inizio pagina -