SlideShare a Scribd company logo
1 of 84
Download to read offline
Introduzione
• Negli ultimi anni, è esplosa la moda degli
  strumenti di virtualizzazione
  –   Xen, KVM
  –   Vmware, VirtualBox
  –   User Mode Linux
  –   Qemu, Bochs
• Interesse:
  – privato
  – industriale
• PERCHE'?


                                               1
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




                                                     2
Architetture – anni '90




 File   Web          File   Web     Domain
server server       server server    server
                     DNS    App       File
                    server server   server

                                                 Ciascun server
                                              esegue 1 applicazione




                                                                      3
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
                                                        4
Architetture – 2000

                 Dell PowerEdge 1950 Rack Unit (1U)




                       Armadio Rack pieno
Armadio Rack vuoto
                                                      5
Architetture – 2000




IBM HS20 Blade Server Unit

                             HP BladeSystem c7000
                                16 blade servers
                                  2 UPS da 3U


                                                    6
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




                                                   7
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
                                                       8
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
                                        File     Print    DNS     Domain
                         App servers   server   server
           DB servers                                    server   server

Sistemi
virtuali




                          Sistema
                           fisico
                                                                           9
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
                                                      10
Architettura tradizionale
• Singolo SO per nodo                Applicazione
  fisico
• Singola applicazione
                          Processo   Processo       Processo
  per nodo fisico
• Componenti HW
                                Sistema Operativo
  connessi direttamente
  al SO
                                 Architettura HW

                                CPU         memoria

                                rete          disco




                                                               11
Architettura virtualizzata
• Aggiunta di un livello di              Applicazione    Applicazione
  virtualizzazione, detto
  Virtual Machine Monitor                SO Windows       SO Linux

                             Macchine
• Diversi SO possono                      CPU Disco      CPU Disco
                              virtuali
  essere instanziati sotto               Mem    Rete     Mem     Rete

  forma di macchine                      Livello di virtualizzazione
  virtuali                               (Virtual Machine Monitor)

• Ciascuna macchina
  virtuale è isolata                        Sistema Operativo

• Possono essere eseguiti
  più SO simultaneamente                       Architettura HW
• Se una macchina
                                             CPU        memoria
  virtuale si rovina, le altre
  non sono affette                           rete        disco
                                                                        12
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




                                                          13
IBM System/360




                 14
CMS




      15
VM/360: architettura

Applicazioni      Processi Processi Processi


CMS                Kernel     Kernel      Kernel

                    VM1         VM2        VM3

CP-40             Implementazione macchina virtuale


System 360                   Hardware



                                                      16
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


                                                      17
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




                                                      18
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                              19
Un pò di terminologia
            Applicazione    Applicazione

Macchina     SO Guest        SO Guest
 virtuale    Windows          Linux

             CPU Disco      CPU Disco
                                           Guest HW
            Mem    Rete     Mem     Rete


            Livello di virtualizzazione
            (Virtual Machine Monitor)

               Sistema Operativo
                     Host


              Architettura HW Host

                CPU        memoria

                rete        disco
                                                      20
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
                                                          21
Applicazioni della virtualizzazione
               Isolamento                          Consolidamento

                                                                    App1         App2
App1        App2        App1         App2   App1   App2


       OS               OS                  OS1                     OS1
                                     OS             OS2                          OS2

                               VMM                                         VMM
       HW                                   HW1    HW2
                               HW                                          HW


            Disaster recovery                      Test e sviluppo

                                                      App         App
App                                  App


OS                                   OS               OS1         OS2

VMM                     VMM
            VMM                      VMM                    VMM
HW1         HW2          HW1         HW2                    HW


                                                                                        22
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

                                                        23
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)



                                                   24
Emulazione completa
     VMM



           Applicazioni

              Guest OS
              Hardware
               (tutto)

       Sistema Operativo
             Host


      Architettura HW Host

       CPU        memoria

       rete         disco
                             25
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




                                                    26
Virtualizzazione completa
       VMM



             Applicazioni

                Guest OS
                Hardware
                che serve

         Sistema Operativo
               Host


        Architettura HW Host

         CPU         memoria

         rete         disco
                               27
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
                                                         28
Virtualizzazione assistita dall'HW
           VMM



                 Applicazioni

                    Guest OS
                 Mappatura
                 in hw vero

             Sistema Operativo
                   Host


            Architettura HW Host

             CPU        memoria

             rete         disco
                                     29
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

                                                       30
Paravirtualizzazione
    VMM



          Applicazioni

             Guest OS

             Hypercall

         System call
      Sistema Operativo
            Host

     Architettura HW Host

      CPU         memoria

      rete         disco
                            31
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                                      32
Virtualizzazione a livello di SO
          VMM

           Contenitore
                Applicazione

                Assegnazione
                 porzione hw


               System call
            Sistema Operativo
                  Host

           Architettura HW Host

            CPU       memoria

            rete         disco
                                   33
Virtualizzazione a livello
              di 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,...
                                                    34
