Un quarto di secolo fa un computer era roba da ricchi: pochi se lo potevano permettere, e agli altri toccava aspettare con impazienza l’arrivo del catalogo Postal Market o del Vestro sfogliando avidamente le pagine dedicate a questo genere di scatolette magiche. Altri ancora potevano approfittare del solito amico col papi “generoso” che gliene aveva regalato uno.
Oggi, grazie all’abbattimento dei costi di produzione, alla concorrenza e a condizioni di vita migliori, quasi tutti ne abbiamo uno in casa. Anzi, addirittura ci possiamo permettere il lusso di averne anche di più, perché… sono comodi: si possono installare sistemi operativi diversi, o magari riservarli per particolari mansioni.
Certo, c’è anche la possibilità di installare più s.o. sullo stesso PC, ma ha lo sgradevole effetto collaterale di doverlo riavviare (perché ne possiamo utilizzare soltanto uno alla volta). Un altro computer a disposizione che ci permette di lavorare “in parallelo” è tutt’altra cosa; c’è poco da fare.
Fortunatamente in quest’arco di tempo siamo passati da computer che viaggiavano a 1Mhz, con pochi KB di memoria e qualche centinaio di KB di memoria di massa, a macchine da Ghz di clock, GB di ram e TB di spazio su disco; inoltre abbiamo anche più CPU a loro volta dotate di più core: una cosa impensabile prima, dove la CPU era una sola e aveva uno e un solo core che doveva sobbarcarsi tutto il lavoro.
Un’abbondanza di risorse che da una parte ha favorito il progresso del software (che ha integrato funzionalità sempre più complesse e più facili da usare), ma dall’altra ha ribaltato completamente il rapporto uomo-macchina: un tempo era l’uomo ad aspettare che la macchina rispondesse ai comandi che gli aveva impartito, mentre oggi è il computer che “si gira i pollici” per la maggior parte del tempo.
Quest’attesa per un PC si traduce sostanzialmente in miliardi di cicli di clock spesi senza far nulla. Come impiegarli? Qualcuno ha pensato bene di portare sui computer casalinghi ciò che IBM aveva già inventato una quarantina d’anni fa: la virtualizzazione.
Senza perderci troppo nei dettagli, consiste nella creazione di una macchina virtuale, cioé la simulazione di un intero computer su cui gira un s.o.; il tutto ovviamente è frutto di un’apposita applicazione che gira su un s.o., che a loro volta girano sull’hardware di un PC. Ahia! Sembra una matrioska: non se ne esce più!
In realtà la spiegazione è più semplice di quel che si possa pensare. Un’applicazione è un programma che è nato per degli scopi ben precisi. Come programmatore nulla m’impedisce di scrivere un software che… simuli (cioé riproduca il funzionamento di) un altro PC: è un’applicazione anche questa, no?
Ciò consente di ottenere la soluzione al problema sollevato in precedenza. Possiamo, quindi, far girare più computer in “parallelo”, andando dall’uno all’altro quando vogliamo. Ovviamente ce ne sarà soltanto uno alla volta a cui passeremo l’input, cioé i tasti premuti sulla tastiera e i movimenti (e click) del mouse, ma noi abbiamo soltanto due mani e due occhi su cui contare, per cui non rappresenta di sicuro una grossa limitazione.
Certamente quanto detto ha un costo in termini di risorse ma, come dicevo prima, adesso ne abbiamo anche troppe…