SlideShare a Scribd company logo
1 of 144
Download to read offline
VIRTUALIZZAZIONE
Prof.Giusti Luca
UNA DEFINIZIONE
Per virtualizzazione intendiamo la
creazione di una versione virtuale di
qualcosa, dove il termine virtuale si
contrappone a reale, tangibile,
fisicamente concreto
Hardware di un Calcolatore
Dispositivi di Memorizzazione
Reti di Calcolatori
AMBITI DELLA VIRTUALIZZAZIONE
Virtualizzare l’hardware di un calcolatore
consiste nella creazione di un software
che si comporti in tutto e per tutto
come un vero calcolatore
VIRTUALIZZAZIONE HARDWARE CALCOLATORE
VIRTUALIZZAZIONE HARDWARE CALCOLATORE
Sulla questa macchina virtuale
possiamo installare un qualsiasi
sistema operativo compatibile, che
potrà eseguire del software come
su una analoga macchina fisica
VIRTUALIZZAZIONE DISPOSITIVI MEMORIZZAZIONE
La virtualizzazione di dispositivi di
memorizzazione (storage virtualizzation)
rende astratto il concetto di memoria di
massa liberandolo da vincoli come la
vicinanza fisica, la dimensione, la gestione
dei backup e degli eventuali guasti
VIRTUALIZZAZIONE DISPOSITIVI MEMORIZZAZIONE
Un sistema di storage virtualizzation
presenta all’utente uno spazio logico
per la memorizzazione dei dati
occupandosi dietro le quinte di mappare
questo spazio logico su storage reale
VIRTUALIZZAZIONE RETI CALCOLATORI
In un contesto dove vengono virtualizzati
più calcolatori è possibile astrarre sia il
concetto switch che di interfaccia di rete
Virtual Network Interface Controller
(VNIC)
VIRTUALIZZAZIONE RETI CALCOLATORI
Grazie a questa ulteriore astrazione si
riescono a costruire vere e proprie reti di
macchine virtuali che possono
funzionare anche indipendentemente
dall’hardware sottostante
VIRTUALIZZAZIONE RETI CALCOLATORI
VIRTUALIZZAZIONE RETI CALCOLATORI
ATTENZIONE!
E’ più corretto definirlo un simulatore di rete
Cisco Packet Tracer non rientra propriamente
nell’ambito della virtualizzazione delle reti
VIRTUALIZZAZIONE
HARDWARE CALCOLATORE
L’obiettivo è quello di creare un
software che si comporti in tutto e
per tutto come un sistema fisico
Virtual Machine
(VM)
OBIETTIVI
COSA VIRTUALIZZIAMO?
Per virtualizzare una macchina si devono
considerare tre aspetti principali
Virtualizzazione CPU
Virtualizzazione Memoria
Virtualizzazione periferiche I/O
EMULATORI
I concetti che stanno dietro alla virtualizzazione
hanno molto in comune con quelli
dell’emulazione
EMULATORI
La differenza principale sta nel fatto che
nell’emulazione la macchina emulata ha
un hardware molto diverso da quello
della macchina ospite
EMULATORE NINTENDO 64
ESEMPIO
Piattaforma Ospite Piattaforma da Emulare
CPU Intel 64 bit
core i7 8700 a 3.2 GHz
CPU NEC 64 bit
Mips R4300 a 93.75 MHz
GPU 128 bit
nVidia GTX 1080 (9 TFLOPS)
GPU 64 bit
Reality Coprocessor (100 MFLOPS)
16 Gigabyte RAM 4.5 Megabyte RAM
PROBLEMATICHE EMULAZIONE
Architettura processore differente
1
Scala delle prestazioni
Istruzioni macchina differenti
2
3
PROCESSORI DIFFERENTI
Architettura del processore differente
1
PROCESSORI DIFFERENTI
L’architettura MIPS e x86 presentano registri e flags in
quantità e nomenclatura differente
MIPS x86
32 Register 16 Register
64 bit 64 bit
$t0, $t1, $t2, … RAX, RBX, RCX, …
PROCESSORI DIFFERENTI
I registri dell’architettura MIPS sono più
numerosi di quelli x86
Oltre ad un mapping diretto sarà
necessaria una struttura dati che salvi
lo stato dei registri MIPS
PROCESSORI DIFFERENTI
MIPS x86
$t0 RAX
$t1 RBX
$t2 RCX
$t3 RDX
$t4 RSI
$t5 RDI
$t6 RBP
$t7 RSP
$t8 R8
$t9 R9
$s0 R10
$s1 R11
$s2 R12
$s3 R13
$s4 R14
$s5 R15
fino a 16 registri con
mapping diretto
PROCESSORI DIFFERENTI
MIPS x86
$at ?
$v0 ?
$v1 ?
$a0 ?
$a1 ?
$a2 ?
$a3 ?
$k0 ?
$k1 ?
$gp ?
$sp ?
$fp ?
$ra ?
HI ?
LOW ?
PC IP
I restanti
in RAM
ISTRUZIONI DIFFERENTI
Istruzioni macchina differenti
2
ISTRUZIONI DIFFERENTI
L’architettura MIPS e x86 hanno
istruzioni macchina diverse sia nella
nomenclatura (o codice operativo)
che nel numero di operandi
ISTRUZIONI DIFFERENTI
MIPS
opcode rs rt rd shift (shamt) funct
6 bits 5 bits 5 bits 5 bits 5 bits 6 bits
Formato istruzioni (R)
Mnemonic Meaning Type Opcode Funct
add Add R 0x00 0x20
Codice operativo della ADD
Esempio istruzione: add $t0,$t1,$t2
opcode rs rt rd shift (shamt) funct
000000 01000 01001 01010 00000 100000
ISTRUZIONI DIFFERENTI
x86
Codici operativi delle ADD
mnemonics op xx xx xx xx xx sw len flags
ADD AL,ib 04 i0 B 2 o---szap
ADD AX,iw 05 i0 i1 W 3 o---szap
ADD rb,rmb 02 mr d0 d1 B 2~4 o---szap
ADD rw,rmw 03 mr d0 d1 W 2~4 o---szap
ADD rmb,ib 80 /0 d0 d1 i0 NB 3~5 o---szap
ADD rmw,iw 81 /0 d0 d1 i0 i1 NW 4~6 o---szap
ADD rmw,ib 83 /0 d0 d1 i0 EW 3~5 o---szap
ADD rmb,rb 00 mr d0 d1 B 2~4 o---szap
ADD rmw,rw 01 mr d0 d1 W 2~4 o---szap
ISTRUZIONI DIFFERENTI
opcode totalmente diversi
dimensioni in byte diverse
numero di parametri diversi
ISTRUZIONI DIFFERENTI
L’obiettivo finale dell’emulatore è quello di eseguire
del codice equivalente che sortisca
lo stesso risultato
MIPS x86
add $t0,$t1,$t2
mov RCX,RAX
add RCX,RBX
In pratica, deve fare da tramite tra i due linguaggi
APPROCCI EMULAZIONE
Sono possibili tre approcci per l’emulazione
INTERPRETAZIONE
RICOMPILAZIONE STATICA
RICOMPILAZIONE DINAMICA
INTERPRETAZIONE
Traduzione a livello di singola istruzione
FINE
Leggi istruzione MIPS usando PC
Traduci in istruzioni x86
PC = END
PC = PC +1
INIZIO
Esegui istruzioni tradotte
PC = 0
false
true
INTERPRETAZIONE
LENTO
INEFFICIENTE
RICOMPILAZIONE STATICA
La ricompilazione statica mira invece a tradurre
tutto il codice macchina prima dell’esecuzione
add $t0,$t1,$t2
li $t0,57
beq $t0,$t1,laggiu
j lassu
MOV CX, AX
ADD CX, BX
MOV AX, 57
CMP AX, BX
JE laggiù
JMP lassu
ricompilazione
sta/ca
esecuzione
na/va
MIPS
x86
Codice sorgente compresso
RICOMPILAZIONE STATICA
La ricompilazione statica sembra una buona idea,
ma in molti casi non è facile da implementare
Codice sorgente modificato a runtime
Codice sorgente caricato a runtime
Difficoltà a distinguere il codice dai dati
RICOMPILAZIONE DINAMICA
La ricompilazione dinamica rappresenta un
compromesso tra i due approcci precedenti
La traduzione avviene a livello di blocchi di
istruzioni detti buckets
I buckets hanno dimensione fissa
(al più delimitata da istruzioni di salto)
RICOMPILAZIONE DINAMICA
Per ottimizzare il processo i bucket vengono inseriti
in una cache in memoria
Man mano che l’emulazione avanza, le prestazioni
si avvicinano sempre di più a quelle di una
ricompilazione statica
RICOMPILAZIONE DINAMICA
INIZIO
FINE
Esiste già un bucket
tradotto con indice PC?
PC = 0
Leggi un bucket di istruzioni MIPS partendo da PC
Traduci il bucket in istruzioni x86