Virtualizzazione a livello
                 di applicazione
                         VMM
sorgente
                               Applicazione
           Compilatore

                                  Interprete

                                 Runtime
                               environment


                              System call
                           Sistema Operativo
                                 Host

                          Architettura HW Host

                           CPU         memoria

                           rete          disco
                                                 35
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                          36
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




                                                  37
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


                                                    38
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
                                                     39
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)
                                                         40
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




                                                   41
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
                                                        42
Approccio “Trap and emulate”
                 Virtual Machine Monitor




                                                   Memoria della
                                 Gestore
                      CPU
                                                  macchina virtuale
                                eccezioni
                    virtuale
Istruzioni non
privilegiate


             Istruzioni
                            SO Host
             privilegiate


                                                  I/O, memoria fisica
                                      Eccezione
                            CPU reale



                                                                        43
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)     44
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         45
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
                                                       46
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 :-(
                                                  47
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
                                                          48
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



                                                        49
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
                                                 50
Estensione VT-x
   Senza VT-x                          Con VT-x
VMM                              VMM                     Ring -1



                        Ring 3                           Ring 3
      Applicazioni                     Applicazioni
                        Ring 1                           Ring 0
         Guest OS                         Guest OS
         Hardware                         Hardware

                        Ring 0                           Ring 0
  Sistema Operativo                Sistema Operativo
        Host                             Host


 Architettura HW Host             Architettura HW Host

  CPU        memoria               CPU        memoria

  rete                             rete
               disco                            disco
                                                                   51
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                       52
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




                                                   53
Estensione VT-x




IA-32               Ring 3
Operation
                    Ring 0


                              54
Estensione VT-x




VMX Root            Ring 3
Operation
            VMXON   Ring 0


                              55
Estensione VT-x

               VM 1
VMX
               Ring 3
Non-root
Operation      Ring 0


    VM Enter


VMX Root                  Ring 3
Operation
               VMLAUNCH   Ring 0


                                   56
Estensione VT-x

              VM 1
VMX
              Ring 3
Non-root
Operation     Ring 0


    VM Exit


VMX Root               Ring 3
Operation
                       Ring 0


                                 57
Estensione VT-x

               VM 1
VMX
               Ring 3
Non-root
Operation      Ring 0


    VM Enter


VMX Root                  Ring 3
Operation
               VMRESUME   Ring 0


                                   58
Estensione VT-x

               VM 1     VM 2              VM n
VMX
               Ring 3   Ring 3            Ring 3
                                    ...
Non-root
Operation      Ring 0   Ring 0            Ring 0


    VM Enter


VMX Root                   Ring 3
Operation
               VMLAUNCH    Ring 0


                                                   59
Estensione VT-x

               VM 1     VM 2               VM n
VMX
               Ring 3   Ring 3             Ring 3
                                     ...
Non-root
Operation      Ring 0   Ring 0             Ring 0


    VM Enter    VMCS      VMCS              VMCS
                  1         2                 n


VMX Root                    Ring 3
Operation
               VMLAUNCH     Ring 0


                                                    60
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

                                                      61
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
                                                    62
Estensione VT-d

             CPU              CPU

                          System Bus



              North Bridge

                                                DRAM
                     VT-d
Integrated          PCIe* Root Ports
Devices




                   PCI Express
                                       South
                                                PCI, LPC,
                                       Bridge   Legacy devices, …




                                                                    63
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,...        64
Estensione VT-d
Extended Page Table

     CR3                           Base Pointer EPT

                                                            Indirizzo fisico
                     Tabella                      Tabella   Host
                     pagine                       pagine
Indirizzo lineare              Indirizzo fisico
                    Guest OS                      estesa
Guest                          Guest




                                                                               65
Estensione VT-d
Extended Page Table: schema dettagliato
       Indirizzo                                                Indirizzo
 CR3   lineare Guest                                            fisico Host



        +
                   Page                             Page
                 directory                          table

       EPT
                                       EPT                          EPT
                             +                              +




                                                                  Indirizzo fisico
                                 Indirizzo fisico
                                                                  iniziale della
                                 iniziale della
                                                                  pagina - Guest
                                 pagina - Guest




                                                                                     66
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
                                                      67
Estensione VT-d
DMA remapping: schema dettagliato
              DMA Requests
                                                                Dev 31, Func 7
Device ID   Virtual Address             …
                               Length
                                                                Dev P, Func 2
                                                    Bus 255
                                                                                                         Page
                                                    Bus N                                               Frame

                                 Fault Generation    Bus 0
                                                                Dev P, Func 1
                                                                                         4KB Page
                                                                Dev 0, Func 0             Tables



                                                                                       Address Translation
  DMA Remapping                                                                            Structures
                                                                           Device D1
     Engine                                            Device
                                                     Assignment
                              Translation Cache       Structures
                                                                           Device D2

                                                                                       Address Translation
                                                                                           Structures
                               Context Cache



 Accesso alla memoria                                        Strutture di traduzione
con l'indirizzo fisico Host

                                                                                                                68
Estensione VT-d: DMA remapping
     DMA remapping: schema dettagliato
     Requestor ID                                                 DMA Virtual Address
15          87       32    0      63    57 56      48 47         39 38        30 29         21 20       12 11             0
                                                          Level-4 Level-3        Level-2      Level-1
                                   000000b 000000000b
     Bus         Device Func
                                                        table offset table offset table offset table offset Page Offset




     Base
                                                                                                                Page
                   Device
                 Assignment
                   Tables                                   Level-4
                                                                         Level-3
                                                             Page
                                                                          Page
                                                             Table                    Level-2
                                                                          Table
                                                                                       Page
                               Example Device Assignment                                            Level-1
                                                                                       Table
                               Table Entry specifying 4-level                                        Page
                               page table                                                            Table
                                                                                                                              69
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




                                                     70
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             71
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

                                                    72
JAVA
Struttura della JVM
                   file *.class



            caricatore delle classi

            verificatore delle classi

                   interprete



                  calcolatore

                                        73
JAVA
Struttura della JVM
                   file *.class

    JVM

            caricatore delle classi

            verificatore delle classi

                   interprete



                  calcolatore

                                        74
JAVA
Struttura della JVM
                    file *.class



             caricatore delle classi

             verificatore delle classi

                    interprete


   SO Host
                   calcolatore

                                         75
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



                                                    76
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




                                                     77
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   78
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



                                                    79
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
                                                      80
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




                                                      81
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




                                                    82
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)



                                                    83
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
                                                  84

