sistemi operativi: struttura avanzata - lezione 05

84
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'?

Upload: majong-devjfu

Post on 05-Dec-2014

1.620 views

Category:

Technology


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: 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'?

Page 2: Sistemi Operativi: Struttura avanzata - Lezione 05

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

Page 3: Sistemi Operativi: Struttura avanzata - Lezione 05

3

Architetture – anni '90

Fileserver

Webserver

Fileserver

Webserver

Domainserver

DNSserver

Appserver

Fileserver

Ciascun serveresegue 1 applicazione

Page 4: Sistemi Operativi: Struttura avanzata - Lezione 05

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

Page 5: Sistemi Operativi: Struttura avanzata - Lezione 05

5

Architetture – 2000

Armadio Rack vuoto

Dell PowerEdge 1950 Rack Unit (1U)

Armadio Rack pieno

Page 6: Sistemi Operativi: Struttura avanzata - Lezione 05

6

Architetture – 2000

IBM HS20 Blade Server Unit

HP BladeSystem c700016 blade servers

2 UPS da 3U

Page 7: Sistemi Operativi: Struttura avanzata - Lezione 05

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

Page 8: Sistemi Operativi: Struttura avanzata - Lezione 05

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

Page 9: Sistemi Operativi: Struttura avanzata - Lezione 05

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

Page 10: Sistemi Operativi: Struttura avanzata - Lezione 05

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

Page 11: Sistemi Operativi: Struttura avanzata - Lezione 05

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

Page 12: Sistemi Operativi: Struttura avanzata - Lezione 05

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

Page 13: Sistemi Operativi: Struttura avanzata - Lezione 05

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

Page 14: Sistemi Operativi: Struttura avanzata - Lezione 05

14

IBM System/360

Page 15: Sistemi Operativi: Struttura avanzata - Lezione 05

15

CMS

Page 16: Sistemi Operativi: Struttura avanzata - Lezione 05

16

VM/360: architettura

Processi Processi Processi

Kernel Kernel Kernel

VM1

VM2

VM3

Implementazione macchina virtuale

Hardware

Applicazioni

CMS

CP-40

System 360

Page 17: Sistemi Operativi: Struttura avanzata - Lezione 05

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

Page 18: Sistemi Operativi: Struttura avanzata - Lezione 05

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

Page 19: Sistemi Operativi: Struttura avanzata - Lezione 05

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

Page 20: Sistemi Operativi: Struttura avanzata - Lezione 05

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

Page 21: Sistemi Operativi: Struttura avanzata - Lezione 05

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

Page 22: Sistemi Operativi: Struttura avanzata - Lezione 05

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

Page 23: Sistemi Operativi: Struttura avanzata - Lezione 05

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

Page 24: Sistemi Operativi: Struttura avanzata - Lezione 05

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)

Page 25: Sistemi Operativi: Struttura avanzata - Lezione 05

25

Emulazione completa

Sistema OperativoHost

Architettura HW Host

CPU memoria

discorete

VMM

Hardware(tutto)

Guest OS

Applicazioni

Page 26: Sistemi Operativi: Struttura avanzata - Lezione 05

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

Page 27: Sistemi Operativi: Struttura avanzata - Lezione 05

27

Virtualizzazione completa

Sistema OperativoHost

Architettura HW Host

CPU memoria

discorete

VMM

Hardwareche serve

Guest OS

Applicazioni

Page 28: Sistemi Operativi: Struttura avanzata - Lezione 05

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

Page 29: Sistemi Operativi: Struttura avanzata - Lezione 05

29

Virtualizzazione assistita dall'HW

Sistema OperativoHost

Architettura HW Host

CPU memoria

discorete

VMM

Mappaturain hw vero

Guest OS

Applicazioni

Page 30: Sistemi Operativi: Struttura avanzata - Lezione 05

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

Page 31: Sistemi Operativi: Struttura avanzata - Lezione 05

31

Paravirtualizzazione

System callSistema Operativo

Host

Architettura HW Host

CPU memoria

discorete

VMM

Hypercall

Guest OS

Applicazioni

Page 32: Sistemi Operativi: Struttura avanzata - Lezione 05

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

Page 33: Sistemi Operativi: Struttura avanzata - Lezione 05

33

Virtualizzazione a livello di SO

System callSistema Operativo

Host

Architettura HW Host

CPU memoria

discorete

VMM

Applicazione

Assegnazioneporzione hw

Contenitore

Page 34: Sistemi Operativi: Struttura avanzata - Lezione 05

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,...

Page 35: Sistemi Operativi: Struttura avanzata - Lezione 05

35

Virtualizzazione a livellodi applicazione

System callSistema Operativo

Host

Architettura HW Host

CPU memoria

discorete

VMM

Applicazione

Runtimeenvironment

Interprete

Compilatoresorgente

Page 36: Sistemi Operativi: Struttura avanzata - Lezione 05

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

Page 37: Sistemi Operativi: Struttura avanzata - Lezione 05

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

Page 38: Sistemi Operativi: Struttura avanzata - Lezione 05

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

Page 39: Sistemi Operativi: Struttura avanzata - Lezione 05

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

Page 40: Sistemi Operativi: Struttura avanzata - Lezione 05

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)

