Concetti Chiave

  • Negli anni '90, la virtualizzazione dell'hardware ha iniziato a diffondersi per rendere i sistemi operativi e le applicazioni più portabili.
  • Le macchine virtuali consentono l'esecuzione di software in codice intermedio, indipendente dall'hardware, tramite macchine virtuali come JVM e VES.
  • La virtualizzazione della CPU può avvenire sia tramite software che attraverso assistenza hardware, ottimizzando le prestazioni e l'efficienza.
  • Le tecniche di compilazione just-in-time e caching nella macchina virtuale migliorano l'efficienza traducendo solo il codice necessario durante l'esecuzione.
  • I sistemi operativi possono essere eseguiti simultaneamente, permettendo una suddivisione efficace delle risorse hardware disponibili.

Evoluzione della virtualizzazione

Dagli anni Novanta iniziano a diffondersi tecnologie di virtualizzazione dell’hardware per rendere Sistema Operativo e software applicativi portabili.

Per esempio:
-- virtualizzazione dell’hardware per ospitare diversi Sistemi Operativi:

- Sistema Operativo ospite (guest) può essere installato sopra a quello ospitante (host) o da “Bare-metal” (non c’è host)

- i Sistema Operativo vedono l’hardware allo stesso modo

- la virtualizzazione della CPU può essere software-based o hardware-assisted

- si possono lanciare Sistema Operativo contemporaneamente e suddividere le risorse

Macchine virtuali e portabilità

-- macchine virtuali per rendere il software portabile:

- codice sorgente non compilato direttamente in codice binario (istruzioni ISA) ma in codice intermedio indipendente dall’hardware (es. Java bytecode, MSIL = Microsoft Intermediate Language)

- codice intermedio compreso da una macchina virtuale (JVM = Java Virtual Machine, VES= Virtual Execution System) installato tra hardware e Sistema Operativo

- durante l’esecuzione la macchina virtuale traduce il codice intermedio in codice ISA

- la macchina virtuale opera logicamente come interprete (traduzione run-time) con tecniche di compilazione just-in-time (subito prima dell’esecuzione) e caching (non si traduce codice già tradotto) per massimizzare l’efficienza

Domande da interrogazione

  1. Qual è il ruolo della virtualizzazione dell'hardware nella portabilità dei sistemi operativi?
  2. La virtualizzazione dell'hardware consente di installare diversi sistemi operativi su un'unica macchina, sia sopra un sistema operativo ospitante che direttamente su hardware "bare-metal", garantendo che tutti i sistemi operativi vedano l'hardware in modo uniforme.

  3. Come contribuiscono le macchine virtuali alla portabilità del software?
  4. Le macchine virtuali permettono di eseguire codice sorgente in un formato intermedio, come Java bytecode, che è indipendente dall'hardware. Questo codice viene tradotto in codice binario durante l'esecuzione, consentendo una maggiore portabilità e flessibilità.

  5. Quali tecniche utilizzano le macchine virtuali per ottimizzare l'esecuzione del codice?
  6. Le macchine virtuali utilizzano tecniche di compilazione just-in-time e caching per tradurre il codice intermedio in codice ISA, massimizzando l'efficienza e riducendo il tempo di traduzione durante l'esecuzione.

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community