More Related Content

What's hot

わかりやすい利益相反:臨床研究を成功させるために
わかりやすい利益相反:臨床研究を成功させるためにわかりやすい利益相反:臨床研究を成功させるために
わかりやすい利益相反:臨床研究を成功させるためにMasahiko Hara
 
كتابة التقارير الاحترافية
كتابة التقارير الاحترافيةكتابة التقارير الاحترافية
كتابة التقارير الاحترافيةAhmed sayed
 
الرقمنة داخل مؤسسات المعلومات أم خارجها
الرقمنة داخل مؤسسات المعلومات أم خارجهاالرقمنة داخل مؤسسات المعلومات أم خارجها
الرقمنة داخل مؤسسات المعلومات أم خارجهاDr. Ahmed Farag
 
الحوكمة في البنوك
الحوكمة في البنوكالحوكمة في البنوك
الحوكمة في البنوكMostafa Mahmoud
 
إعادة هندسة منظومات العملBusiness process re engineering
إعادة هندسة منظومات العملBusiness process re engineeringإعادة هندسة منظومات العملBusiness process re engineering
إعادة هندسة منظومات العملBusiness process re engineeringBeta-Research.org
 
مؤشرات الأداء اليوم_الأول-_الاخير
مؤشرات الأداء اليوم_الأول-_الاخيرمؤشرات الأداء اليوم_الأول-_الاخير
مؤشرات الأداء اليوم_الأول-_الاخيرfoz000
 
المسئولية الاجتماعية
المسئولية الاجتماعيةالمسئولية الاجتماعية
المسئولية الاجتماعيةMostafa Elmokadem
 
IAS 7 statement of cash flows
IAS 7 statement of cash flowsIAS 7 statement of cash flows
IAS 7 statement of cash flowsGrant Thornton
 

What's hot (12)

تقييم الرقابة الداخلية
تقييم الرقابة الداخليةتقييم الرقابة الداخلية
تقييم الرقابة الداخلية
 
Accounting theory نظرية المحاسبية
Accounting theory   نظرية المحاسبيةAccounting theory   نظرية المحاسبية
Accounting theory نظرية المحاسبية
 
わかりやすい利益相反:臨床研究を成功させるために
わかりやすい利益相反:臨床研究を成功させるためにわかりやすい利益相反:臨床研究を成功させるために
わかりやすい利益相反:臨床研究を成功させるために
 
Course material mca
Course material   mcaCourse material   mca
Course material mca
 
اخلاقيات المهنة
اخلاقيات المهنةاخلاقيات المهنة
اخلاقيات المهنة
 
كتابة التقارير الاحترافية
كتابة التقارير الاحترافيةكتابة التقارير الاحترافية
كتابة التقارير الاحترافية
 
الرقمنة داخل مؤسسات المعلومات أم خارجها
الرقمنة داخل مؤسسات المعلومات أم خارجهاالرقمنة داخل مؤسسات المعلومات أم خارجها
الرقمنة داخل مؤسسات المعلومات أم خارجها
 
الحوكمة في البنوك
الحوكمة في البنوكالحوكمة في البنوك
الحوكمة في البنوك
 
إعادة هندسة منظومات العملBusiness process re engineering
إعادة هندسة منظومات العملBusiness process re engineeringإعادة هندسة منظومات العملBusiness process re engineering
إعادة هندسة منظومات العملBusiness process re engineering
 
