Sistemi Operativi: Struttura avanzata - Lezione 05
-
Upload
majong-devjfu -
Category
Technology
-
view
1.620 -
download
0
description
Transcript of Sistemi Operativi: Struttura avanzata - Lezione 05
1
Introduzione• Negli ultimi anni, è esplosa la moda degli
strumenti di virtualizzazione– Xen, KVM– Vmware, VirtualBox– User Mode Linux– Qemu, Bochs
• Interesse:– privato– industriale
• PERCHE'?
2
Architetture – anni '90• Server Intel/AMD estremamente popolari (x86)• Ciascun server esegue Linux, Windows,
oppure Netware• Le ditte installano un SO ed una applicazione
su ciascun server• 2 server diventano rapidamente >50 server• Problemi:
– Logistici (dove metto fisicamente le macchine)– Consumo elettrico elevato
3
Architetture – anni '90
Fileserver
Webserver
Fileserver
Webserver
Domainserver
DNSserver
Appserver
Fileserver
Ciascun serveresegue 1 applicazione
4
Architetture – 2000• I produttori di HW si buttano a capofitto per
risolvere il problema– Focus: rendere “piccoli” i server
• Alloggiamento delle unità di calcolo in armadi– Rack: 6-20 unità server per armadio– Blade: 30-60 unità server per armadio
• Unità di misura della “grandezza” delle unità nell'armadio: 1U (19inch x 1.75inch)– Larghezza, altezza dello chassis del server
• Unità di calcolo di diverse dimensioni:– 1U, 2U, 3U– Stessa larghezza, altezza raddoppiata, triplicata
5
Architetture – 2000
Armadio Rack vuoto
Dell PowerEdge 1950 Rack Unit (1U)
Armadio Rack pieno
6
Architetture – 2000
IBM HS20 Blade Server Unit
HP BladeSystem c700016 blade servers
2 UPS da 3U
7
Architetture – 2000• Riduzione dello spazio necessario per ospitare
i server• Il consumo elettrico rimane un problema• Al crescere della frequenza delle CPU:
– l'utilizzazione media dei server si abbassa (4%-10%)
– sempre una applicazione per server
8
I problemi attuali• Sovradimensionamento delle infrastrutture
esistenti– Costi enormi dovuti a consumo elettrico,
logistica e raffreddamento– Costi enormi di amministrazione dovuti
all'installazione di una applicazione per server
• Bassi tassi di utilizzo delle risorse dei server– Max. 10%
• Cosa deve essere fatto? Ridurre i costi• Come riduco I costi?
– Ridurre il consumo elettrico– Aumentare l'utilizzazione media per server
9
Virtualizzazione• Una soluzione comune è quella di virtualizzare
l'architettura• Eseguire tante macchine “finte”, “virtuali”
(equivalenti a macchine vere)– Tramite software opportuni– Su una architettura fisica vera più piccola
FileserverDB servers
Domainserver
DNSserverApp servers
Sistemafisico
Printserver
Sistemivirtuali
10
Macchina virtuale• Una macchina virtuale è una implementazione
software di un calcolatore– Astrazione software di un calcolatore fisico
• Definizione di Popek e Goldberg:– “Un duplicato efficiente ed isolato di una
macchina vera”
• Esempio: Java– Un programma scritto in Java riceve servizi dal
Java Runtime Environment– Il Java Runtime Environment implementa una
macchina “fittizia” sulla macchina reale– Portabilità dei programmi
11
Architettura tradizionale• Singolo SO per nodo
fisico• Singola applicazione
per nodo fisico• Componenti HW
connessi direttamenteal SO
Processo Processo Processo
Sistema Operativo
Architettura HW
CPU memoria
disco
Applicazione
rete
12
Architettura virtualizzata• Aggiunta di un livello di
virtualizzazione, dettoVirtual Machine Monitor
• Diversi SO possonoessere instanziati sotto forma di macchine virtuali
• Ciascuna macchina virtuale è isolata
• Possono essere eseguiti più SO simultaneamente
• Se una macchina virtuale si rovina, le altre non sono affette
Applicazione
Livello di virtualizzazione(Virtual Machine Monitor)
SO Windows
CPU Disco
Mem Rete
Applicazione
SO Linux
CPU Disco
Mem Rete
Sistema Operativo
Architettura HW
CPU memoria
discorete
Macchinevirtuali
13
Macchine virtuali:innovazione o riscoperta?
• Il concetto di macchina virtuale è nuovo?– Assolutamente no!
• Prima implementazione: CP-40 (IBM, 1967)– Control Program (detto anche Virtual Machine)– Installato sull'IBM System/360– SO basato su memoria virtuale, time sharing– Poteva eseguire tante istanze software del SO
(single user, interattivo) Conversational Monitor System (CMS) sullo stesso hardware
14
IBM System/360
15
CMS
16
VM/360: architettura
Processi Processi Processi
Kernel Kernel Kernel
VM1
VM2
VM3
Implementazione macchina virtuale
Hardware
Applicazioni
CMS
CP-40
System 360
17
VM/360: isolamento• Implementazione tramite tecniche di time
sharing e virtualizzazione della memoria• Macchina virtuale: copia esatta
dell'architettura fisica, sotto forma di processo– dischi virtuali, nastri virtuali– memoria principale virtuale– CPU virtuale– dispositivi I/O virtuali
• ciascun processo colloquia con la propria VM, non con altro
18
VM/360: virtualizzazione risorse• Il kernel implementa tutte le funzionalità
necessarie per suddividere le periferiche fisiche in più periferiche virtuali
• Le periferiche virtuali non esistono; sono nomi di dispositivi che il kernel mappa nei veri dispositivi– kernel crea dischi virtuali (detti minidischi),
mappati sulle traccie del disco vero– traccie del disco vero
19
Un pò di terminologia• Host: l'infrastruttura fisica vera che ospita
l'ambiente virtuale– Host machine: computer fisico– Host OS: sistema operativo vero
• Guest: l'infrastruttura virtuale– Guest machine: infrastruttura hw virtuale– Guest OS: sistema operativo virtuale
• Virtual Machine Monitor:– Implementa l'astrazione virtuale– Crea rappresentazioni “finte” di risorse– Esegue OS ed applicazioni virtuali– Se fa uso (o è implementato) in HW, prende il
nome di hypervisor
20
Un pò di terminologiaApplicazione
Livello di virtualizzazione(Virtual Machine Monitor)
SO Guest Windows
CPU Disco
Mem Rete
Applicazione
SO GuestLinux
CPU Disco
Mem Rete
Sistema OperativoHost
Architettura HW Host
CPU memoria
discorete
Macchinavirtuale
Guest HW
21
Applicazioni della virtualizzazione• Isolamento
– Separazione completa di due macchine virtuali
• Consolidamento:– Riduzione al minimo dell'architettura HW
• Test e sviluppo (Sandboxing):– Sviluppo/test di applicazioni su diversi SO– Sviluppo/test di applicazioni in ambienti ristretti
• Dynamic Load Balancing:– Bilanciamento del carico fra più SO
• Disaster Recovery:– Migrazione e ripristino di macchine virtuali in
seguito ad interruzioni di servizio
22
Applicazioni della virtualizzazioneConsolidamento
Test e sviluppo
HW
App2App1
OS
HW1 HW2
App2App1
OS1 OS2
VMM
HW
App2App1
OS1 OS2
VMM
HW1
App
HW2
VMM
OS
VMM
HW1
App
HW2
VMM
OS
VMM
HW
AppApp
OS1 OS2
VMM
HW
App1 App2
OS OS
Disaster recovery
Isolamento
23
Tassonomie• Grado di emulazione dell'hardware
– Emulazione completa– Emulazione parziale
♦Virtualizzazione completa♦Virtualizzazione assistita dall'HW♦Paravirtualizzazione
• Livello a cui viene effettuata la virtualizzazione:– Sistema Operativo– Applicazione– Risorse
• Virtualizzazione nativa e non nativa
24
Emulazione completa• Permette di emulare tutti gli aspetti di un
calcolatore– Tutto l'hardware– Il Sistema Operativo– Le applicazioni
• Permette di eseguire un SO Guest non modificato su una architettura Host completamente diversa
• Esempi:– Bochs, VirtualPC, QEMU (senza accelerazione)
25
Emulazione completa
Sistema OperativoHost
Architettura HW Host
CPU memoria
discorete
VMM
Hardware(tutto)
Guest OS
Applicazioni
26
Virtualizzazione completa• Il VMM emula l'hardware necessario da
permettere l'esecuzione isolata di un SO Guest non modificato
• Il SO Guest deve essere progettato per la stessa CPU del SO Host
• Esempi:– VirtualBox, Virtual PC, Vmware, QEMU (con
accelerazione), Win4Lin, Xen, User Mode Linux
27
Virtualizzazione completa
Sistema OperativoHost
Architettura HW Host
CPU memoria
discorete
VMM
Hardwareche serve
Guest OS
Applicazioni
28
Virtualizzazione assistita dall'HW• Il VMM permette l'esecuzione isolata di un SO
Guest non modificato• Il VMM mette a disposizione dei SO Guest
hardware vero tramite alcune estensioni hw del processore– Intel Virtualization Technology (VT-x, VT-d, VT-i)– AMD Virtualization (AMD-V)
• Il SO Guest deve essere progettato per la stessa CPU del SO Host
• Esempi:– Vmware Fusion, VirtualBox, Xen, KVM/QEMU,
Parallels
29
Virtualizzazione assistita dall'HW
Sistema OperativoHost
Architettura HW Host
CPU memoria
discorete
VMM
Mappaturain hw vero
Guest OS
Applicazioni
30
Paravirtualizzazione• Il VMM non emula necessariamente
dell'hardware• Il VMM mette a disposizione una API per
“estendere” il SO Guest• L'estensione consiste nella implementazione di
hypercall– Versione virtualizzata delle chiamate di sistema– Invocano i servizi del VMM– Invocate tramite eccezioni
• Esempi:– Xen, KVM/QEMU, Win4Lin 9x
31
Paravirtualizzazione
System callSistema Operativo
Host
Architettura HW Host
CPU memoria
discorete
VMM
Hypercall
Guest OS
Applicazioni
32
Virtualizzazione a livello di SO• Il VMM ha il compito di partizionare le risorse
del SO Host fra I vari SO Guest• Le risorse sono partizionate in contenitori
– Un contenitore per macchina virtuale– Gruppi di processi, file, partizioni
• Approccio molto più snello delle varie emulazioni
• È possibile eseguire solamente SO Guest con kernel identico a quello Host
• Esempi:– Comando chroot, Linux-VServer, Parallels
Virtuozzo Containers, Xen, KVM/QEMU,Win4Lin 9x
33
Virtualizzazione a livello di SO
System callSistema Operativo
Host
Architettura HW Host
CPU memoria
discorete
VMM
Applicazione
Assegnazioneporzione hw
Contenitore
34
Virtualizzazione a livellodi applicazione
• Meccanismo per eseguire programmi in maniera portabile su diverse architetture hardware/software
• Componenti:– Definizione di un linguaggio portabile– Compilatore per la traduzione del codice
sorgente in una rappresentazione indipendente dall'architettura (bytecode)
– Interprete del bytecode risultante– Ambiente di esecuzione (runtime environment)
che traduce il bytecode nelle operazioni di basso livello del SO Host
• Esempi: Java, .NET, Perl, Python, Ruby,...
35
Virtualizzazione a livellodi applicazione
System callSistema Operativo
Host
Architettura HW Host
CPU memoria
discorete
VMM
Applicazione
Runtimeenvironment
Interprete
Compilatoresorgente
36
Virtualizzazione nativa e non nativa• Se un sistema di virtualizzazione prevede
l'utilizzo esplicito di un SO Host e di un SO Guest, si parla di virtualizzazione non nativa– Lenta, Guest ed Host possono essere “diversi”
• Esempi:– Sistemi ad emulazione completa o parziale
• Se un sistema di virtualizzazione prevede l'utilizzo esplicito di un unico SO, si parla di virtualizzazione nativa– Veloce, Guest ed Host devono essere “uguali”
• Esempi:– Chroot, Parallels, OpenVz, virtualizzazione a
livello di applicazione
37
Condizioni di Popek e Goldberg• Come posso capire se una architettura hw sia
in grado di supportare la virtualizzazione in maniera efficiente?
• Problema studiato da Popek e Goldberg (1974)• Si parte da requisiti di efficienza e si
determinano condizioni sufficienti sull'architettura hw
• Approccio valido ancora oggi
38
Condizioni di Popek e Goldberg• Un Virtual Machine Monitor deve soddisfare tre
proprietà• Equivalenza: il comportamento esibito dal SO
Guest deve essere del tutto equivalente a quello del SO Host
• Controllo risorse: il VMM deve avere completo controllo di tutte le risorse HW/SW del nodo Host
• Efficienza: una percentuale significativa delle istruzioni Guest devono essere eseguite senza intervento del VMM
39
Condizioni di Popek e Goldberg• Viene fornita una classificazione delle
istruzioni macchina di un calcolatore• Istruzioni privilegiate:
– scatenano una eccezione se eseguite in user mode
– Non scatenano una eccezione se eseguite in kernel mode
• Istruzioni sensibili al controllo:– provano a modificare la configurazione delle
risorse del sistema
• Istruzioni sensibili al comportamento:– Il loro risultato dipende dalla configurazione
delle risorse del sistema
40
Condizioni di Popek e Goldberg• Teorema 1: si ha UN VMM efficiente se
l'insieme delle istruzioni sensibili è un sottoinsieme delle istruzioni privilegiate
• Detta in altre parole: il VMM è efficiente se– tutte le istruzioni che ne possono alterare il
funzionamento sono eseguite in modalità privilegiata, tramite una eccezione (controllo risorse)
– tutte le istruzioni non privilegiate sono eseguite in modalità nativa (efficienza)
• In realtà, il primo teorema di Popek e Goldberg è una condizione necessaria e sufficiente (se e solo se)
41
Condizioni di Popek e Goldberg• Teorema 2: un calcolatore è ricorsivamente
virtualizzabile in maniera efficiente se– è virtualizzabile in maniera efficiente– può esserci eseguito un VMM senza dipendenze
temporali
• Il Teorema 2 ci dice quando una architettura hw può eseguire VMM “a scatole cinesi”– Un VMM esegue un VMM, che esegue un VMM
42
Approccio “Trap and emulate”• Gli studi di Popek e Goldberg sembrano
suggerire una architettura di tipo “Trap and emulate” per l'implementazione di VMM
• Il VMM viene eseguito in modalità privilegiata• Tutte le istruzioni (privilegiate e non) eseguite
dalle CPU virtuali vengono eseguite sulla CPU fisica in modalità non privilegiata
• Quando la CPU virtuale prova ad eseguire una istruzione privilegiata, scatena una eccezione
• L'eccezione viene gestita dal VMM che emula gli effetti della istruzione privilegiata sulla CPU virtuale
43
Approccio “Trap and emulate”
CPUvirtuale
CPU reale
SO Host
Virtual Machine Monitor
Gestoreeccezioni
Istruzioni nonprivilegiate
Istruzioniprivilegiate
Eccezione
Memoria dellamacchina virtuale
I/O, memoria fisica
44
Popek, Goldberg ed x86• Proviamo ad applicare quanto detto
all'architettura x86• Istruzioni privilegiate:
– scatenano una eccezione se eseguite in ring > 0– LIDT (Load Interrupt Descriptor Table)
• Istruzioni sensibili:– Impostano/Dipendono dallo stato del sistema
(ad es., livello di privilegio attuale)– POPF (mette in EFLAGS il valore in cima allo
stack)– In ring 0, avviene una copia fedele– In ring 3, il bit “Interrupt Enable” non viene
sovrascritto (per non impedire ricezione IRQ)
45
Popek, Goldberg ed x86• Il teorema di Popek e Goldberg ci dice che
l'x86 è virtualizzabile efficientemente se tutte le istruzioni sensibili sono eseguibili esclusivamente in ring 0
• Rispondiamo alle seguenti domande:– popf è sensibile? SI– popf è eseguita solo in ring 0? NO
• Un VMM che esegue popf, non potrà mai impostare l'interrupt enable di EFLAGS– Non sarà mai equivalente ad x86 vero– Non scatena eccezioni; come eseguo il VMM?
• Non vale il teorema di Popek e Goldberg– Esecuzione di popf tramite VMM problematica
46
Popek, Goldberg ed x86• Se non vale il teorema di Popek e Goldberg, è
tutto perduto? Non posso creare VMM su x86?• Certo che posso creare VMM su x86!• Il VMM non potrà eseguire a livello applicativo
le istruzioni critiche, ma dovrà emularle, operando in ring 0– Binary scanner: ispeziona a runtime il codice
binario del Guest OS/application ed inserisce le eccezioni in punti strategici
– Dispatcher: viene invocato dalle eccezioni– Allocator: alloca risorse macchina per
l'emulazione– Interpreter: esegue l'istruzione privilegiata
47
Popek, Goldberg ed x86• Le istruzioni sensibili non privilegiate sono
ben 17, nell'architettura Intel x86 di base• Sensitive register instructions:
leggono/modificano registri sensibili, clock registers, interrupt registers– SGDT, SIDT, SLDT, SMSW, POPF, PUSHF
• Protection system instructions: sfruttano modalità di indirizzamento protetto della memoria– LAR, LSL, VERR, VERW, POP, PUSH, CALL,
JMP, INT n, RET, STR, MOV
• Tutte queste istruzioni vanno emulate tramite eccezioni inserite opportunamente :-(
48
Supporto INTEL alla virtualizzazione• Insieme di modifiche architetturali
sull'architettura x86 a 32/64 bit• Obiettivi:
– rimuovere i vincoli dovute alla non verifica delle condizioni di Popek e Goldberg
– sostituire l'emulazione con l'accesso controllato tramite hw
• Estensioni:– VT-x, VT-i: gestione efficiente livelli privilegio,
rimozione limiti Popek Goldberg– VT-d: accesso diretto all'I/O tramite hw– VT-c: accesso diretto alle schede di rete tramite
hw
49
Estensione VT-x• Una premessa importante: alcuni sistemi di
virtualizzazione (Xen) su architetture Intel “normali” eseguono il Guest OS in ring 1, e non in ring 0– Ring deprivileging
• Vantaggi:– Impossibilità di far eseguire codice privilegiato
al Guest OS
• Svantaggi– Lentezza delle operazioni
50
Estensione VT-x• Invenzione di un nuovo ring: VMX Root (detto
anche ring -1)– Dedicato unicamente all'esecuzione del VMM– Il Guest kernel esegue in ring 0
• Due modalità di esecuzione:– VMX root: esegue il VMM (ring -1)– VMX non root: x86 classica (ring 0-3)
• Due nuove transizioni di privilegio– VM entry: VMX root->VMX non root– VM exit: VMX non root->VMX root
• Nella modalità VMX non root, parecchie istruzioni causano VM exit
51
Estensione VT-x
Sistema OperativoHost
Architettura HW Host
CPU memoria
discorete
VMM
Hardware
Guest OS
Applicazioni
Senza VT-x Con VT-x
Ring 3
Ring 1
Ring 0Sistema Operativo
Host
Architettura HW Host
CPU memoria
discorete
VMM
Hardware
Guest OS
ApplicazioniRing 3
Ring 1
Ring 0Sistema Operativo
Host
Architettura HW Host
CPU memoria
discorete
VMM
Hardware
Guest OS
ApplicazioniRing 3
Ring 0
Ring 0
Ring -1
52
Estensione VT-x• Introduzione di una nuova struttura dati: VMCS
(Virtual Machine Control Structure)• Contiene informazioni sui SO Guest e Host• Semplifica le transizioni VM Entry e VM Exit
– VM Entry: lo stato del processore è letto da una host state area
– VM Exit: lo stato del processore è scritto in una guest state area
• Operazioni di gestione transizioni– VMXON: Abilitazione modalità VMX ROOT– VMLAUNCH: Interazione iniziale VM Entry– VMRESUME: Interazioni successive VM Entry– VMEXIT: Interazione VM Exit
53
Estensione VT-x• Tra le tante istruzioni che scatenano un VM
Exit, ci sono quelle sensibili• Consideriamo la VM Exit alla stregua di una
eccezione che invoca il VMM• Torna a valere il teorema di Popek e Goldberg• La virtualizzazione su x86 può essere di nuovo
operata in modalità efficiente
54
Estensione VT-x
IA-32Operation
Ring 0
Ring 3
55
Estensione VT-x
Ring 0
Ring 3
VMXON
VMX RootOperation
56
Estensione VT-x
Ring 0
Ring 3
VMLAUNCH
VMX RootOperation
VMX Non-rootOperation Ring 0
Ring 3
VM 1
VM Enter
57
Estensione VT-x
Ring 0
Ring 3VMX RootOperation
VMX Non-rootOperation Ring 0
Ring 3
VM 1
VM Exit
58
Estensione VT-x
Ring 0
Ring 3VMX RootOperation
VMX Non-rootOperation Ring 0
Ring 3
VM 1
VM Enter
VMRESUME
59
Estensione VT-x
Ring 0
Ring 3VMX RootOperation
VMX Non-rootOperation Ring 0
Ring 3
VM 1
VM Enter
VMLAUNCH
. . .
Ring 0
Ring 3
VM 2
Ring 0
Ring 3
VM n
60
Estensione VT-x
Ring 0
Ring 3VMX RootOperation
VMX Non-rootOperation Ring 0
Ring 3
VM 1
VM Enter
VMLAUNCH
. . .
Ring 0
Ring 3
VM 2
Ring 0
Ring 3
VM n
VMCS1
VMCS2
VMCSn
61
Estensione VT-d• Serie di modifiche ai chipset Intel per accedere
direttamente alle periferiche in modalità– isolata– efficiente
• Tre funzionalità:– Extended Page Tables: ciascun Guest OS ha la
sua tabella delle pagine– DMA remapping: ciascuna VM può dedicare
un'area di memoria per le operazioni DMA delle periferiche
– Interrupt Virtualization: ciascuna VM riceve le proprie interruzioni
62
Estensione VT-d• Il VMM deve proteggere la memoria fisica
dall'accesso delle macchine virtuali– Più VM condividono la stessa memoria fisica– Una shadow page table per ciascuna VM– Si chiama “shadow” perché non è mai
direttamente puntata dal registro CR3– Porzioni di shadow page table vengono copiate
sulla e dalla tabella delle pagine vera
• L'aggiornamento tabella pagine e shadow page table richiede l'istruzione mov CR3,...– Va emulata dal VMM-> richiede VM Exit– lentissima
63
Estensione VT-d
CPU CPU
DRAM
South Bridge
System Bus
PCI Express
PCI, LPC, Legacy devices, …
IntegratedDevices
North Bridge
VT-dPCIe* Root Ports
64
Estensione VT-d• Viene fornita una nuova struttura dati:
Extended Page Table (EPT)• Struttura simile alla tabella delle pagine,
controllata direttamente dal VMM– Definisce mappa fra indirizzi fisici Host e Guest– EPT base pointer (non in CR3, bensì in un
campo della VMCS) punta all'inizio della EPT– EPT è attivata in seguito ad una VM Entry– EPT è disattivata in seguito ad una VM Exit
• Il SO Guest ha pieno controllo sulle sue tabelle delle pagine– Il Guest è in grado di fare la mov C3,... sulla EPT– Non si richiede più una VM Exit per mov C3,...
65
Estensione VT-dExtended Page Table
Tabellapagine
Guest OS
Tabellapagineestesa
Indirizzo fisicoHost
Base Pointer EPT
Indirizzo fisicoGuest
CR3
Indirizzo lineareGuest
66
Estensione VT-dExtended Page Table: schema dettagliato
Pagedirectory
Indirizzo fisicoiniziale dellapagina - Guest
CR3Indirizzolineare Guest
Indirizzofisico Host
+
EPT+EPT
Pagetable
+
Indirizzo fisicoiniziale dellapagina - Guest
EPT
67
Estensione VT-d: DMA remapping• Il VMM può assegnare uno o più dispositivi di
I/O fisici ad un'area di memoria dedicata al DMA della macchina virtuale (protection domain)
• L'accesso al protection domain viene garantito solo ai dispositivi registrati, in modo tale da garantire isolamento
• Obiettivo: tradurre gli indirizzi lineari DMA del Guest in indirizzi fisici dell'Host
• Device assignment structure: tabella che mappa il dispositivo di I/O al protection domain
• Address translation structure: page table a 3 livelli
Device Assignment Structures
Address Translation Structures
Device D1
Device D2
Address Translation Structures
68
Estensione VT-d
DMA Requests
Device ID Virtual Address Length
DMA RemappingEngine
Translation Cache
Context Cache
Fault Generation
…Bus 255
Bus 0
Bus N
Dev 31, Func 7
Dev P, Func 1
Dev 0, Func 0
Dev P, Func 2
PageFrame
4KB Page Tables
DMA remapping: schema dettagliato
Accesso alla memoriacon l'indirizzo fisico Host
Strutture di traduzione
69
Estensione VT-d: DMA remapping
000000b000000bBusBus DeviceDevice FuncFunc
00223377881515
Requestor IDRequestor ID
DeviceDeviceAssignmentAssignment
TablesTables
BaseBase
Level-4 Level-4 Page Page TableTable
Level-3 Level-3 Page Page TableTable Level-2 Level-2
Page Page TableTable Level-1 Level-1
Page Page TableTable
PagePage
Example Device Assignment Example Device Assignment Table Entry specifying 4-level Table Entry specifying 4-level page tablepage table
5656
DMA Virtual AddressDMA Virtual Address
001111
Level-4 Level-4 table offsettable offset
Level-3 Level-3 table offset table offset
Level-2 Level-2 table offset table offset
Level-1 Level-1 table offset table offset
12122020212129293030383839394747
000000000b000000000b
6363 48485757
Page OffsetPage Offset
DMA remapping: schema dettagliato
70
Estensione VT-d: DMA remapping• VT-d mette a disposizione un meccanismo per
effettuare il caching delle strutture dati coinvolte– Context cache: per le device assignment
structures più frequenti– IOTLB: traduzioni più frequenti (risultato del
lookup)– Non-leaf cache: per le page directory più
frequenti
71
Estensioni VT: chi le usa?• Tutti i VMM che fanno virtualizzazione assistita
dall'hardware– Vmware Fusion, VirtualBox, Xen, KVM/QEMU,
Parallels
• Xen– Senza estensioni VT, richiede la modifica del
SO Guest per poter effettuare hypercall in ring 1 (paravirtualizzazione)
– Con estensioni VT, il VMM ha tutti gli strumenti hw per creare MV completamente virtualizzate
♦Ciascuna MV ha le sue strutture di gestione memoria mappate in hw
♦Ciascuna MV può operare in ring 0♦Non serve più modificare il guest OS
72
JAVA• Sun Microsystems, 1995• Linguaggio orientato agli oggetti• Implementazione di una macchina virtuale
(Java Virtual Machine, JVM)• Specifica di classi con il costrutto class
– una classe contiene il metodo main
• Il compilatore produce, per ciascuna classe, un file .class, contenente il bytecode
• bytecode: “linguaggio macchina” della JVM– viene eseguito dalla JVM– architecture-independent
73
JAVAStruttura della JVM
file *.class
caricatore delle classi
verificatore delle classi
interprete
calcolatore
74
JAVAStruttura della JVM
file *.class
caricatore delle classi
verificatore delle classi
interprete
calcolatore
JVM
75
JAVAStruttura della JVM
file *.class
caricatore delle classi
verificatore delle classi
interprete
calcolatore
SO Host
76
JAVA• Caricatore delle classi: si preoccupa di
caricare in memoria– il file *.class del programma– i file della libreria JAVA (*.jar)
• Verificatore delle classi: effettua operazioni di controllo, quali– correttezza sintattica del bytecode– accesso entro i limiti legali dello stack JVM– divieto di aritmetica sui puntatori
77
JAVA• Interprete: esegue il bytecode
– garbage collection automatica
• L'interprete può essere:– vero interprete, byte per byte– Just In Time Compiler (JIT)
♦compila il bytecode nel linguaggio macchina reale della macchina
– esecuzione indipendente dall'architettura
78
QEMU• Software di emulazione completa di
architetture hardware• Scritto da Fabrice Bellard (2005)
– http://bellard.org/qemu/
• Licenza del software:– Nucleo: LGPL– Alcuni driver: BSD
• Opera una binary translation: sequenze di istruzioni macchina Guest sono tradotte in sequenza di istruzioni macchina Host– un blocco di codice alla volta– caching delle traduzioni– Bytecode intermedio: Tiny Code Generator
79
QEMU: modalità di funzionamento• User mode emulation
– QEMU esegue un processo Linux (compilato su una data CPU) su un'altra CPU
• Complete Computer System mode emulation– Supporta le architetture x86, AMD64, Alpha,
ETRAX CRIS, MIPS, SPARC– Supporta i SO Linux, Solaris, Microsoft
Windows, DOS, BSD– L'emulazione x86 supporta diverse periferiche
molto comuni
80
QEMU: gestione immagini• I filesystem delle MV sono mappati su file
immagine• Le immagini sono sparse
– Si può dichiarare una grandezza iniziale arbitraria
– La dimensione attuale rispecchia l'uso
• Le immagini usano il formato Copy-On-Write– Si può mantenere uno snapshot del sistema
(stato iniziale)– Tutte le differenze sono scritte in un file
immagine a parte– Se il sistema si rompe, si fa il rollback dello
snapshot
81
KQEMU: accelerazione• Modulo del kernel che “accelera” l'esecuzione
di QEMU– Il codice che gira in user mode viene eseguito
direttamente dalla CPU Host– Il codice che gira in kernel mode viene emulato
82
QEMU: the Free OS Zoo• Home page del progetto:
– http://www.oszoo.org/wiki/index.php/Main_Page
• Immagini di filesystem per QEMU• SO free:
– http://www.oszoo.org/wiki/index.php/Category:OS_images
83
QEMU: pacchetti• I seguenti pacchetti sono richiesti (Debian):
– qemu: l'emulatore QEMU
• I seguenti pacchetti sono opzionali (Debian):– kqemu-source: codice sorgente del modulo di
accelerazione kqemu– kqemu-modules-x.y.z: binario del modulo di
accelerazione kqemu per la versione x.y.z del kernel
– qemu-launcher: GUI di gestione MV (alla Vmware)
84
QEMU: alcuni comandi• Creazione di una immagine:
– qemu-img create -f qcow2 c.img 3G
• Installazione di un SO da CDROM– qemu -cdrom /dev/cdrom -hda c.img -m 256
-boot d
• Installazione di un SO da immagine ISO– qemu -cdrom my_os_install.iso -hda c.img -m
256 -boot d
• Esecuzione della MV:– qemu -hda c.img -m 256
• Caricamento del modulo di accelerazione– modprobe kqemu