e Salvalo nella cache con indice PC
Esegui il bucket di istruzioni tradotte
PC = END
PC = PC + size_of(bucket)
Leggi il bucket di istruzioni x86
con indice PC dalla cache
true
false
false
true
RICOMPILAZIONE DINAMICA
La ricompilazione dinamica (con il nome di Just
In Time Compilation) è utilizzata correntemente
in tutte le Java Virtual Machine
SCALA DELLE PRESTAZIONI
Scala delle prestazioni
3
SCALA DELLE PRESTAZIONI
Le due macchine (reale ed emulata)
hanno prestazioni molto differenti
Piattaforma Ospite Piattaforma da Emulare
CPU Intel 64 bit
core i7 8700 a 3.2 GHz
CPU NEC 64 bit
Mips R4300 a 93.75 MHz
GPU 128 bit
nVidia GTX 1080 (9 TFLOPS)
GPU 64 bit
Reality Coprocessor (100 MFLOPS)
16 Gigabyte RAM 4.5 Megabyte RAM
SCALA DELLE PRESTAZIONI
A seconda del tipo di applicazioni che
gireranno sulle macchine emulate questo
può essere un male oppure un bene
SCALA DELLE PRESTAZIONI
Alcuni vecchi giochi ad esempio, facendo affidamento
su una frequenza di clock ben nota, potevano utilizzarla
come base per la temporizzazione di alcuni eventi
Eventi scripting del gameplay
Eventi legati al rendering
Eventi legati agli algoritmi di AI
Eventi legati al playback audio
SCALA DELLE PRESTAZIONI
Alcune soluzioni
Emulare clock originale con timer di sistema
Codice dummy per rallentare l’esecuzione
Fermare l’emulazione ad intervalli stabiliti
RICAPITOLANDO
RICAPITOLANDO
La virtualizzazione riprende molti
concetti chiave dell’emulazione ma
lavora prevalentemente con Virtual
Machine che ripropongono
l’architettura sottostante
RICAPITOLANDO
Su piattaforma x86 si emulano
Virtual Machine x86
Su piattaforma ARM si emulano
Virtual Machine ARM
E così via…
HYPERVISOR
HYPERVISOR
Uno dei principali attori della
virtualizzazione è uno speciale
software chiamato hypervisor
L’obiettivo principale di un hypervisor
è quello di gestire un certo numero di
Virtual Machine Monitor (VMM)
VMM
Un Virtual Machine Monitor è
anch’esso un oggetto software
Fornisce una astrazione
dell’hardware sul quale dovrà girare
il sistema operativo ospite
HYPERVISOR E VMM
HFunzionalità di base (es. scheduling)
Hypervisor
Funzionalità
Aggiuntive
VMMVMMVMM
VM VM VM
HYPERVISOR
Compiti Hypervisor
partizionare le risorse reali
(CPU, Memoria, I/O)
allocarle ai vari VMM
in maniera efficiente
TIPOLOGIE HYPERVISOR
Esistono due tipologie di Hypervisor
HOSTED
BARE METAL
HOSTED HYPERVISOR (TYPE 2)
Un hosted hypervisor viene
installato su una macchina che
possiede già un sistema operativo
ospitante (Host OS)
HOSTED HYPERVISOR (TYPE 2)
Server Hardware
Host OS
Hosted Hypervisor
Guest OS Guest OS Guest OS
APP APP APP
Virtual
Machines
Physical
Machine
HOSTED HYPERVISOR (TYPE 2)
Maggiori esponenti
VMWare Workstation
Oracle Virtual Box
QEMU
KVM
MS Virtual PC*
* fuori produzione
HOSTED HYPERVISOR (TYPE 2)
Generalmente un Hosted
Hypervisor viene installato come
modulo kernel assieme a
strumenti di amministrazione
delle Virtual Machines
HOSTED HYPERVISOR (TYPE 2)
Il tool di amministrazione di VirtualBox
HOSTED HYPERVISOR (TYPE 2)
PRO
Facile installazione e configurazione
Non necessità di OS modificati
CONTRO
Performance ridotte
Non adatto per virtualizzate RTOS
BARE METAL HYPERVISOR (TYPE 1)
Se l’hypervisor viene installato
direttamente sull’hardware (senza
sistema operativo host) si parla di
Bare Metal Hypervisor
BARE METAL HYPERVISOR (TYPE 1)
In questo scenario l’hypervisor è
una proto sistema operativo che
gestisce direttamente l’hardware
del server dialogando con le
virtual machine
BARE METAL HYPERVISOR (TYPE 1)
Server Hardware
Bare Metal Hypervisor
Guest OS Guest OS Guest OS
APP APP APP
Virtual
Machines
Physical
Machine
BARE METAL HYPERVISOR (TYPE 1)
Maggiori esponenti
VMWare ESX
Microsoft Hyper-V
Oracle VM server
XEN Server
XBOX One OS
BARE METAL HYPERVISOR (TYPE 1)
PRO
Performance migliori
Supporto per RTOS
CONTRO
Gestione più complicata
Più dipendente dall’hardware
LIVELLI DI PRIVILEGIO DELLE CPU
LIVELLI PRIVILEGIO CPU
Prima di addentrarsi ulteriormente
nelle varie tecniche di
virtualizzazione è necessario
chiarire bene il concetto di livello
di privilegio di una CPU
LIVELLI PRIVILEGIO CPU
Le architetture x86 (ed analogamente le altre) prevedono
4 livelli di privilegio noti con il nome di ring
Hardware
Ring 3
Ring 2
Ring 1
Ring 0
Esecuzione
diretta
Richieste OS
App Utente
OS
LIVELLI PRIVILEGIO CPU
La CPU transita tra i vari ring come se
fossero degli stati
Ogni ring predetermina il set di
istruzioni che sarà consentito eseguire
IL RING 3
Il ring 3 (noto come user mode) è il
livello al quale girano tutte le
applicazioni utente
Il software che gira a questo livello ha
accesso ad un set limitato di istruzioni
della CPU
LIMITAZIONI RING 3
RING 3
Cambiare livello di privilegio
Modificare tabella pagine memoria
Registrare Interrupt Handler
Accessi diretti alle periferiche
IL RING 0
Il ring 0 (noto come kernel mode) è il
livello dove tutto è permesso.
Questo livello rappresenta l’habitat
ideale per il sistema operativo
IL RING 0
Le applicazioni (che non possono interagire
direttamente con l’hardware) ha modo di
scalare a ring 0 facendo chiamate al sistema
operativo
RING 3
I RING 1 & 2
Questi livelli intermedi sono stati
pensati originariamente da Intel per
ospitare il codice dei device driver
Nella pratica però non sono quasi mai
stati utilizzati dai sistemi operativi
I RING 1 & 2
Molti software di virtualizzazione hanno
fornito una nuova ragione d’essere a questi
livelli di privilegio
IDEA
I RING 1 & 2
Una questione molto spinosa infatti, è stabilire a
quale livello di privilegio far girare Hypervisor ed il
Sistema Operativo Guest
0 1 2
I RING 1 & 2
I sistemi operativi sono progettati ed
implementati per girare a ring 0
Anche l’Hypervisor, essendo una specie
di sistema operativo, deve lavorare a
privilegio massimo!
MA
I RING 1 & 2
Non essendo consentito a due kernel
di occupare allo stesso tempo il ring 0
la possibilità di utilizzare livelli di
privilegio aggiuntivi aiuta molto
TECNICHE DI VIRTUALIZZAZIONE
TECNICHE DI VIRTUALIZZAZIONE
Nel panorama dei metodi di virtualizzazione
spiccano tre approcci al problema
Full Virtualization
OS Assisted Virtualization
Hardware Assisted Virtualization
FULL VIRTUALIZATION
FULL VIRTUALIZATION
L’obiettivo della Full Virtualization è quello di
emulare l’intero hardware
Affinché si possa parlare di Full Virtualization
deve essere possibile far girare sulle Virtual
Machine qualsiasi sistema operativo progettato
per l’hardware nativo che stiamo emulando
FULL VIRTUALIZATION
La Full Virtualization permette di utilizzare
versioni non modificate dei Sistemi Operativi
Il Sistema Operativo Guest in questo scenario
non è consapevole di stare girando dentro una
Virtual Machine
FULL VIRTUALIZATION
Senza aiuto da parte dell’Hardware la Full Virtualizazion si implementa
con un mix di esecuzione diretta e ricompilazione dinamica
Hardware
Ring 3
Ring 2
Ring 1
Ring 0
Esecuzione
diretta
Richieste OS
Ricompilate
Dinamicamente
App Utente
VMM
Guest OS
FULL VIRTUALIZATION
Hypervisor e VMMs girano a livello 0
eventualmente come driver a fianco di un
Sistema Operativo Host
Il Sistema Operativo Guest gira a livello 1
mentre le Applicazioni a livello 3
FULL VIRTUALIZATION
Anche se progettato per il livello 0
buona parte del codice del Sistema
Operativo Guest può girare senza
problemi anche a livello 1
FULL VIRTUALIZATION
Ci saranno però dei casi in cui
sarà realmente necessario
trovarsi al livello 0
ATTENZIONE
FULL VIRTUALIZATION
In questi casi dovrà essere ricompilato
dinamicamente il codice critico, sostituendolo
con delle chiamate verso l’Hypervisor
L’Hypervisor farà dunque da tramite
verso l’hardware per il Sistema Operativo Guest
ESEMPIO
ESEMPIO - FULL VIRTUALIZATION
Una routine kernel del Sistema Operativo Guest vuole accedere
direttamente ad una periferica eseguendo un’istruzione di OUT
Hardware
Ring 1
Ring 0 OUT DX,ALVMM
Guest OS
Essendo l’istruzione molto critica necessita di trovarsi a ring 0
per non essere bloccata dal sistema
ESEMPIO - FULL VIRTUALIZATION
L’Hypervisor in questi casi ricompila
dinamicamente le parti critiche sostituendole con
chiamate a proprie routine interne
Hardware
Ring 1
Ring 0
OUT DX,AL
Guest OS
CALL HYP_OUTVMM
OUT DX,AL
ESEMPIO - FULL VIRTUALIZATION
Per velocizzare future esecuzioni della medesima routine
kernel, le parti di codice ricompilate vengono indicizzate e
salvate in una memoria cache dell’Hypervisor
CALL HYP_OUT
OS ASSISTED
VIRTUALIZATION
OS ASSISTED VIRTUALIZATION
Nota anche come Paravirtualization, l’OS
Assisted Virtualization nasce con l’idea di
migliorare le prestazioni delle macchine virtuali
collaborando con i Sistemi Operativi Guest
OS ASSISTED VIRTUALIZATION
Per facilitare l’Hypervisor gli OS Guest devono
essere opportunamente modificati nelle parti
critiche che interagiscono con l’hardware
Gli OS Guest dunque sono consapevoli di girare
in un ambiente virtuale e per velocizzare
l’emulazione chiamano direttamente l’Hypervisor
OS ASSISTED VIRTUALIZATION
Hardware
VMM Driver Interface
Real Drivers
VMM
VM
Modified
Drivers
Guest OS
APP APP
VM
Modified
Drivers
Guest OS
APP APP
VM
Modified
Drivers
Guest OS
APP APP
OS ASSISTED VIRTUALIZATION
La paravirtualizzazione è un buon compromesso
qualora le prestazioni siano importanti
La necessità di driver e/o versioni moddate dei
vari sistemi operativi però ne ha limitato l’utilizzo
Ad esempio, pare che non esistano distribuzioni di
Windows che la supportino
HARDWARE ASSISTED
VIRTUALIZATION
HARDWARE ASSISTED VIRTUALIZATION
Data la crescente popolarità ed utilità
della virtualizzazione, i produttori di CPU
hanno cominciato ad ricercare soluzioni
hardware per migliorare le prestazioni
delle Virtual Machine
HARDWARE ASSISTED VIRTUALIZATION
A partire dal 2006, Intel e AMD cominciano
ad introdurre nei propri processori nuove
estensioni per il supporto alla virtualizzazione
Intel VT-x
AMD-V
HARDWARE ASSISTED VIRTUALIZATION
L’idea di base di queste tecnologie è l’estensione
del modello dei ring introducendo una modalità
ancora più privilegiata, sotto il livello zero
HARDWARE ASSISTED VIRTUALIZATION
Hardware
Ring 3
Ring 2
Ring 1
Ring 0
Esecuzione
diretta
Richieste del
Guest OS
intercettate*
App Utente
Guest OS
Non-root
Mode
Privilege
Levels
Root Mode
Privilege Levels Hypervisor VMM
* senza bisogno di Ricompilazione dinamica o Paravirtualizzazione
HARDWARE ASSISTED VIRTUALIZATION
Girando nel suo habitat naturale,
ovvero il ring 0, il sistema operativo
ospite non necessita di essere
tradotto dinamicamente o modificato
ricorrendo alla paravirtualizzazione
HARDWARE ASSISTED VIRTUALIZATION
Semplicemente, tutte le istruzioni sensibili che
avvengono a ring 0 vengono intercettate
(trapped) verso l’Hypervisor che le attua nel
giusto contesto delle risorse fisiche
CURIOSITA’
HARDWARE ASSISTED VIRTUALIZATION
Con le prime versioni dei processori
compatibili VT-x e AMD-V le
prestazioni della virtualizzazione
potevano essere peggiori di quelle
ottenute con gli altri metodi
HARDWARE ASSISTED VIRTUALIZATION
Questo perché gli Hypervisor esistenti al tempo
erano talmente ottimizzati da essere
molto più efficienti
Infatti i numerosi passaggi da Root Mode a
Non Root Mode introducevano un
overhead non indifferente
VIRTUALIZZAZIONE DELLA MEMORIA
VIRTUALIZZAZIONE MEMORIA
Oltre alla CPU, un VMM deve astrarre
anche altri elementi costituenti
l’hardware di un computer
RAM
Periferiche I/O
VIRTUALIZZAZIONE MEMORIA
La virtualizzazione della memoria
tra le varie VM riprende le stesse
idee che sono alla base della
gestione della memoria nei
moderni sistemi operativi
VIRTUALIZZAZIONE MEMORIA
Le applicazioni vedono e dispongono di uno
spazio di memoria che non è in corrispondenza
diretta con la RAM fisica
Il trucco consiste nel suddividere la RAM in pagine,
associando ad ogni applicazione una tabella di
corrispondenza tra pagine virtuali e pagine fisiche
VIRTUALIZZAZIONE MEMORIA
VIRTUALIZZAZIONE MEMORIA
L’Hypervisor dovrà riproporre un
mapping analogo, introducendo un
ulteriore tabella di corrispondenza tra
memoria delle VM e memoria fisica
VIRTUALIZZAZIONE MEMORIA
VM 1
Process 1
Page Table 1
Process 2
Page Table 2
VM 2
Process 1
Page Table 1
Process 2
Page Table 2
Hypervisor
Real Machine Memory
VMM 1
Page Table
VMM 2
Page Table
PROBLEMA
VIRTUALIZZAZIONE MEMORIA
Il doppio livello di paginazione
introduce un calo delle prestazioni
non indifferente, dato che ogni
accesso alla memoria porta al
doppio degli accessi previsti per i
casi non virtualizzati
VIRTUALIZZAZIONE MEMORIA
Un’idea per ottimizzare il numero di
accessi sarebbe quello di aggirare la
paginazione del Sistema Guest
delegando tutto al VMM
VIRTUALIZZAZIONE MEMORIA
Nella sua implementazione più brutale,
questo approccio prevede di intercettare
tutti gli accessi alle tabelle delle pagine
del Sistema Operativo Guest girandole
all’Hypervisor
VIRTUALIZZAZIONE MEMORIA
VM 1
Process 1
Page Table 1
Process 2
Page Table 2
VM 2
Process 1
Page Table 1
Process 2
Page Table 2
Hypervisor
Real Machine Memory
Shadow
Page Tables
VMM 2
Page Table
Shadow
Page Tables
Shadow
Page Tables
VIRTUALIZZAZIONE MEMORIA
Il compito dell’Hypervisor sarà quello di
gestire delle tabelle delle pagine ombra
(shadow page table) tenendo all’oscuro il
sistema guest che avrà l’impressione di
lavorare con tabelle proprie
OVERHEAD
*
* Hypervisor
VIRTUALIZZAZIONE MEMORIA
La seconda generazione di processori con
supporto alla virtualizzazione introduce
meccanismi ad-hoc per supportare gli
Hypervisor in questo compito
Questo meccanismo di accelerazione prende il
nome di Second Level Address Translation
(SLAT)
HARDWARE ASSISTED MEMORY VIRTUALIZATION
Intel EPT (VT-x2)
(Extended Page Table)
Westmere - 2010
AMD RVI
(Rapid Virtualization Indexing)
Barcelona - 2009
VIRTUALIZZAZIONE MEMORIA
L’idea è quella di agire sul Translation
Lookaside Buffer (TLB), una speciale
memoria all’interno della CPU che funge
da cache per le tabelle delle pagine
TRANSLATION LOOKASIDE BUFFER
P D
Page
Table
Memoria
FisicaF D
Indirizzo logico
Pagina
Logica
Pagina
Fisica
TLB MISS
TLB HIT
CPU
TLB
VIRTUALIZZAZIONE MEMORIA
Nei processori moderni il TLB
è molto capiente, così da poter ospitare sia le
pagine delle VM che le pagine del VMM
A regime dunque con due accessi sequenziali
al TLB è possibile velocizzare l’accesso alla
memoria fisica
VIRTUALIZZAZIONE MEMORIA
Inoltre, grazie anche ad un meccanismo
che consente di taggare le righe del TLB
con un Virtual Machine ID si possono
limitare gli effetti nefasti del flush del TLB
VIRTUALIZZAZIONE PERIFERICHE
VIRTUALIZZAZIONE PERIFERICHE
L’ultimo elemento da virtualizzare dopo
CPU e Memoria sono le periferiche di I/O
VIRTUALIZZAZIONE PERIFERICHE
Gli approcci classici sono due
Software based I/O
Management & Virtualization
Direct Hardware
Pass-Through
SOFTWARE BASED I/O MANAGEMENT
In questo caso l’Hypervisor intercetta le chiamate
di I/O gestendole internamente e trasponendole
sulle periferiche fisiche in maniera opportuna
VM
Hypervisor
I/O Manager
DIRECT HARDWARE PASS-THROUGH
Nel secondo caso la periferica buca la
virtualizzazione e viene presentata al Sistema Guest
in modo da avere un dialogo diretto
VM
Hypervisor
VIRTUALIZZAZIONE PERIFERICHE
In genere la prima soluzione è la più adottata
perché semplifica e rende più sicura la gestione
Inoltre, abilita un sacco di particolari features
aggiuntive molto interessanti
ESEMPIO 1
VIRTUALIZZAZIONE PERIFERICHE
Passando attraverso l’Hypervisor
risulta molto più facile creare reti di
Virtual Machine che lavorano senza
necessità di uscire su device fisici
VIRTUALIZZAZIONE PERIFERICHE
Hypervisor
VM1 VM2 VM3
Virtual SWITCH
Physical NIC
Virtual NICs
HW
Virtual Machines
LAN
101010
010111 101101 000110
VIRTUALIZZAZIONE PERIFERICHE
Questo approccio inoltre,
consentendo di far coincidere allo
stesso indirizzo fisico più macchine
virtuali, facilita l’implementazione di
politiche di failover e load balancing
LOAD BALANCING
Hypervisor
VM VM Clone 1 VM Clone 2
Virtual SWITCH
Physical NIC
Virtual NICs
HW
Virtual Machines
LAN
172.83.12.3 IP Pubblico
FAILOVER
Hypervisor
VM VM Clone 1 VM Clone 2
Virtual SWITCH
Physical NIC
Virtual NICs
HW
Virtual Machines
LAN
172.83.12.3 IP Pubblico
ESEMPIO 2
VM MIGRATION
Se lasciamo all’Hypervisor la gestione delle richieste
verso le periferiche, risulta più facile spostare Virtual
Machine da una macchina fisica ad un’altra.
Questo accade molto spesso, ad esempio in caso di
guasti o manutenzione dell’hardware
VM Migration
Physical Machine Physical Machine
VM MIGRATION
L’approccio Pass-Through prevede
l’installazione sui sistemi guest dei driver
specifici delle periferiche fisiche.
Se cambia l’hardware sottostante quindi, la
Virtual Machine non è più in grado di
dialogare con la periferica
VM MIGRATION
VM Migration
Brand 1
I/O interface
Brand 2
I/O interface
La migrazione delle VM necessita dunque che le macchine
fisiche abbiano configurazioni hardware identiche
VM MIGRATION
Se invece è l’Hypervisor a gestire
l’accesso alle periferiche, esponendo alle
VM un set di periferiche standard
(compatibili con ogni sistema operativo)
la migrazione diventa indolore
VM MIGRATION
VM Migration
Brand 1
I/O interface
Brand 2
I/O interface
Standard
Virtual I/O interface
Standard
Virtual I/O interface
Hypervisor
Hypervisor
FINE