مؤشرات الأداء اليوم_الأول-_الاخير
مؤشرات الأداء اليوم_الأول-_الاخيرمؤشرات الأداء اليوم_الأول-_الاخير
مؤشرات الأداء اليوم_الأول-_الاخير
 
المسئولية الاجتماعية
المسئولية الاجتماعيةالمسئولية الاجتماعية
المسئولية الاجتماعية
 
IAS 7 statement of cash flows
IAS 7 statement of cash flowsIAS 7 statement of cash flows
IAS 7 statement of cash flows
 

Viewers also liked

Sistemi Operativi: Processi - Lezione 07
Sistemi Operativi: Processi - Lezione 07Sistemi Operativi: Processi - Lezione 07
Sistemi Operativi: Processi - Lezione 07Majong DevJfu
 
9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA Cloud9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA CloudMajong DevJfu
 
Traffic Shaping Su Linux
Traffic Shaping Su LinuxTraffic Shaping Su Linux
Traffic Shaping Su LinuxMajong DevJfu
 
5 Trasporto Affidabile Teoria
5 Trasporto Affidabile Teoria5 Trasporto Affidabile Teoria
5 Trasporto Affidabile TeoriaMajong DevJfu
 
Sistemi Operativi: Meccanismi - Lezione 03
Sistemi Operativi: Meccanismi - Lezione 03Sistemi Operativi: Meccanismi - Lezione 03
Sistemi Operativi: Meccanismi - Lezione 03Majong DevJfu
 
Linguaggi Formali e Compilazione: Frontend
Linguaggi Formali e Compilazione: FrontendLinguaggi Formali e Compilazione: Frontend
Linguaggi Formali e Compilazione: FrontendMajong DevJfu
 
2 sistemi informativi d azienda
2 sistemi informativi d azienda2 sistemi informativi d azienda
2 sistemi informativi d aziendaMajong DevJfu
 
Sistemi Operativi: Struttura - Lezione 04
Sistemi Operativi: Struttura - Lezione 04Sistemi Operativi: Struttura - Lezione 04
Sistemi Operativi: Struttura - Lezione 04Majong DevJfu
 
4 Livello Ip Parte1 Color
4 Livello Ip Parte1 Color4 Livello Ip Parte1 Color
4 Livello Ip Parte1 ColorMajong DevJfu
 
Architettura dei Calcolatori Subroutines80x86
Architettura dei Calcolatori Subroutines80x86Architettura dei Calcolatori Subroutines80x86
Architettura dei Calcolatori Subroutines80x86Majong DevJfu
 
esercizio sigda n 11
esercizio sigda n 11esercizio sigda n 11
esercizio sigda n 11Majong DevJfu
 
Calcolo Numerico - 2 - Numeri Di Macchina
Calcolo Numerico - 2 - Numeri Di MacchinaCalcolo Numerico - 2 - Numeri Di Macchina
Calcolo Numerico - 2 - Numeri Di MacchinaMajong DevJfu
 
Introduzione a Linguaggi formali e compilazione
Introduzione a Linguaggi formali e compilazioneIntroduzione a Linguaggi formali e compilazione
Introduzione a Linguaggi formali e compilazioneMajong DevJfu
 

Viewers also liked (20)

Sistemi Operativi: Processi - Lezione 07
Sistemi Operativi: Processi - Lezione 07Sistemi Operativi: Processi - Lezione 07
Sistemi Operativi: Processi - Lezione 07
 
9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA Cloud9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA Cloud
 
Lean six sigma
Lean six sigmaLean six sigma
Lean six sigma
 
Traffic Shaping Su Linux
Traffic Shaping Su LinuxTraffic Shaping Su Linux
Traffic Shaping Su Linux
 
5 Trasporto Affidabile Teoria
5 Trasporto Affidabile Teoria5 Trasporto Affidabile Teoria
5 Trasporto Affidabile Teoria
 
3 H2 N Parte3
3 H2 N Parte33 H2 N Parte3
3 H2 N Parte3
 
Sistemi Operativi: Meccanismi - Lezione 03
Sistemi Operativi: Meccanismi - Lezione 03Sistemi Operativi: Meccanismi - Lezione 03
Sistemi Operativi: Meccanismi - Lezione 03
 
E6 Concorre
E6 ConcorreE6 Concorre
E6 Concorre
 
Linguaggi Formali e Compilazione: Frontend
Linguaggi Formali e Compilazione: FrontendLinguaggi Formali e Compilazione: Frontend
Linguaggi Formali e Compilazione: Frontend
 
2 sistemi informativi d azienda
2 sistemi informativi d azienda2 sistemi informativi d azienda
2 sistemi informativi d azienda
 
Sistemi Operativi: Struttura - Lezione 04
Sistemi Operativi: Struttura - Lezione 04Sistemi Operativi: Struttura - Lezione 04
Sistemi Operativi: Struttura - Lezione 04
 
4 Livello Ip Parte1 Color
4 Livello Ip Parte1 Color4 Livello Ip Parte1 Color
4 Livello Ip Parte1 Color
 
