1 VIRTUALIZZAZIONE Docente: Marco Sechi Modulo 1
Il linguaggio assemblyèil linguaggio del microprocessore. Un programma ècostituito daistruzioni assemblyche vengono interpretate ed eseguite dal microprocessore. Un programma che è stato progettato per essere eseguito su un determinato hardware(è scritto nell assemblydi quel processore!) non può girare su un hardware diverso. Per eseguire un applicativo su diverse piattaforme è necessario produrne diverse versioni, ciascuna specifica per il processore che deve essere supportato. Questo comporta costi elevati, non solo per via dello sviluppo multiplo ma anche nella gestione degli aggiornamenti: ogni modifica deve essere replicata e testata su tutte le piattaforme supportate! La scrittura dei programmi direttamente in assemblyappartiene alle prime metodologie di sviluppo ed ora è poco diffusa. Oggi l assembly è utilizzatoquando ènecessario ottenere applicazioni estremamente veloci oppure nella programmazione dei microcontrollori(pic) dove il sistema operativo èquasi inesistente o limitato a poche funzionalitàdi base. 2
Sviluppare in assemblyèmolto complicato poichétale linguaggio risulta umanamente poco comprensibile. Inoltre la sua estrema atomicità (ad esempio per svolgere una semplice somma sono necessarie numerose istruzioni assembly!) comporta la stesura di lunghe sequenze di istruzionianche quando si vuole creare un semplice programma. Queste difficoltàhanno portato alla creazione di linguaggi ad alto livello, che contrariamente all assembly, risultano umanamente piùcomprensibili e compatti(ad esempio per svolgere un operazione complessa come l ordinamento di una sequenza di numeri basta richiamare una singola istruzione: sort). I linguaggi ad alto livello sono incomprensibili per il microprocessoreper cui ènecessario utilizzare un programma (detto compilatore) che traduca le istruzioni ad alto livello in assembly(linguaggio a basso livello). Il sistema operativogioca un ruolo importante nello sviluppo delle applicazioni. Oltre a fornire l interfaccia utente/macchina, fornisceuna serie di funzionalità che devono essere presenti nella maggior parte delle applicazionicome ad esempio: l uso della stampante, del video, del mouse etc. Tali funzioni, chiamate API (DLL in windows), possono essere inserite nelle applicazioni(tramite delle librerie) senza che sia necessario riscriverle ogni 3 volta. Questo permette di semplificare ulteriormente lo sviluppo delle applicazioni.
Le APIsvolgono un ulteriore funzione: filtrano gli accessi alle risorse hardware. Piùil sistema operativo nasconde alle applicazioni il livello hardware(impedendo qualsiasi accesso diretto all hardware) maggiore èil livello di sicurezza ottenuto. Le API controllano l uso delle risorse hardware imponendo delle regole che garantiscano un elevato livello di sicurezza e stabilitàdel sistema. Ad esempio un keylogger(dispositivo per registrare tutta l attività di input dell utente) sarà invisibile al sistema operativo quando comunica direttamente conil livello hardware. Per bypassare le protezioni del sistema operativo un applicazione spia deve necessariamente avviarsi prima del boot del sistema operativo e modificarne le procedure di sicurezza. 4
Le applicazioni che utilizzano le API di un sistema operativo restano comunque scritte in linguaggio assembly. Le chiamate alle API rendono le applicazioni incompatibilicon sistemi operativi differenti anche quando l hardwareutilizzato èlo stesso. Ad esempio i sistemi operativi MAC OSe Windowsgirano sullo stesso hardware Intel ma le loro applicazioni risultano incompatibili: un Word per MAC non gira su Windows e viceversa. RIASSUMENDO: Sviluppare un applicativo per diverse piattaforme implica costi elevati. La virtualizzazione software e quella hardware permettono diaggirare questo problema. Virtualizzando èpossibile scrivere un applicazione solo una volta ed eseguirla poi su tutti i sistemi operativi richiesti. 5
VIRTUALIZZAZIONE HARDWARE Nellavirtualizzazione hardwareparticolari software emulanole componenti fisiche di un computer creando di fatto un pc virtuale (Virtual Machine) all interno del pc fisico(host PC). Il pcvirtuale si comporta a tutti gli effetti come un normale PC sul qual possiamo far girare un sistema operativo diverso da quello installato sulla macchina fisica. Esempi di Virtualizzatori Hardwaresono: QEmu, VirtualBox, Microsoft Virtual PC, Parallel Desktop(Mac) e VMWare (i primi 2 sono freeware). 6
Il software di virtualizzazione presenta nel suo pannello di gestione le macchine virtuali disponibili che possono essere avviate quando necessario. 7
La Virtualizzazione Hardware riproduce tutte le componenti fisichedi un computer: ram, cpu, disco fisso, etc. Il virtualizzatoresalva in un file, sul sistema HOST il contenuto del disco virtuale utilizzato dalla VirtualMachine. VANTAGGI VIRTUALIZZAZIONE HARDWARE Posso utilizzare la virtualmachinecome sistema di testper provare nuovi software (la cui provenienza potrebbe destare sospetti!) oppure per visitare siti web ritenuti a rischio. Se la macchina virtuale si infesta di virus oppure si rovina mi basta sostituire il file abbinato al disco fissodel sistema corrotto con una copia integra (che mi ero messo da parte durante la configurazione iniziale della virtual machine) ed ottengo immediatamente una macchina perfettamente funzionate. Applicazioni costruite per particolari sistemi operativi(anche obsoleti!) possono essere eseguite su altri sistemioperativi senza dover apportare modifiche al software originale. La Virtualizzazione Hardware è il punto di partenza per il Terminal Server SVANTAGGI VIRTUALIZZAZIONE HARDWARE Richiede macchine potenti 8
VIRTUALIZZAZIONE SOFTWARE L obiettivo della virtualizzazione software è quello di fornire un linguaggio di sviluppo (programmazione) universaleche sia indipendente dal sistema operativo utilizzato. Lo strato software che consente la virtualizzazione software èdettoframework. Con la virtualizzazione software l applicazione viene scritta una sola voltae viene eseguita su tutti i sistemi operativi che supportano tale framework. Programmi di virtualizzazione software sono Javae Flash. Anche i Browser (con JavaScript, CSS e HTML) sono dei virtualizzatori software. 9