More Related Content

What's hot

Software management in linux
Software management in linuxSoftware management in linux
Software management in linux
nejadmand
 

What's hot (20)

Windows Server
Windows ServerWindows Server
Windows Server
 
Introduction to docker
Introduction to dockerIntroduction to docker
Introduction to docker
 
Ansible
AnsibleAnsible
Ansible
 
Configuration Management in Ansible
Configuration Management in Ansible Configuration Management in Ansible
Configuration Management in Ansible
 
Linux Introduction
Linux IntroductionLinux Introduction
Linux Introduction
 
Docker Introduction
Docker IntroductionDocker Introduction
Docker Introduction
 
Introduction to Docker - VIT Campus
Introduction to Docker - VIT CampusIntroduction to Docker - VIT Campus
Introduction to Docker - VIT Campus
 
Software management in linux
Software management in linuxSoftware management in linux
Software management in linux
 
From Zero to Docker
From Zero to DockerFrom Zero to Docker
From Zero to Docker
 
Linux.ppt
Linux.ppt Linux.ppt
Linux.ppt
 
Stefano Cordibella - An introduction to Yocto Project
Stefano Cordibella - An introduction to Yocto ProjectStefano Cordibella - An introduction to Yocto Project
Stefano Cordibella - An introduction to Yocto Project
 