8 Www2009 Parte1
8 Www2009 Parte18 Www2009 Parte1
8 Www2009 Parte1
 
Architettura dei Calcolatori Subroutines80x86
Architettura dei Calcolatori Subroutines80x86Architettura dei Calcolatori Subroutines80x86
Architettura dei Calcolatori Subroutines80x86
 
esercizio sigda n 11
esercizio sigda n 11esercizio sigda n 11
esercizio sigda n 11
 
9 Ftp Telnet Email
9 Ftp Telnet Email9 Ftp Telnet Email
9 Ftp Telnet Email
 
6 Dns Parte2
6 Dns Parte26 Dns Parte2
6 Dns Parte2
 
esercizio sigda n 8
esercizio sigda n 8esercizio sigda n 8
esercizio sigda n 8
 
Calcolo Numerico - 2 - Numeri Di Macchina
Calcolo Numerico - 2 - Numeri Di MacchinaCalcolo Numerico - 2 - Numeri Di Macchina
Calcolo Numerico - 2 - Numeri Di Macchina
 
Introduzione a Linguaggi formali e compilazione
Introduzione a Linguaggi formali e compilazioneIntroduzione a Linguaggi formali e compilazione
Introduzione a Linguaggi formali e compilazione
 

Similar to Sistemi Operativi: Struttura avanzata - Lezione 05

Virtualizzazione e Network Management Open Source
Virtualizzazione e Network Management Open SourceVirtualizzazione e Network Management Open Source
Virtualizzazione e Network Management Open SourceMarco Vanino
 
Joomla day 2010 Virtualizzare in locale pro e contro
Joomla day 2010 Virtualizzare in locale pro e controJoomla day 2010 Virtualizzare in locale pro e contro
Joomla day 2010 Virtualizzare in locale pro e controAndrea Adami
 
La Virtualizzazione 2010
La Virtualizzazione 2010La Virtualizzazione 2010
La Virtualizzazione 2010Davide Grossato
 
Sistemi di virtualizzazione con Linux
Sistemi di virtualizzazione con LinuxSistemi di virtualizzazione con Linux
Sistemi di virtualizzazione con LinuxTruelite
 
Virtualizzazione: sistemi operativi a matrioska
Virtualizzazione: sistemi operativi a matrioskaVirtualizzazione: sistemi operativi a matrioska
Virtualizzazione: sistemi operativi a matrioskaPiazza Telematica Schio
 
Delphi Day 2009 Win7 Dev Overview
Delphi Day 2009 Win7 Dev OverviewDelphi Day 2009 Win7 Dev Overview
Delphi Day 2009 Win7 Dev Overviewpietrobr
 
Sistemi di virtualizzazione in ambiente Linux
Sistemi di virtualizzazione in ambiente LinuxSistemi di virtualizzazione in ambiente Linux
Sistemi di virtualizzazione in ambiente LinuxTruelite
 
Virtualizzazione&Cloud Computing
Virtualizzazione&Cloud ComputingVirtualizzazione&Cloud Computing
Virtualizzazione&Cloud ComputingVMEngine
 
Virtualizzazione
VirtualizzazioneVirtualizzazione
VirtualizzazioneLuca Giusti
 
Differenze tra Windows Server 2012 R2 su e Server 2016 Yashi Italia
Differenze tra Windows Server 2012 R2 su e Server 2016 Yashi ItaliaDifferenze tra Windows Server 2012 R2 su e Server 2016 Yashi Italia
Differenze tra Windows Server 2012 R2 su e Server 2016 Yashi ItaliaYashi Italia
 
Virtualizzazione: soluzioni per Server e Client
Virtualizzazione: soluzioni per Server e ClientVirtualizzazione: soluzioni per Server e Client
Virtualizzazione: soluzioni per Server e ClientNicola Bressan
 
