A volte si può aver bisogno di eseguire un sistema operativo su un sistema hardware diverso da quello per cui è stato progettato. Ad esempio, per provare un vecchio videogioco su un nuovo PC o per testare dei software che potrebbero danneggiare il computer. Le strade percorribili per raggiungere lo scopo sono due e diverse tra loro: l’emulazione e la virtualizzazione. La differenza principale tra le due riguarda la velocità di esecuzione: a parità di risultato, la virtualizzazione è molto più veloce dell’emulazione, perché per raggiungere l’obiettivo dovrà seguire meno “passaggi”.
Per poter approfondire questi due concetti bisogna prima definire la differenza che intercorre tra sistema ospitante, detto host, e sistema ospitato, detto guest. Nel caso dell’emulazione, il sistema host riproduce l’ambiente di lavoro necessario affinché il guest possa “imitare” e comportarsi come un altro sistema operativo. La virtualizzazione, invece, consente il funzionamento di più sistemi guest all’interno di un singolo host, attraverso la creazione di macchine virtuali isolate e separate tra loro che vengono eseguite su uno stesso hardware, come ad esempio un computer o un server. Per comprendere quindi le differenze, sarà necessario capire meglio come funzionano emulazione e virtualizzazione.
Che cos’è l’emulazione e come funziona
Gli emulatori consentono di far girare software anche su sistemi hardware diversi da quelli per cui sono stati progettati. Se si dispone ad esempio di una macchina host con sistema operativo Linux, un emulatore consentirà di riprodurre virtualmente un ambiente Windows in cui far girare il programma che si vuole testare. Oppure, utilizzare un computer come sistema host e un emulatore per poter giocare a un vecchio videogame pensato per una console come la PlayStation o la Nintendo.
Esistono varie categorie di emulatori, in grado di imitare ambienti software e soprattutto ambienti hardware, simulando quindi il comportamento fisico di un sistema. Si pensi ad esempio ai giochi per PlayStation, progettati per funzionare sulle console della Sony ma non su un normale computer, per via del diverso hardware delle due macchine. Questo significa che l’emulatore si comporterà come la componente hardware mancante e che dovrà funzionare senza errori se vuole vedere il programma girare correttamente.
L’emulazione può essere quindi definita come un processo di “traduzione“: l’emulatore accetta i comandi destinati al sistema di destinazione e li trasforma in qualcosa che il sistema host sia in grado di comprendere ed eseguire, imitando di fatto codici operativi e registri della CPU. Se il grande vantaggio dell’emulazione è quello di consentire di utilizzare vecchi software anche su nuovi hardware e di testare programmi e sistemi operativi, essa è caratterizzata da uno svantaggio piuttosto fastidioso: può essere estremamente lenta, per via del tempo necessario a una corretta traduzione dei set di istruzioni che la CPU si troverà a dover svolgere.
Che cos’è la virtualizzazione e come funziona
La virtualizzazione consente di sfruttare le risorse dell’hardware per creare delle macchine virtuali che funzionano come ambienti isolati e separati. I software chiamati hypervisor separano le risorse fisiche dagli ambienti virtuali e possono essere eseguiti sia in un sistema operativo, come ad esempio su un computer, che direttamente installati su un hardware, come ad esempio un server. Questo significa che la virtualizzazione al contrario dell’emulazione non ha bisogno di tradurre i set di istruzioni, ma crea degli ambienti di lavoro separati per ogni macchina virtuale, e per questo è caratterizzata da velocità di esecuzioni maggiori.
La virtualizzazione può essere utilizzata per vari scopi, ad esempio per migliorare la gestione di dati raggruppando più sorgenti e utilizzandole come un’unica fonte, da cui qualsiasi applicazione o utente può attingere ciò di cui ha bisogno. Nel caso dei sistemi operativi, la virtualizzazione si verifica nel kernel, cioè il sistema centrale di gestione delle attività, e consente di eseguire ambienti Linux e Windows sulla stessa macchina, incrementandone la sicurezza. Ad esempio, si potrebbe far girare un malware in una delle macchine virtuali e il virus informatico non si diffonderà alle altre, che lavorano come sistemi separati pur sfruttando lo stesso hardware.
Anche i server possono essere virtualizzati, proprio perché si tratta di hardware progettati per elaborare in modo ottimale un elevato volume di attività specifiche, mentre computer e laptop possono continuare a eseguire altre attività. Partizionando il server, se ne potranno destinare quantità differenti a un’attività specifica piuttosto che un’altra, assegnando ai componenti varie funzioni.
I principali vantaggi nell’utilizzo della virtualizzazione riguardano in primis l’affidabilità del sistema, dato che le diverse macchine virtuali sono isolate e non entrano in conflitto e non si sovrappongono tra loro. Inoltre, consente di contenere il numero di server utilizzati, e anche la manutenzione, partizionando l’hardware e assegnando a ognuno le sue funzioni. Questo implica una riduzione dei costi legati sia all’energia utilizzata per alimentare un server, che quella per mantenere la temperatura dell’ambiente abbastanza fredda da garantirne il corretto funzionamento ed evitarne il surriscaldamento. Inoltre, garantisce la possibilità di continuare a utilizzare vecchie applicazioni sviluppate per hardware obsoleti.
Emulazione e virtualizzazione: le differenze
Emulazione e virtualizzazione possono essere considerate molto simili tra loro, perché entrambi consentono di eseguire software in ambienti di lavoro isolati. Il modo in cui agiscono, però, è profondamente diverso, dato che l’emulazione si concentra sull’ambiente di lavoro, mentre la virtualizzazione sulla creazione di macchine virtuali e quindi sull’aspetto della moltiplicazione e separazione dei diversi sistemi.
Per questo motivo, gli emulatori sono in grado di simulare una gamma di hardware più ampia rispetto alle macchine virtuali. Ad esempio, non sarà possibile eseguire un sistema PlayStation in una macchina virtuale, ma si potrà eseguire un emulatore in un ambiente Windows virtuale. D’altro canto, però, le operazioni di traduzione degli emulatori comportano una velocità di esecuzione piuttosto lenta, rispetto a quella delle macchine virtuali, che non emulano la CPU ma operano direttamente in un sottosistema dell’host. A seconda quindi dell’uso che se ne vuole fare, si potrà optare per l’una o l’altra soluzione che si riveli più adatta alle proprie esigenze.
Fonte Fastweb.it