package mangement
package mangementpackage mangement
package mangement
 
DevOps를 가속화하는 플랫폼 엔지니어링
DevOps를 가속화하는 플랫폼 엔지니어링DevOps를 가속화하는 플랫폼 엔지니어링
DevOps를 가속화하는 플랫폼 엔지니어링
 
Fuchsia
FuchsiaFuchsia
Fuchsia
 
Aix The Future of UNIX
Aix The Future of UNIX Aix The Future of UNIX
Aix The Future of UNIX
 
Docker, LinuX Container
Docker, LinuX ContainerDocker, LinuX Container
Docker, LinuX Container
 
Linux Presentation
Linux PresentationLinux Presentation
Linux Presentation
 
Introduction to kubernetes
Introduction to kubernetesIntroduction to kubernetes
Introduction to kubernetes
 
BusyBox for Embedded Linux
BusyBox for Embedded LinuxBusyBox for Embedded Linux
BusyBox for Embedded Linux
 
Docker introduction (1)
Docker introduction (1)Docker introduction (1)
Docker introduction (1)
 

Similar to Virtualizzazione

Sistemi Operativi: Struttura avanzata - Lezione 05
Sistemi Operativi: Struttura avanzata - Lezione 05Sistemi Operativi: Struttura avanzata - Lezione 05
Sistemi Operativi: Struttura avanzata - Lezione 05
Majong DevJfu
 
Software libero nei sistemi embedded
Software libero nei sistemi embeddedSoftware libero nei sistemi embedded
Software libero nei sistemi embedded
Daniele Costarella
 

Similar to Virtualizzazione (20)

La Virtualizzazione 2010
La Virtualizzazione 2010La Virtualizzazione 2010
La Virtualizzazione 2010
 
Sistemi Operativi: Struttura avanzata - Lezione 05
Sistemi Operativi: Struttura avanzata - Lezione 05Sistemi Operativi: Struttura avanzata - Lezione 05
Sistemi Operativi: Struttura avanzata - Lezione 05
 
Delphi Day 2009 Win7 Dev Overview
Delphi Day 2009 Win7 Dev OverviewDelphi Day 2009 Win7 Dev Overview
Delphi Day 2009 Win7 Dev Overview
 
Virtualizzare Nanosoft
Virtualizzare   NanosoftVirtualizzare   Nanosoft
Virtualizzare Nanosoft
 
Ambienti di virtualizzazione
Ambienti di virtualizzazioneAmbienti di virtualizzazione
Ambienti di virtualizzazione
 
Cesvip 20110127
Cesvip 20110127Cesvip 20110127
Cesvip 20110127
 
Lezioni 2009
Lezioni 2009Lezioni 2009
Lezioni 2009
 
3DD 1e IPGen
3DD 1e IPGen3DD 1e IPGen
3DD 1e IPGen
 
BeRTOS: Sistema Real Time Embedded Free
BeRTOS: Sistema Real Time Embedded FreeBeRTOS: Sistema Real Time Embedded Free
BeRTOS: Sistema Real Time Embedded Free
 
Cpu
CpuCpu
Cpu
 
Cpu Abacus
Cpu AbacusCpu Abacus
Cpu Abacus
 
Cpu abacus
Cpu abacusCpu abacus
Cpu abacus
 
Software libero nei sistemi embedded
Software libero nei sistemi embeddedSoftware libero nei sistemi embedded
Software libero nei sistemi embedded
 
Evento 18 giugno - Virtualizzazione power
Evento 18 giugno - Virtualizzazione powerEvento 18 giugno - Virtualizzazione power
Evento 18 giugno - Virtualizzazione power
 
Virtualizzazione Power IBM
Virtualizzazione Power IBMVirtualizzazione Power IBM
Virtualizzazione Power IBM
 
Seminario VMWare 2014
Seminario VMWare 2014Seminario VMWare 2014
Seminario VMWare 2014
 
Guida al Computer - Lezione 51 - Il Sistema Operativo Parte 1
Guida al Computer - Lezione 51 - Il Sistema Operativo Parte 1Guida al Computer - Lezione 51 - Il Sistema Operativo Parte 1
Guida al Computer - Lezione 51 - Il Sistema Operativo Parte 1
 
Virtualizzazione
VirtualizzazioneVirtualizzazione
Virtualizzazione
 
Sistemi di virtualizzazione con Linux
Sistemi di virtualizzazione con LinuxSistemi di virtualizzazione con Linux
Sistemi di virtualizzazione con Linux
 