Page 41: Sistemi Operativi: Struttura avanzata - Lezione 05

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

Page 42: Sistemi Operativi: Struttura avanzata - Lezione 05

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

Page 43: Sistemi Operativi: Struttura avanzata - Lezione 05

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

Page 44: Sistemi Operativi: Struttura avanzata - Lezione 05

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)

Page 45: Sistemi Operativi: Struttura avanzata - Lezione 05

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

Page 46: Sistemi Operativi: Struttura avanzata - Lezione 05

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

Page 47: Sistemi Operativi: Struttura avanzata - Lezione 05

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 :-(

Page 48: Sistemi Operativi: Struttura avanzata - Lezione 05

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

Page 49: Sistemi Operativi: Struttura avanzata - Lezione 05

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

Page 50: Sistemi Operativi: Struttura avanzata - Lezione 05

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

Page 51: Sistemi Operativi: Struttura avanzata - Lezione 05

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

Page 52: Sistemi Operativi: Struttura avanzata - Lezione 05

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

Page 53: Sistemi Operativi: Struttura avanzata - Lezione 05

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

Page 54: Sistemi Operativi: Struttura avanzata - Lezione 05

54

Estensione VT-x

IA-32Operation

Ring 0

Ring 3

Page 55: Sistemi Operativi: Struttura avanzata - Lezione 05

55

Estensione VT-x

Ring 0

Ring 3

VMXON

VMX RootOperation

Page 56: Sistemi Operativi: Struttura avanzata - Lezione 05

56

Estensione VT-x

Ring 0

Ring 3

VMLAUNCH

VMX RootOperation

VMX Non-rootOperation Ring 0

Ring 3

VM 1

VM Enter

Page 57: Sistemi Operativi: Struttura avanzata - Lezione 05

57

Estensione VT-x

Ring 0

Ring 3VMX RootOperation

VMX Non-rootOperation Ring 0

Ring 3

VM 1

VM Exit

Page 58: Sistemi Operativi: Struttura avanzata - Lezione 05

58

Estensione VT-x

Ring 0

Ring 3VMX RootOperation

VMX Non-rootOperation Ring 0

Ring 3

VM 1

VM Enter

VMRESUME

Page 59: Sistemi Operativi: Struttura avanzata - Lezione 05

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

Page 60: Sistemi Operativi: Struttura avanzata - Lezione 05

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

Page 61: Sistemi Operativi: Struttura avanzata - Lezione 05

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

Page 62: Sistemi Operativi: Struttura avanzata - Lezione 05

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

Page 63: Sistemi Operativi: Struttura avanzata - Lezione 05

63

Estensione VT-d

CPU CPU

DRAM

South Bridge

System Bus

PCI Express

PCI, LPC, Legacy devices, …

IntegratedDevices

North Bridge

VT-dPCIe* Root Ports

Page 64: Sistemi Operativi: Struttura avanzata - Lezione 05

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,...

Page 65: Sistemi Operativi: Struttura avanzata - Lezione 05

65

Estensione VT-dExtended Page Table

Tabellapagine

Guest OS

Tabellapagineestesa

Indirizzo fisicoHost

Base Pointer EPT

Indirizzo fisicoGuest

CR3

Indirizzo lineareGuest

Page 66: Sistemi Operativi: Struttura avanzata - Lezione 05

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

Page 67: Sistemi Operativi: Struttura avanzata - Lezione 05

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

Page 68: Sistemi Operativi: Struttura avanzata - Lezione 05

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

Page 69: Sistemi Operativi: Struttura avanzata - Lezione 05

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

Page 70: Sistemi Operativi: Struttura avanzata - Lezione 05

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

Page 71: Sistemi Operativi: Struttura avanzata - Lezione 05

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

Page 72: Sistemi Operativi: Struttura avanzata - Lezione 05

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

Page 73: Sistemi Operativi: Struttura avanzata - Lezione 05

73

JAVAStruttura della JVM

file *.class

caricatore delle classi

verificatore delle classi

interprete

calcolatore

Page 74: Sistemi Operativi: Struttura avanzata - Lezione 05

74

JAVAStruttura della JVM

file *.class

caricatore delle classi

verificatore delle classi

interprete

calcolatore

JVM

Page 75: Sistemi Operativi: Struttura avanzata - Lezione 05

75

JAVAStruttura della JVM

file *.class

caricatore delle classi

verificatore delle classi

interprete

calcolatore

SO Host

Page 76: Sistemi Operativi: Struttura avanzata - Lezione 05

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

Page 77: Sistemi Operativi: Struttura avanzata - Lezione 05

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

Page 78: Sistemi Operativi: Struttura avanzata - Lezione 05

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

Page 79: Sistemi Operativi: Struttura avanzata - Lezione 05

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

Page 80: Sistemi Operativi: Struttura avanzata - Lezione 05

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

Page 81: Sistemi Operativi: Struttura avanzata - Lezione 05

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

Page 82: Sistemi Operativi: Struttura avanzata - Lezione 05

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

Page 83: Sistemi Operativi: Struttura avanzata - Lezione 05

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)

Page 84: Sistemi Operativi: Struttura avanzata - Lezione 05

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