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…
Calma… simulazione fino ad un certo punto: cpu ok ma schede video, rete, audio ecc. sono ancora emulate alla grande e spesso sono componenti realmente scadenti che impediscono di sfruttare la virtualizzazione come si deve
L’articolo non voleva essere uno stato dell’arte della virtualizzazione, ma un’introduzione.
Avremo modo di trattare anche gli argomenti che hai citato più avanti, visto che ormai si sente parlare spesso di quest’argomento. :)
Ma visto che di periferiche usb se ne possono mettere quasi all’infinito non sarebbe una cattiva idea usare più computer emulati contemporaneamente, magari in un ufficio avere un mega computer con per esempio 10 schermi, 10 tastiere, 10 mouse utilizzabile chiaramente contemporaneamente da 10 utenti, con magari una assegnazione dinamica delle risorse…
Si chiama multiutenza, ed è un concetto moooolto vecchio (all’università nella prima metà degli anni ’90 lavoravamo così).
Affronterò anche questo in un prossimo articolo.