Modulo 1 - Lezione 2
Modulo 1 - Lezione 2Modulo 1 - Lezione 2
Modulo 1 - Lezione 2
 

Recently uploaded

presentazione di Storia di michela .pptx
presentazione di Storia di michela .pptxpresentazione di Storia di michela .pptx
presentazione di Storia di michela .pptx
michelacaporale12345
 
PLATONEpresentazionecaricatasu teams-pdf.pdf
PLATONEpresentazionecaricatasu teams-pdf.pdfPLATONEpresentazionecaricatasu teams-pdf.pdf
PLATONEpresentazionecaricatasu teams-pdf.pdf
palestiniaurora
 
Questa è una presentazione di Scienze riguardo le varietà allotropiche del ca...
Questa è una presentazione di Scienze riguardo le varietà allotropiche del ca...Questa è una presentazione di Scienze riguardo le varietà allotropiche del ca...
Questa è una presentazione di Scienze riguardo le varietà allotropiche del ca...
nicolofusco13
 
Questa è una presentazione di Educazione Civica riguardo la libertà di inizia...
Questa è una presentazione di Educazione Civica riguardo la libertà di inizia...Questa è una presentazione di Educazione Civica riguardo la libertà di inizia...
Questa è una presentazione di Educazione Civica riguardo la libertà di inizia...
nicolofusco13
 
presentazione di michela di SteveJobs.pdf
presentazione di michela di SteveJobs.pdfpresentazione di michela di SteveJobs.pdf
presentazione di michela di SteveJobs.pdf
michelacaporale12345
 

Recently uploaded (20)

presentazione di Storia di michela .pptx
presentazione di Storia di michela .pptxpresentazione di Storia di michela .pptx
presentazione di Storia di michela .pptx
 
PLATONEpresentazionecaricatasu teams-pdf.pdf
PLATONEpresentazionecaricatasu teams-pdf.pdfPLATONEpresentazionecaricatasu teams-pdf.pdf
PLATONEpresentazionecaricatasu teams-pdf.pdf
 
TeccarelliLorenzo-i4stilidellapitturaromana.docx
TeccarelliLorenzo-i4stilidellapitturaromana.docxTeccarelliLorenzo-i4stilidellapitturaromana.docx
TeccarelliLorenzo-i4stilidellapitturaromana.docx
 
a scuola di biblioVerifica: come utilizzare il test TRAAP
a scuola di biblioVerifica: come utilizzare il test TRAAPa scuola di biblioVerifica: come utilizzare il test TRAAP
a scuola di biblioVerifica: come utilizzare il test TRAAP
 
TeccarelliLorenzo-Leformeallotropichedelcarbonio.pptx
TeccarelliLorenzo-Leformeallotropichedelcarbonio.pptxTeccarelliLorenzo-Leformeallotropichedelcarbonio.pptx
TeccarelliLorenzo-Leformeallotropichedelcarbonio.pptx
 
Questa è una presentazione di Scienze riguardo le varietà allotropiche del ca...
Questa è una presentazione di Scienze riguardo le varietà allotropiche del ca...Questa è una presentazione di Scienze riguardo le varietà allotropiche del ca...
Questa è una presentazione di Scienze riguardo le varietà allotropiche del ca...
 
PalestiniAurora-la conoscenzatestoita.docx
PalestiniAurora-la conoscenzatestoita.docxPalestiniAurora-la conoscenzatestoita.docx
PalestiniAurora-la conoscenzatestoita.docx
 
Gli isotopi scienze naturale seconda pres
Gli isotopi scienze naturale seconda presGli isotopi scienze naturale seconda pres
Gli isotopi scienze naturale seconda pres
 
