La rubrica Tech è direttamente collegata alla sezione omonima del sito: http://golem.pcriot.com/t00index.html
Si parla di informatica e tecnologie in genere, con un occhio di riguardo per il mondo Open e per quegli ambiti che si intrecciano con la società.
Questo articolo è tratto da http://golem.pcriot.com/tech/t001kernel.html
Parla di una recente dichiarazione di Linus Torvalds, secondo il quale il kernel Linux sta diventando troppo lento e ciccione e non ne vede una soluzione. Ma è davvero così? Intendeva davvero questo?
@ La dichiarazione
Partiamo coi dati di fatto. Qui trovate l’evento originale (in inglese off course!) nel quale Linus Torvalds rilascia questa dichiarazione:http://events.linuxfoundation.org/events/linuxcon . Qui invece potete leggere la notizia come viene fornita da Punto Informatico: http://punto-informatico.it/2712803/PI/News/linus-attacca-linux.aspx
Faccio un brevissimo e stringato riassunto della cosa, per i pigri che non hanno voglia di aprire link o leggere troppo. In pratica Linus Torvalds, che come saprete (lo sapete vero?) è l’inventore del kernel Linux, ha dichiarato che questa sua creatura gli è sfuggita di mano. Ha detto che ormai è da un po’ che esula dal suo scopo iniziale, per il quale avrebbe dovuto essere un kernel compatto, leggero e veloce. Adesso, dice Torvalds, è invece un kernel ciccione e pesante, che ad ogni aggiornamento perde di efficienza.
Ciò che probabilmente ha colpito di più è stata la seconda parte dlla dichiarazione. In essa Linus cerca soluzioni a questo problema, che in sostanza dice non risolvibile. Sostiene infatti che il codice è talmente grosso e confusionario da non essere più modificabile parzialmente; l’unico modo è quello di riscriverlo totalmente, partendo da zero.
@ Alcuni concetti base
Per addentrarci nell’analisi di questa dichiarazione, dobbiamo riassumere alcuni concetti basilari. una cosa che molti (punto informatico in primis) si “dimenticano” di fare.
Non ho intenzione di raccontare la storia, che magari per i non appassionati può essere noiosa. Voglio però riunire i concetti di partenza che hanno spinto Torvalds a creare Linux e il modo pratico nel quale questo è stato possibile. Linus voleva un kernel semplice, leggero, efficiente e, soprattutto, libero. In relazione a quest’ultimo punto, all’esigenza pratica e anche come sfida, decise di “farsi dare una mano” dalla comunità Open nello sviluppo di questo straordinario progetto. Da questo momento in poi i punti cardine furono inevitabilmente distorti: infatti, per rispettare i voleri iniziali Linus avrebbe potuto creare tranquillamente un kernel ad personam (tanto per usare un termine che va in voga, anche se in altro ambito), mentre per uno sviluppo collettivo ciò non era più possibile (ed avrebbe avuto anche ben poco senso).
Il kernel Linux è un kernel monolitico e modulare. Il primo termine sta ad indicare che il codice del kernel è intermente compilato in un unico blocco; tal quale viene caricato in memoria ed eseguito. L’aggettivo modulare indica che però utilizza dei moduli che carica all’occorrenza, moduli che contengono codice aggiuntivo, solitamente per la gestione di periferiche raramente utilizzate. Forse all’origine dei termini queste due caratteristiche cozzavano una con l’altra, ma con lo sviluppo hardware le cose sono cambiate.
Un’alternativa a questa architettura è quella basata su un microkernel, ovvero un kernel molto più piccolo e semplice che esegue poche e semplici funzioni base; tale codice dovrà quindi essere coordinato con altre parti che, similarmente ai moduli, facciano ciò che il kernel principale non è in grado di fare.
La diattriba tra l’una e l’altra filosofia è ovviamente infinita e, come spesso accade in questo campo, equilibrata in modo diverso in base a ciò che lo sviluppo tecnologico consente. Infatti in tempi passati la soluzione monolitica era oggettivamente migliore, in quanto il microkernel soffriva di na grave lentezza, ma con la velocizzazione dell’hardware l’ago della bilancia si è spostato sempre più verso la soluzione microkernel. Fu proprio Linus, scegliendo il kernel monolitico quando si riteneva stesse diventando obsoleto, a riportarlo in auge e ad alimentare la sfida software/filosofica tra le due architetture.
In generale si poteva affermare che il kernel monolitico fosse più rapido ed efficiente, ma meno portabile e sviluppabile nel tempo; il microkernel, viceversa, era più lento ma molto più portabile ed adattabile (ed in effetti era nato proprio per questo). Sono affermazioni che, ad oggi, vengono spesso smentite dai fatti e Linux ne è una prova evidente e concreta. L’implementazione del software e il miglioramento dell’hardware hanno consentito ad entrambe le architetture di ridurre sensibilmente i propri difetti, ma non senza pagare il prezzo di nuovi problemi.
Il kernel Linux viene distribuito coi propri codici sorgenti. Non è che sia una grande scoperta: è Open Source!
Però ho voluto ricordarlo perchè è un particolare importantissimo. Infatti questo consente a chiunque di ricompilarsi il kernel come meglio crede, sulla propria macchina e col proprio hardware specifico. Questo consente di compilare alcuni moduli che l’utente ha la certezza di utilizzare in maniera monolitica, mentre di eliminare definitivamente ciò che ritiene per lui inutile. La configurazione consente inoltre di scegliere quali moduli caricare all’avvio e quali “tenere nel cassetto”.
Insomma, l’utente può usare un kernel pre-compilato dalla distribuzione oppure compilarsene uno personale.
@ Persona e contesto
Altri piccoli particolari che andrebbero considerati, nell’analisi di una dichiarazione, sono la persona che parla ed il contesto in cui lo fa.
Se da un lato Linus Torvalds è sicuramente la persona (o una delle persone) più titolata per disquisire su quella che era, almeno da principio, una sua creatura, dall’altro non si possono ignorare i suoi trascorsi, fatti di dichiarazioni quantomeno azzardate e molto spesso parossistiche. D’altronde non possiamo nemmeno ignorare, in tutto questo discorso, lo spirito di gogliardia/provocazione/gioco/sperimentazione che permea tutto il mondo Open Source; certamente Linux non fa eccezione e men che meno il suo tecno-padre.
Questa intervista è stata rilasciata per un pubblico addetto ai lavori. Il fatto che una grande parte di tali professionisti, nel mondo Open, sia in realtà composta da persone che sulla carta professioniste non sono (ma i fatti dimostrano che le carte poco contano), fa spesso confondere le acque, soprattutto a chi ha interesse affinch&è siano mosse il pi&ù possibile.
Va tenuto dunque conto di questo fatto e, in quest’ottica, la dichiarazione di Torvalds appare già sotto una luce diversa: più che un attacco di panico, comincia a sembrare una tirata d’orecchi…
@ Linux non è Linux
Una cosa da considerare, davvero importante, è la distinzione tra Linux kernel e Linux sistema operativo. In effetti, la distinzione sarebbe presto fatta, in quanto il kernel è Linux, mentre il sistema operativo è GNU/Linux.
Se volete, datevi una letta al progetto GNU in relazione a Linux: http://www.gnu.org/gnu/linux-and-gnu.it.html, un articolo che spiega molte cose.
Per esempio che un conto è il kernel, un altro l’intero sistema operativo; inoltre, le distribuzioni modificano, patchano, tagliano qua, allungano là il kernel così com’è nella sua versione base, chiamata vanilla.
A quanto ne so, sono pochissime (poche unità, tra cui Slackware) le distribuzioni che utilizzano il kernel vanilla.
Chiaramente problemi che affliggono il kernel, essendo questo il nucleo appunto, non possono alla lunga, in un modo o nell’altro, ripercuotersi sull’intero sistema. Tuttavia, le distribuzioni fanno e hanno sempre fatto grandi passi avanti nell’adattarlo alle proprie esigenze, cosa che ovviamente non cesserà di essere dall’oggi al domani.
@@@ alla prossima il seguito!
continua…