Software Virtualization & Streaming: eliminare intere fasi dell’ IMAC (Instal...
Software Virtualization & Streaming: eliminare intere fasi dell’ IMAC (Instal...Software Virtualization & Streaming: eliminare intere fasi dell’ IMAC (Instal...
Software Virtualization & Streaming: eliminare intere fasi dell’ IMAC (Instal...Pipeline Srl
 
Proxmox Ve - Introduzione - MontelLUG Cs2011
Proxmox Ve - Introduzione - MontelLUG Cs2011Proxmox Ve - Introduzione - MontelLUG Cs2011
Proxmox Ve - Introduzione - MontelLUG Cs2011Mirco Piccin
 
.NET Core, ASP.NET Core e Linux per il Mobile
.NET Core, ASP.NET Core e Linux per il Mobile.NET Core, ASP.NET Core e Linux per il Mobile
.NET Core, ASP.NET Core e Linux per il MobilePietro Libro
 
ASP.NET Core Services e Linux per il Mobile - Pietro Libro - Codemotion Rome...
ASP.NET Core Services e Linux per il Mobile  - Pietro Libro - Codemotion Rome...ASP.NET Core Services e Linux per il Mobile  - Pietro Libro - Codemotion Rome...
ASP.NET Core Services e Linux per il Mobile - Pietro Libro - Codemotion Rome...Codemotion
 

Similar to Sistemi Operativi: Struttura avanzata - Lezione 05 (20)

Virtualizzazione e Network Management Open Source
Virtualizzazione e Network Management Open SourceVirtualizzazione e Network Management Open Source
Virtualizzazione e Network Management Open Source
 
Joomla day 2010 Virtualizzare in locale pro e contro
Joomla day 2010 Virtualizzare in locale pro e controJoomla day 2010 Virtualizzare in locale pro e contro
Joomla day 2010 Virtualizzare in locale pro e contro
 
La Virtualizzazione 2010
La Virtualizzazione 2010La Virtualizzazione 2010
La Virtualizzazione 2010
 
La Virtualizzazione
La VirtualizzazioneLa Virtualizzazione
La Virtualizzazione
 
Seminario VMWare 2014
Seminario VMWare 2014Seminario VMWare 2014
Seminario VMWare 2014
 
Sistemi di virtualizzazione con Linux
Sistemi di virtualizzazione con LinuxSistemi di virtualizzazione con Linux
Sistemi di virtualizzazione con Linux
 
Ambienti di virtualizzazione
Ambienti di virtualizzazioneAmbienti di virtualizzazione
Ambienti di virtualizzazione
 
Virtualizzazione: sistemi operativi a matrioska
Virtualizzazione: sistemi operativi a matrioskaVirtualizzazione: sistemi operativi a matrioska
Virtualizzazione: sistemi operativi a matrioska
 
Delphi Day 2009 Win7 Dev Overview
Delphi Day 2009 Win7 Dev OverviewDelphi Day 2009 Win7 Dev Overview
Delphi Day 2009 Win7 Dev Overview
 
Sistemi di virtualizzazione in ambiente Linux
Sistemi di virtualizzazione in ambiente LinuxSistemi di virtualizzazione in ambiente Linux
Sistemi di virtualizzazione in ambiente Linux
 
Virtualizzazione&Cloud Computing
Virtualizzazione&Cloud ComputingVirtualizzazione&Cloud Computing
Virtualizzazione&Cloud Computing
 
Virtualizzazione
VirtualizzazioneVirtualizzazione
Virtualizzazione
 
Differenze tra Windows Server 2012 R2 su e Server 2016 Yashi Italia
Differenze tra Windows Server 2012 R2 su e Server 2016 Yashi ItaliaDifferenze tra Windows Server 2012 R2 su e Server 2016 Yashi Italia
Differenze tra Windows Server 2012 R2 su e Server 2016 Yashi Italia
 
Lotus Foundations Start
Lotus Foundations StartLotus Foundations Start
Lotus Foundations Start
 
Virtualizzazione: soluzioni per Server e Client
Virtualizzazione: soluzioni per Server e ClientVirtualizzazione: soluzioni per Server e Client
Virtualizzazione: soluzioni per Server e Client
 
Software Virtualization & Streaming: eliminare intere fasi dell’ IMAC (Instal...
Software Virtualization & Streaming: eliminare intere fasi dell’ IMAC (Instal...Software Virtualization & Streaming: eliminare intere fasi dell’ IMAC (Instal...
Software Virtualization & Streaming: eliminare intere fasi dell’ IMAC (Instal...
 
Proxmox Ve - Introduzione - MontelLUG Cs2011
Proxmox Ve - Introduzione - MontelLUG Cs2011Proxmox Ve - Introduzione - MontelLUG Cs2011
Proxmox Ve - Introduzione - MontelLUG Cs2011
 
.NET Core, ASP.NET Core e Linux per il Mobile
.NET Core, ASP.NET Core e Linux per il Mobile.NET Core, ASP.NET Core e Linux per il Mobile
.NET Core, ASP.NET Core e Linux per il Mobile
 
ASP.NET Core Services e Linux per il Mobile - Pietro Libro - Codemotion Rome...
ASP.NET Core Services e Linux per il Mobile  - Pietro Libro - Codemotion Rome...ASP.NET Core Services e Linux per il Mobile  - Pietro Libro - Codemotion Rome...
ASP.NET Core Services e Linux per il Mobile - Pietro Libro - Codemotion Rome...
 
Cloud Computing
Cloud ComputingCloud Computing
Cloud Computing
 

More from Majong DevJfu

8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processes8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processesMajong DevJfu
 
7 - Architetture Software - Software product line
7 - Architetture Software - Software product line7 - Architetture Software - Software product line
7 - Architetture Software - Software product lineMajong DevJfu
 
6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformationMajong DevJfu
 
5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven Architecture5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven ArchitectureMajong DevJfu
 
4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture Portfolio4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture PortfolioMajong DevJfu
 
3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural styles3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural stylesMajong DevJfu
 
2 - Architetture Software - Software architecture
2 - Architetture Software - Software architecture2 - Architetture Software - Software architecture
2 - Architetture Software - Software architectureMajong DevJfu
 
1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a product1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a productMajong DevJfu
 
10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural styles10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural stylesMajong DevJfu
 
25 architectural adaptation
25 architectural adaptation25 architectural adaptation
25 architectural adaptationMajong DevJfu
 

More from Majong DevJfu (20)

8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processes8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processes
 
7 - Architetture Software - Software product line
7 - Architetture Software - Software product line7 - Architetture Software - Software product line
7 - Architetture Software - Software product line
 
6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation
 
5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven Architecture5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven Architecture
 
4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture Portfolio4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture Portfolio
 
3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural styles3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural styles
 
2 - Architetture Software - Software architecture
2 - Architetture Software - Software architecture2 - Architetture Software - Software architecture
2 - Architetture Software - Software architecture
 
1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a product1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a product
 
10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural styles10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural styles
 
Uml3
Uml3Uml3
Uml3
 
Uml2
Uml2Uml2
Uml2
 
6
66
6
 
5
55
5
 
4 (uml basic)
4 (uml basic)4 (uml basic)
4 (uml basic)
 
3
33
3
 
2
22
2
 
1
11
1
 
Tmd template-sand
Tmd template-sandTmd template-sand
Tmd template-sand
 
26 standards
26 standards26 standards
26 standards
 
25 architectural adaptation
25 architectural adaptation25 architectural adaptation
25 architectural adaptation
 

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'? 1
  • 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 2
  • 3. Architetture – anni '90 File Web File Web Domain server server server server server DNS App File server server server Ciascun server esegue 1 applicazione 3
  • 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 4
  • 5. Architetture – 2000 Dell PowerEdge 1950 Rack Unit (1U) Armadio Rack pieno Armadio Rack vuoto 5
  • 6. Architetture – 2000 IBM HS20 Blade Server Unit HP BladeSystem c7000 16 blade servers 2 UPS da 3U 6
  • 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 7
  • 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 8
  • 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 File Print DNS Domain App servers server server DB servers server server Sistemi virtuali Sistema fisico 9
  • 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 10
  • 11. Architettura tradizionale • Singolo SO per nodo Applicazione fisico • Singola applicazione Processo Processo Processo per nodo fisico • Componenti HW Sistema Operativo connessi direttamente al SO Architettura HW CPU memoria rete disco 11
  • 12. Architettura virtualizzata • Aggiunta di un livello di Applicazione Applicazione virtualizzazione, detto Virtual Machine Monitor SO Windows SO Linux Macchine • Diversi SO possono CPU Disco CPU Disco virtuali essere instanziati sotto Mem Rete Mem Rete forma di macchine Livello di virtualizzazione virtuali (Virtual Machine Monitor) • Ciascuna macchina virtuale è isolata Sistema Operativo • Possono essere eseguiti più SO simultaneamente Architettura HW • Se una macchina CPU memoria virtuale si rovina, le altre non sono affette rete disco 12
  • 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 13
  • 15. CMS 15
  • 16. VM/360: architettura Applicazioni Processi Processi Processi CMS Kernel Kernel Kernel VM1 VM2 VM3 CP-40 Implementazione macchina virtuale System 360 Hardware 16
  • 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 17
  • 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 18
  • 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 19
  • 20. Un pò di terminologia Applicazione Applicazione Macchina SO Guest SO Guest virtuale Windows Linux CPU Disco CPU Disco Guest HW Mem Rete Mem Rete Livello di virtualizzazione (Virtual Machine Monitor) Sistema Operativo Host Architettura HW Host CPU memoria rete disco 20
  • 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 21
  • 22. Applicazioni della virtualizzazione Isolamento Consolidamento App1 App2 App1 App2 App1 App2 App1 App2 OS OS OS1 OS1 OS OS2 OS2 VMM VMM HW HW1 HW2 HW HW Disaster recovery Test e sviluppo App App App App OS OS OS1 OS2 VMM VMM VMM VMM VMM HW1 HW2 HW1 HW2 HW 22
  • 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 23
  • 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) 24
  • 25. Emulazione completa VMM Applicazioni Guest OS Hardware (tutto) Sistema Operativo Host Architettura HW Host CPU memoria rete disco 25
  • 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 26
  • 27. Virtualizzazione completa VMM Applicazioni Guest OS Hardware che serve Sistema Operativo Host Architettura HW Host CPU memoria rete disco 27
  • 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 28
  • 29. Virtualizzazione assistita dall'HW VMM Applicazioni Guest OS Mappatura in hw vero Sistema Operativo Host Architettura HW Host CPU memoria rete disco 29
  • 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 30
  • 31. Paravirtualizzazione VMM Applicazioni Guest OS Hypercall System call Sistema Operativo Host Architettura HW Host CPU memoria rete disco 31
  • 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 32
  • 33. Virtualizzazione a livello di SO VMM Contenitore Applicazione Assegnazione porzione hw System call Sistema Operativo Host Architettura HW Host CPU memoria rete disco 33
  • 34. Virtualizzazione a livello di 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,... 34
  • 35. Virtualizzazione a livello di applicazione VMM sorgente Applicazione Compilatore Interprete Runtime environment System call Sistema Operativo Host Architettura HW Host CPU memoria rete disco 35
  • 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 36
  • 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 37
  • 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 38
  • 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 39
  • 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) 40
  • 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 41
  • 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 42
  • 43. Approccio “Trap and emulate” Virtual Machine Monitor Memoria della Gestore CPU macchina virtuale eccezioni virtuale Istruzioni non privilegiate Istruzioni SO Host privilegiate I/O, memoria fisica Eccezione CPU reale 43
  • 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) 44
  • 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 45
  • 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 46
  • 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 :-( 47
  • 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 48
  • 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 49
  • 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 50
  • 51. Estensione VT-x Senza VT-x Con VT-x VMM VMM Ring -1 Ring 3 Ring 3 Applicazioni Applicazioni Ring 1 Ring 0 Guest OS Guest OS Hardware Hardware Ring 0 Ring 0 Sistema Operativo Sistema Operativo Host Host Architettura HW Host Architettura HW Host CPU memoria CPU memoria rete rete disco disco 51
  • 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 52
  • 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 53
  • 54. Estensione VT-x IA-32 Ring 3 Operation Ring 0 54
  • 55. Estensione VT-x VMX Root Ring 3 Operation VMXON Ring 0 55
  • 56. Estensione VT-x VM 1 VMX Ring 3 Non-root Operation Ring 0 VM Enter VMX Root Ring 3 Operation VMLAUNCH Ring 0 56
  • 57. Estensione VT-x VM 1 VMX Ring 3 Non-root Operation Ring 0 VM Exit VMX Root Ring 3 Operation Ring 0 57
  • 58. Estensione VT-x VM 1 VMX Ring 3 Non-root Operation Ring 0 VM Enter VMX Root Ring 3 Operation VMRESUME Ring 0 58
  • 59. Estensione VT-x VM 1 VM 2 VM n VMX Ring 3 Ring 3 Ring 3 ... Non-root Operation Ring 0 Ring 0 Ring 0 VM Enter VMX Root Ring 3 Operation VMLAUNCH Ring 0 59
  • 60. Estensione VT-x VM 1 VM 2 VM n VMX Ring 3 Ring 3 Ring 3 ... Non-root Operation Ring 0 Ring 0 Ring 0 VM Enter VMCS VMCS VMCS 1 2 n VMX Root Ring 3 Operation VMLAUNCH Ring 0 60
  • 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 61
  • 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 62
  • 63. Estensione VT-d CPU CPU System Bus North Bridge DRAM VT-d Integrated PCIe* Root Ports Devices PCI Express South PCI, LPC, Bridge Legacy devices, … 63
  • 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,... 64
  • 65. Estensione VT-d Extended Page Table CR3 Base Pointer EPT Indirizzo fisico Tabella Tabella Host pagine pagine Indirizzo lineare Indirizzo fisico Guest OS estesa Guest Guest 65
  • 66. Estensione VT-d Extended Page Table: schema dettagliato Indirizzo Indirizzo CR3 lineare Guest fisico Host + Page Page directory table EPT EPT EPT + + Indirizzo fisico Indirizzo fisico iniziale della iniziale della pagina - Guest pagina - Guest 66
  • 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 67
  • 68. Estensione VT-d DMA remapping: schema dettagliato DMA Requests Dev 31, Func 7 Device ID Virtual Address … Length Dev P, Func 2 Bus 255 Page Bus N Frame Fault Generation Bus 0 Dev P, Func 1 4KB Page Dev 0, Func 0 Tables Address Translation DMA Remapping Structures Device D1 Engine Device Assignment Translation Cache Structures Device D2 Address Translation Structures Context Cache Accesso alla memoria Strutture di traduzione con l'indirizzo fisico Host 68
  • 69. Estensione VT-d: DMA remapping DMA remapping: schema dettagliato Requestor ID DMA Virtual Address 15 87 32 0 63 57 56 48 47 39 38 30 29 21 20 12 11 0 Level-4 Level-3 Level-2 Level-1 000000b 000000000b Bus Device Func table offset table offset table offset table offset Page Offset Base Page Device Assignment Tables Level-4 Level-3 Page Page Table Level-2 Table Page Example Device Assignment Level-1 Table Table Entry specifying 4-level Page page table Table 69
  • 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 70
  • 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 71
  • 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 72
  • 73. JAVA Struttura della JVM file *.class caricatore delle classi verificatore delle classi interprete calcolatore 73
  • 74. JAVA Struttura della JVM file *.class JVM caricatore delle classi verificatore delle classi interprete calcolatore 74
  • 75. JAVA Struttura della JVM file *.class caricatore delle classi verificatore delle classi interprete SO Host calcolatore 75
  • 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 76
  • 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 77
  • 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 78
  • 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 79
  • 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 80
  • 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 81
  • 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 82
  • 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) 83
  • 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 84