Pancia Asia_relazione laboratorio(forza d'attrito).docx
Pancia Asia_relazione laboratorio(forza d'attrito).docxPancia Asia_relazione laboratorio(forza d'attrito).docx
Pancia Asia_relazione laboratorio(forza d'attrito).docx
 
TeccarelliLorenzo-testoargomentativo.docx
TeccarelliLorenzo-testoargomentativo.docxTeccarelliLorenzo-testoargomentativo.docx
TeccarelliLorenzo-testoargomentativo.docx
 
Palestini Aurora-Steve Jobs,Olivetti e Gates.pptx
Palestini Aurora-Steve Jobs,Olivetti e Gates.pptxPalestini Aurora-Steve Jobs,Olivetti e Gates.pptx
Palestini Aurora-Steve Jobs,Olivetti e Gates.pptx
 
CONCEZIONE DELL'ARTEasiapanciapresentazione.pdf
CONCEZIONE DELL'ARTEasiapanciapresentazione.pdfCONCEZIONE DELL'ARTEasiapanciapresentazione.pdf
CONCEZIONE DELL'ARTEasiapanciapresentazione.pdf
 
magia, stregoneria, inquisizione e medicina.pptx
magia, stregoneria, inquisizione e medicina.pptxmagia, stregoneria, inquisizione e medicina.pptx
magia, stregoneria, inquisizione e medicina.pptx
 
Storia-CarloMagno-TeccarelliLorenzo.pptx
Storia-CarloMagno-TeccarelliLorenzo.pptxStoria-CarloMagno-TeccarelliLorenzo.pptx
Storia-CarloMagno-TeccarelliLorenzo.pptx
 
Questa è una presentazione di Educazione Civica riguardo la libertà di inizia...
Questa è una presentazione di Educazione Civica riguardo la libertà di inizia...Questa è una presentazione di Educazione Civica riguardo la libertà di inizia...
Questa è una presentazione di Educazione Civica riguardo la libertà di inizia...
 
Le forme allotropiche del C-Palestini e Pancia.docx
Le forme allotropiche del C-Palestini e Pancia.docxLe forme allotropiche del C-Palestini e Pancia.docx
Le forme allotropiche del C-Palestini e Pancia.docx
 
TeccarelliLorenzo-PrimadiSteveJobselasuaconcorrenza.pptx
TeccarelliLorenzo-PrimadiSteveJobselasuaconcorrenza.pptxTeccarelliLorenzo-PrimadiSteveJobselasuaconcorrenza.pptx
TeccarelliLorenzo-PrimadiSteveJobselasuaconcorrenza.pptx
 
presentazione di michela di SteveJobs.pdf
presentazione di michela di SteveJobs.pdfpresentazione di michela di SteveJobs.pdf
presentazione di michela di SteveJobs.pdf
 
IL CHIAMATO ALLA CONVERSIONE, credo che Dio verrà a giudicare vivi e morti
IL CHIAMATO ALLA CONVERSIONE, credo che Dio verrà a giudicare vivi e mortiIL CHIAMATO ALLA CONVERSIONE, credo che Dio verrà a giudicare vivi e morti
IL CHIAMATO ALLA CONVERSIONE, credo che Dio verrà a giudicare vivi e morti
 
TeccarelliLorenzo-Mitodella.cavernaa.pdf
TeccarelliLorenzo-Mitodella.cavernaa.pdfTeccarelliLorenzo-Mitodella.cavernaa.pdf
TeccarelliLorenzo-Mitodella.cavernaa.pdf
 

Virtualizzazione

  • 2. UNA DEFINIZIONE Per virtualizzazione intendiamo la creazione di una versione virtuale di qualcosa, dove il termine virtuale si contrappone a reale, tangibile, fisicamente concreto
  • 3. Hardware di un Calcolatore Dispositivi di Memorizzazione Reti di Calcolatori AMBITI DELLA VIRTUALIZZAZIONE
  • 4. Virtualizzare l’hardware di un calcolatore consiste nella creazione di un software che si comporti in tutto e per tutto come un vero calcolatore VIRTUALIZZAZIONE HARDWARE CALCOLATORE
  • 5. VIRTUALIZZAZIONE HARDWARE CALCOLATORE Sulla questa macchina virtuale possiamo installare un qualsiasi sistema operativo compatibile, che potrà eseguire del software come su una analoga macchina fisica
  • 6. VIRTUALIZZAZIONE DISPOSITIVI MEMORIZZAZIONE La virtualizzazione di dispositivi di memorizzazione (storage virtualizzation) rende astratto il concetto di memoria di massa liberandolo da vincoli come la vicinanza fisica, la dimensione, la gestione dei backup e degli eventuali guasti
  • 7. VIRTUALIZZAZIONE DISPOSITIVI MEMORIZZAZIONE Un sistema di storage virtualizzation presenta all’utente uno spazio logico per la memorizzazione dei dati occupandosi dietro le quinte di mappare questo spazio logico su storage reale
  • 8. VIRTUALIZZAZIONE RETI CALCOLATORI In un contesto dove vengono virtualizzati più calcolatori è possibile astrarre sia il concetto switch che di interfaccia di rete Virtual Network Interface Controller (VNIC)
  • 9. VIRTUALIZZAZIONE RETI CALCOLATORI Grazie a questa ulteriore astrazione si riescono a costruire vere e proprie reti di macchine virtuali che possono funzionare anche indipendentemente dall’hardware sottostante
  • 11. VIRTUALIZZAZIONE RETI CALCOLATORI ATTENZIONE! E’ più corretto definirlo un simulatore di rete Cisco Packet Tracer non rientra propriamente nell’ambito della virtualizzazione delle reti
  • 13. L’obiettivo è quello di creare un software che si comporti in tutto e per tutto come un sistema fisico Virtual Machine (VM) OBIETTIVI
  • 14. COSA VIRTUALIZZIAMO? Per virtualizzare una macchina si devono considerare tre aspetti principali Virtualizzazione CPU Virtualizzazione Memoria Virtualizzazione periferiche I/O
  • 15. EMULATORI I concetti che stanno dietro alla virtualizzazione hanno molto in comune con quelli dell’emulazione
  • 16. EMULATORI La differenza principale sta nel fatto che nell’emulazione la macchina emulata ha un hardware molto diverso da quello della macchina ospite
  • 17. EMULATORE NINTENDO 64 ESEMPIO Piattaforma Ospite Piattaforma da Emulare CPU Intel 64 bit core i7 8700 a 3.2 GHz CPU NEC 64 bit Mips R4300 a 93.75 MHz GPU 128 bit nVidia GTX 1080 (9 TFLOPS) GPU 64 bit Reality Coprocessor (100 MFLOPS) 16 Gigabyte RAM 4.5 Megabyte RAM
  • 18. PROBLEMATICHE EMULAZIONE Architettura processore differente 1 Scala delle prestazioni Istruzioni macchina differenti 2 3
  • 19. PROCESSORI DIFFERENTI Architettura del processore differente 1
  • 20. PROCESSORI DIFFERENTI L’architettura MIPS e x86 presentano registri e flags in quantità e nomenclatura differente MIPS x86 32 Register 16 Register 64 bit 64 bit $t0, $t1, $t2, … RAX, RBX, RCX, …
  • 21. PROCESSORI DIFFERENTI I registri dell’architettura MIPS sono più numerosi di quelli x86 Oltre ad un mapping diretto sarà necessaria una struttura dati che salvi lo stato dei registri MIPS
  • 22. PROCESSORI DIFFERENTI MIPS x86 $t0 RAX $t1 RBX $t2 RCX $t3 RDX $t4 RSI $t5 RDI $t6 RBP $t7 RSP $t8 R8 $t9 R9 $s0 R10 $s1 R11 $s2 R12 $s3 R13 $s4 R14 $s5 R15 fino a 16 registri con mapping diretto
  • 23. PROCESSORI DIFFERENTI MIPS x86 $at ? $v0 ? $v1 ? $a0 ? $a1 ? $a2 ? $a3 ? $k0 ? $k1 ? $gp ? $sp ? $fp ? $ra ? HI ? LOW ? PC IP I restanti in RAM
  • 25. ISTRUZIONI DIFFERENTI L’architettura MIPS e x86 hanno istruzioni macchina diverse sia nella nomenclatura (o codice operativo) che nel numero di operandi
  • 26. ISTRUZIONI DIFFERENTI MIPS opcode rs rt rd shift (shamt) funct 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits Formato istruzioni (R) Mnemonic Meaning Type Opcode Funct add Add R 0x00 0x20 Codice operativo della ADD Esempio istruzione: add $t0,$t1,$t2 opcode rs rt rd shift (shamt) funct 000000 01000 01001 01010 00000 100000
  • 27. ISTRUZIONI DIFFERENTI x86 Codici operativi delle ADD mnemonics op xx xx xx xx xx sw len flags ADD AL,ib 04 i0 B 2 o---szap ADD AX,iw 05 i0 i1 W 3 o---szap ADD rb,rmb 02 mr d0 d1 B 2~4 o---szap ADD rw,rmw 03 mr d0 d1 W 2~4 o---szap ADD rmb,ib 80 /0 d0 d1 i0 NB 3~5 o---szap ADD rmw,iw 81 /0 d0 d1 i0 i1 NW 4~6 o---szap ADD rmw,ib 83 /0 d0 d1 i0 EW 3~5 o---szap ADD rmb,rb 00 mr d0 d1 B 2~4 o---szap ADD rmw,rw 01 mr d0 d1 W 2~4 o---szap
  • 28. ISTRUZIONI DIFFERENTI opcode totalmente diversi dimensioni in byte diverse numero di parametri diversi
  • 29. ISTRUZIONI DIFFERENTI L’obiettivo finale dell’emulatore è quello di eseguire del codice equivalente che sortisca lo stesso risultato MIPS x86 add $t0,$t1,$t2 mov RCX,RAX add RCX,RBX In pratica, deve fare da tramite tra i due linguaggi
  • 30. APPROCCI EMULAZIONE Sono possibili tre approcci per l’emulazione INTERPRETAZIONE RICOMPILAZIONE STATICA RICOMPILAZIONE DINAMICA
  • 31. INTERPRETAZIONE Traduzione a livello di singola istruzione FINE Leggi istruzione MIPS usando PC Traduci in istruzioni x86 PC = END PC = PC +1 INIZIO Esegui istruzioni tradotte PC = 0 false true
  • 33. RICOMPILAZIONE STATICA La ricompilazione statica mira invece a tradurre tutto il codice macchina prima dell’esecuzione add $t0,$t1,$t2 li $t0,57 beq $t0,$t1,laggiu j lassu MOV CX, AX ADD CX, BX MOV AX, 57 CMP AX, BX JE laggiù JMP lassu ricompilazione sta/ca esecuzione na/va MIPS x86
  • 34. Codice sorgente compresso RICOMPILAZIONE STATICA La ricompilazione statica sembra una buona idea, ma in molti casi non è facile da implementare Codice sorgente modificato a runtime Codice sorgente caricato a runtime Difficoltà a distinguere il codice dai dati
  • 35. RICOMPILAZIONE DINAMICA La ricompilazione dinamica rappresenta un compromesso tra i due approcci precedenti La traduzione avviene a livello di blocchi di istruzioni detti buckets I buckets hanno dimensione fissa (al più delimitata da istruzioni di salto)
  • 36. RICOMPILAZIONE DINAMICA Per ottimizzare il processo i bucket vengono inseriti in una cache in memoria Man mano che l’emulazione avanza, le prestazioni si avvicinano sempre di più a quelle di una ricompilazione statica
  • 37. RICOMPILAZIONE DINAMICA INIZIO FINE Esiste già un bucket tradotto con indice PC? PC = 0 Leggi un bucket di istruzioni MIPS partendo da PC Traduci il bucket in istruzioni x86
 e Salvalo nella cache con indice PC Esegui il bucket di istruzioni tradotte PC = END PC = PC + size_of(bucket) Leggi il bucket di istruzioni x86 con indice PC dalla cache true false false true
  • 38. RICOMPILAZIONE DINAMICA La ricompilazione dinamica (con il nome di Just In Time Compilation) è utilizzata correntemente in tutte le Java Virtual Machine
  • 39. SCALA DELLE PRESTAZIONI Scala delle prestazioni 3
  • 40. SCALA DELLE PRESTAZIONI Le due macchine (reale ed emulata) hanno prestazioni molto differenti Piattaforma Ospite Piattaforma da Emulare CPU Intel 64 bit core i7 8700 a 3.2 GHz CPU NEC 64 bit Mips R4300 a 93.75 MHz GPU 128 bit nVidia GTX 1080 (9 TFLOPS) GPU 64 bit Reality Coprocessor (100 MFLOPS) 16 Gigabyte RAM 4.5 Megabyte RAM
  • 41. SCALA DELLE PRESTAZIONI A seconda del tipo di applicazioni che gireranno sulle macchine emulate questo può essere un male oppure un bene
  • 42. SCALA DELLE PRESTAZIONI Alcuni vecchi giochi ad esempio, facendo affidamento su una frequenza di clock ben nota, potevano utilizzarla come base per la temporizzazione di alcuni eventi Eventi scripting del gameplay Eventi legati al rendering Eventi legati agli algoritmi di AI Eventi legati al playback audio
  • 43. SCALA DELLE PRESTAZIONI Alcune soluzioni Emulare clock originale con timer di sistema Codice dummy per rallentare l’esecuzione Fermare l’emulazione ad intervalli stabiliti
  • 45. RICAPITOLANDO La virtualizzazione riprende molti concetti chiave dell’emulazione ma lavora prevalentemente con Virtual Machine che ripropongono l’architettura sottostante
  • 46. RICAPITOLANDO Su piattaforma x86 si emulano Virtual Machine x86 Su piattaforma ARM si emulano Virtual Machine ARM E così via…
  • 48. HYPERVISOR Uno dei principali attori della virtualizzazione è uno speciale software chiamato hypervisor L’obiettivo principale di un hypervisor è quello di gestire un certo numero di Virtual Machine Monitor (VMM)
  • 49. VMM Un Virtual Machine Monitor è anch’esso un oggetto software Fornisce una astrazione dell’hardware sul quale dovrà girare il sistema operativo ospite
  • 50. HYPERVISOR E VMM HFunzionalità di base (es. scheduling) Hypervisor Funzionalità Aggiuntive VMMVMMVMM VM VM VM
  • 51. HYPERVISOR Compiti Hypervisor partizionare le risorse reali (CPU, Memoria, I/O) allocarle ai vari VMM in maniera efficiente
  • 52. TIPOLOGIE HYPERVISOR Esistono due tipologie di Hypervisor HOSTED BARE METAL
  • 53. HOSTED HYPERVISOR (TYPE 2) Un hosted hypervisor viene installato su una macchina che possiede già un sistema operativo ospitante (Host OS)
  • 54. HOSTED HYPERVISOR (TYPE 2) Server Hardware Host OS Hosted Hypervisor Guest OS Guest OS Guest OS APP APP APP Virtual Machines Physical Machine
  • 55. HOSTED HYPERVISOR (TYPE 2) Maggiori esponenti VMWare Workstation Oracle Virtual Box QEMU KVM MS Virtual PC* * fuori produzione
  • 56. HOSTED HYPERVISOR (TYPE 2) Generalmente un Hosted Hypervisor viene installato come modulo kernel assieme a strumenti di amministrazione delle Virtual Machines
  • 57. HOSTED HYPERVISOR (TYPE 2) Il tool di amministrazione di VirtualBox
  • 58. HOSTED HYPERVISOR (TYPE 2) PRO Facile installazione e configurazione Non necessità di OS modificati CONTRO Performance ridotte Non adatto per virtualizzate RTOS
  • 59. BARE METAL HYPERVISOR (TYPE 1) Se l’hypervisor viene installato direttamente sull’hardware (senza sistema operativo host) si parla di Bare Metal Hypervisor
  • 60. BARE METAL HYPERVISOR (TYPE 1) In questo scenario l’hypervisor è una proto sistema operativo che gestisce direttamente l’hardware del server dialogando con le virtual machine
  • 61. BARE METAL HYPERVISOR (TYPE 1) Server Hardware Bare Metal Hypervisor Guest OS Guest OS Guest OS APP APP APP Virtual Machines Physical Machine
  • 62. BARE METAL HYPERVISOR (TYPE 1) Maggiori esponenti VMWare ESX Microsoft Hyper-V Oracle VM server XEN Server XBOX One OS
  • 63. BARE METAL HYPERVISOR (TYPE 1) PRO Performance migliori Supporto per RTOS CONTRO Gestione più complicata Più dipendente dall’hardware
  • 65. LIVELLI PRIVILEGIO CPU Prima di addentrarsi ulteriormente nelle varie tecniche di virtualizzazione è necessario chiarire bene il concetto di livello di privilegio di una CPU
  • 66. LIVELLI PRIVILEGIO CPU Le architetture x86 (ed analogamente le altre) prevedono 4 livelli di privilegio noti con il nome di ring Hardware Ring 3 Ring 2 Ring 1 Ring 0 Esecuzione diretta Richieste OS App Utente OS
  • 67. LIVELLI PRIVILEGIO CPU La CPU transita tra i vari ring come se fossero degli stati Ogni ring predetermina il set di istruzioni che sarà consentito eseguire
  • 68. IL RING 3 Il ring 3 (noto come user mode) è il livello al quale girano tutte le applicazioni utente Il software che gira a questo livello ha accesso ad un set limitato di istruzioni della CPU
  • 69. LIMITAZIONI RING 3 RING 3 Cambiare livello di privilegio Modificare tabella pagine memoria Registrare Interrupt Handler Accessi diretti alle periferiche
  • 70. IL RING 0 Il ring 0 (noto come kernel mode) è il livello dove tutto è permesso. Questo livello rappresenta l’habitat ideale per il sistema operativo
  • 71. IL RING 0 Le applicazioni (che non possono interagire direttamente con l’hardware) ha modo di scalare a ring 0 facendo chiamate al sistema operativo RING 3
  • 72. I RING 1 & 2 Questi livelli intermedi sono stati pensati originariamente da Intel per ospitare il codice dei device driver Nella pratica però non sono quasi mai stati utilizzati dai sistemi operativi
  • 73. I RING 1 & 2 Molti software di virtualizzazione hanno fornito una nuova ragione d’essere a questi livelli di privilegio IDEA
  • 74. I RING 1 & 2 Una questione molto spinosa infatti, è stabilire a quale livello di privilegio far girare Hypervisor ed il Sistema Operativo Guest 0 1 2
  • 75. I RING 1 & 2 I sistemi operativi sono progettati ed implementati per girare a ring 0 Anche l’Hypervisor, essendo una specie di sistema operativo, deve lavorare a privilegio massimo! MA
  • 76. I RING 1 & 2 Non essendo consentito a due kernel di occupare allo stesso tempo il ring 0 la possibilità di utilizzare livelli di privilegio aggiuntivi aiuta molto
  • 78. TECNICHE DI VIRTUALIZZAZIONE Nel panorama dei metodi di virtualizzazione spiccano tre approcci al problema Full Virtualization OS Assisted Virtualization Hardware Assisted Virtualization
  • 80. FULL VIRTUALIZATION L’obiettivo della Full Virtualization è quello di emulare l’intero hardware Affinché si possa parlare di Full Virtualization deve essere possibile far girare sulle Virtual Machine qualsiasi sistema operativo progettato per l’hardware nativo che stiamo emulando
  • 81. FULL VIRTUALIZATION La Full Virtualization permette di utilizzare versioni non modificate dei Sistemi Operativi Il Sistema Operativo Guest in questo scenario non è consapevole di stare girando dentro una Virtual Machine
  • 82. FULL VIRTUALIZATION Senza aiuto da parte dell’Hardware la Full Virtualizazion si implementa con un mix di esecuzione diretta e ricompilazione dinamica Hardware Ring 3 Ring 2 Ring 1 Ring 0 Esecuzione diretta Richieste OS Ricompilate Dinamicamente App Utente VMM Guest OS
  • 83. FULL VIRTUALIZATION Hypervisor e VMMs girano a livello 0 eventualmente come driver a fianco di un Sistema Operativo Host Il Sistema Operativo Guest gira a livello 1 mentre le Applicazioni a livello 3
  • 84. FULL VIRTUALIZATION Anche se progettato per il livello 0 buona parte del codice del Sistema Operativo Guest può girare senza problemi anche a livello 1
  • 85. FULL VIRTUALIZATION Ci saranno però dei casi in cui sarà realmente necessario trovarsi al livello 0 ATTENZIONE
  • 86. FULL VIRTUALIZATION In questi casi dovrà essere ricompilato dinamicamente il codice critico, sostituendolo con delle chiamate verso l’Hypervisor L’Hypervisor farà dunque da tramite verso l’hardware per il Sistema Operativo Guest
  • 88. ESEMPIO - FULL VIRTUALIZATION Una routine kernel del Sistema Operativo Guest vuole accedere direttamente ad una periferica eseguendo un’istruzione di OUT Hardware Ring 1 Ring 0 OUT DX,ALVMM Guest OS Essendo l’istruzione molto critica necessita di trovarsi a ring 0 per non essere bloccata dal sistema
  • 89. ESEMPIO - FULL VIRTUALIZATION L’Hypervisor in questi casi ricompila dinamicamente le parti critiche sostituendole con chiamate a proprie routine interne Hardware Ring 1 Ring 0 OUT DX,AL Guest OS CALL HYP_OUTVMM OUT DX,AL
  • 90. ESEMPIO - FULL VIRTUALIZATION Per velocizzare future esecuzioni della medesima routine kernel, le parti di codice ricompilate vengono indicizzate e salvate in una memoria cache dell’Hypervisor CALL HYP_OUT
  • 92. OS ASSISTED VIRTUALIZATION Nota anche come Paravirtualization, l’OS Assisted Virtualization nasce con l’idea di migliorare le prestazioni delle macchine virtuali collaborando con i Sistemi Operativi Guest
  • 93. OS ASSISTED VIRTUALIZATION Per facilitare l’Hypervisor gli OS Guest devono essere opportunamente modificati nelle parti critiche che interagiscono con l’hardware Gli OS Guest dunque sono consapevoli di girare in un ambiente virtuale e per velocizzare l’emulazione chiamano direttamente l’Hypervisor
  • 94. OS ASSISTED VIRTUALIZATION Hardware VMM Driver Interface Real Drivers VMM VM Modified Drivers Guest OS APP APP VM Modified Drivers Guest OS APP APP VM Modified Drivers Guest OS APP APP
  • 95. OS ASSISTED VIRTUALIZATION La paravirtualizzazione è un buon compromesso qualora le prestazioni siano importanti La necessità di driver e/o versioni moddate dei vari sistemi operativi però ne ha limitato l’utilizzo Ad esempio, pare che non esistano distribuzioni di Windows che la supportino
  • 97. HARDWARE ASSISTED VIRTUALIZATION Data la crescente popolarità ed utilità della virtualizzazione, i produttori di CPU hanno cominciato ad ricercare soluzioni hardware per migliorare le prestazioni delle Virtual Machine
  • 98. HARDWARE ASSISTED VIRTUALIZATION A partire dal 2006, Intel e AMD cominciano ad introdurre nei propri processori nuove estensioni per il supporto alla virtualizzazione Intel VT-x AMD-V
  • 99. HARDWARE ASSISTED VIRTUALIZATION L’idea di base di queste tecnologie è l’estensione del modello dei ring introducendo una modalità ancora più privilegiata, sotto il livello zero
  • 100. HARDWARE ASSISTED VIRTUALIZATION Hardware Ring 3 Ring 2 Ring 1 Ring 0 Esecuzione diretta Richieste del Guest OS intercettate* App Utente Guest OS Non-root Mode Privilege Levels Root Mode Privilege Levels Hypervisor VMM * senza bisogno di Ricompilazione dinamica o Paravirtualizzazione
  • 101. HARDWARE ASSISTED VIRTUALIZATION Girando nel suo habitat naturale, ovvero il ring 0, il sistema operativo ospite non necessita di essere tradotto dinamicamente o modificato ricorrendo alla paravirtualizzazione
  • 102. HARDWARE ASSISTED VIRTUALIZATION Semplicemente, tutte le istruzioni sensibili che avvengono a ring 0 vengono intercettate (trapped) verso l’Hypervisor che le attua nel giusto contesto delle risorse fisiche
  • 104. HARDWARE ASSISTED VIRTUALIZATION Con le prime versioni dei processori compatibili VT-x e AMD-V le prestazioni della virtualizzazione potevano essere peggiori di quelle ottenute con gli altri metodi
  • 105. HARDWARE ASSISTED VIRTUALIZATION Questo perché gli Hypervisor esistenti al tempo erano talmente ottimizzati da essere molto più efficienti Infatti i numerosi passaggi da Root Mode a Non Root Mode introducevano un overhead non indifferente
  • 107. VIRTUALIZZAZIONE MEMORIA Oltre alla CPU, un VMM deve astrarre anche altri elementi costituenti l’hardware di un computer RAM Periferiche I/O
  • 108. VIRTUALIZZAZIONE MEMORIA La virtualizzazione della memoria tra le varie VM riprende le stesse idee che sono alla base della gestione della memoria nei moderni sistemi operativi
  • 109. VIRTUALIZZAZIONE MEMORIA Le applicazioni vedono e dispongono di uno spazio di memoria che non è in corrispondenza diretta con la RAM fisica Il trucco consiste nel suddividere la RAM in pagine, associando ad ogni applicazione una tabella di corrispondenza tra pagine virtuali e pagine fisiche
  • 111. VIRTUALIZZAZIONE MEMORIA L’Hypervisor dovrà riproporre un mapping analogo, introducendo un ulteriore tabella di corrispondenza tra memoria delle VM e memoria fisica
  • 112. VIRTUALIZZAZIONE MEMORIA VM 1 Process 1 Page Table 1 Process 2 Page Table 2 VM 2 Process 1 Page Table 1 Process 2 Page Table 2 Hypervisor Real Machine Memory VMM 1 Page Table VMM 2 Page Table
  • 114. VIRTUALIZZAZIONE MEMORIA Il doppio livello di paginazione introduce un calo delle prestazioni non indifferente, dato che ogni accesso alla memoria porta al doppio degli accessi previsti per i casi non virtualizzati
  • 115. VIRTUALIZZAZIONE MEMORIA Un’idea per ottimizzare il numero di accessi sarebbe quello di aggirare la paginazione del Sistema Guest delegando tutto al VMM
  • 116. VIRTUALIZZAZIONE MEMORIA Nella sua implementazione più brutale, questo approccio prevede di intercettare tutti gli accessi alle tabelle delle pagine del Sistema Operativo Guest girandole all’Hypervisor
  • 117. VIRTUALIZZAZIONE MEMORIA VM 1 Process 1 Page Table 1 Process 2 Page Table 2 VM 2 Process 1 Page Table 1 Process 2 Page Table 2 Hypervisor Real Machine Memory Shadow Page Tables VMM 2 Page Table Shadow Page Tables Shadow Page Tables
  • 118. VIRTUALIZZAZIONE MEMORIA Il compito dell’Hypervisor sarà quello di gestire delle tabelle delle pagine ombra (shadow page table) tenendo all’oscuro il sistema guest che avrà l’impressione di lavorare con tabelle proprie
  • 120. VIRTUALIZZAZIONE MEMORIA La seconda generazione di processori con supporto alla virtualizzazione introduce meccanismi ad-hoc per supportare gli Hypervisor in questo compito Questo meccanismo di accelerazione prende il nome di Second Level Address Translation (SLAT)
  • 121. HARDWARE ASSISTED MEMORY VIRTUALIZATION Intel EPT (VT-x2) (Extended Page Table) Westmere - 2010 AMD RVI (Rapid Virtualization Indexing) Barcelona - 2009
  • 122. VIRTUALIZZAZIONE MEMORIA L’idea è quella di agire sul Translation Lookaside Buffer (TLB), una speciale memoria all’interno della CPU che funge da cache per le tabelle delle pagine
  • 123. TRANSLATION LOOKASIDE BUFFER P D Page Table Memoria FisicaF D Indirizzo logico Pagina Logica Pagina Fisica TLB MISS TLB HIT CPU TLB
  • 124. VIRTUALIZZAZIONE MEMORIA Nei processori moderni il TLB è molto capiente, così da poter ospitare sia le pagine delle VM che le pagine del VMM A regime dunque con due accessi sequenziali al TLB è possibile velocizzare l’accesso alla memoria fisica
  • 125. VIRTUALIZZAZIONE MEMORIA Inoltre, grazie anche ad un meccanismo che consente di taggare le righe del TLB con un Virtual Machine ID si possono limitare gli effetti nefasti del flush del TLB
  • 127. VIRTUALIZZAZIONE PERIFERICHE L’ultimo elemento da virtualizzare dopo CPU e Memoria sono le periferiche di I/O
  • 128. VIRTUALIZZAZIONE PERIFERICHE Gli approcci classici sono due Software based I/O Management & Virtualization Direct Hardware Pass-Through
  • 129. SOFTWARE BASED I/O MANAGEMENT In questo caso l’Hypervisor intercetta le chiamate di I/O gestendole internamente e trasponendole sulle periferiche fisiche in maniera opportuna VM Hypervisor I/O Manager
  • 130. DIRECT HARDWARE PASS-THROUGH Nel secondo caso la periferica buca la virtualizzazione e viene presentata al Sistema Guest in modo da avere un dialogo diretto VM Hypervisor
  • 131. VIRTUALIZZAZIONE PERIFERICHE In genere la prima soluzione è la più adottata perché semplifica e rende più sicura la gestione Inoltre, abilita un sacco di particolari features aggiuntive molto interessanti
  • 133. VIRTUALIZZAZIONE PERIFERICHE Passando attraverso l’Hypervisor risulta molto più facile creare reti di Virtual Machine che lavorano senza necessità di uscire su device fisici
  • 134. VIRTUALIZZAZIONE PERIFERICHE Hypervisor VM1 VM2 VM3 Virtual SWITCH Physical NIC Virtual NICs HW Virtual Machines LAN 101010 010111 101101 000110
  • 135. VIRTUALIZZAZIONE PERIFERICHE Questo approccio inoltre, consentendo di far coincidere allo stesso indirizzo fisico più macchine virtuali, facilita l’implementazione di politiche di failover e load balancing
  • 136. LOAD BALANCING Hypervisor VM VM Clone 1 VM Clone 2 Virtual SWITCH Physical NIC Virtual NICs HW Virtual Machines LAN 172.83.12.3 IP Pubblico
  • 137. FAILOVER Hypervisor VM VM Clone 1 VM Clone 2 Virtual SWITCH Physical NIC Virtual NICs HW Virtual Machines LAN 172.83.12.3 IP Pubblico
  • 139. VM MIGRATION Se lasciamo all’Hypervisor la gestione delle richieste verso le periferiche, risulta più facile spostare Virtual Machine da una macchina fisica ad un’altra. Questo accade molto spesso, ad esempio in caso di guasti o manutenzione dell’hardware VM Migration Physical Machine Physical Machine
  • 140. VM MIGRATION L’approccio Pass-Through prevede l’installazione sui sistemi guest dei driver specifici delle periferiche fisiche. Se cambia l’hardware sottostante quindi, la Virtual Machine non è più in grado di dialogare con la periferica
  • 141. VM MIGRATION VM Migration Brand 1 I/O interface Brand 2 I/O interface La migrazione delle VM necessita dunque che le macchine fisiche abbiano configurazioni hardware identiche
  • 142. VM MIGRATION Se invece è l’Hypervisor a gestire l’accesso alle periferiche, esponendo alle VM un set di periferiche standard (compatibili con ogni sistema operativo) la migrazione diventa indolore
  • 143. VM MIGRATION VM Migration Brand 1 I/O interface Brand 2 I/O interface Standard Virtual I/O interface Standard Virtual I/O interface Hypervisor Hypervisor
  • 144. FINE