25
Virtualizzazione 1 Docente: Marco Sechi Virtualizzazione

Docente: Marco Sechi - brescianet.com · Il browser gestisce il front‐end applicativo mentre un motore applicativo (app engine), presente sulla piattaforma del provider, amministra

Embed Size (px)

Citation preview

Virtualizzazione

1Do

cente: M

arco Sechi

Virtualizzazione

Virtualizzazione

2Do

cente: M

arco SechiVirtualizzazioneIl linguaggio macchina è il linguaggio del microprocessore. Un programma eseguibile è costituito da una sequenza di istruzioni macchina che vengono interpretate ed eseguite direttamente dal microprocessore. Un programma in linguaggio macchina si presenta come una sequenza di 0 e 1 (codifica binaria).Un programma che è stato progettato per essere eseguito su un determinato processore (quindi scritto utilizzando le istruzioni macchina di quel processore!) non può girare su un elaboratore caratterizzato da una CPU differente! 

Programma in codice macchina

Virtualizzazione

3Do

cente: M

arco Sechi

Per eseguire lo stesso applicativo su diverse piattaforme hardware (o processori differenti!) è necessario svilupparne diverse versioni (porting), ciascuna specifica per il processore dove l'applicazione deve essere utilizzata. 

MODALITA' DI SVILUPPO DELLE APPLICAZIONI

I primi elaboratori non possedevano alcun sistema operativo ed inoltre non eranodisponibili linguaggi di programmazione ad alto livello che consentissero unosviluppo più rapido delle applicazioni.

DIRETTAMENTE IN LINGUAGGIO MACCHINA

Svilu

ppatore Agli albori dell'informatica quindi la modalità di sviluppo

che veniva adottata consisteva nel redigere il programmadirettamente in linguaggio macchina. Questo approccio èdecisamente molto complesso specialmente per ladifficoltà di lettura del codice binario che risultaumanamente poco incomprensibile.

Virtualizzazione

4Do

cente: M

arco Sechi

In seguito si è iniziato ad utilizzare il linguaggio assembly che consentiva una più agevole scrittura dei programmi grazie alla maggior leggibilità del codice.L’assembly risulta più comprensibile poiché utilizza delle codifiche testuali come alternativa alle sequenze di bit per specificare il codice operativo dell'istruzione macchina. Tali codifiche richiamano direttamente il significato dell’istruzione (ad esempio ADD, SUB, LOAD, …). Inoltre consente l’utilizzo di etichette per identificare gli indirizzi di  memoria e i registri (es. R1, R2, …).

La metodologia di sviluppo basata sull' assembly rimane comunque molto complicata poiché questo linguaggio è comunque “umanamente” poco immediato. Inoltre la sua estrema atomicità (ad esempio per svolgere una semplice somma sono necessarie numerose istruzioni assembly!) implica la scrittura di lunghe sequenze di istruzioni anche quando si tratta di un semplice programma. 

UTILIZZANDO IL LINGUAGGIO ASSEMBLY

Queste difficoltà hanno relegato la scrittura diretta in codice macchina o in assembly solo ai casi in cui è indispensabile creare applicazioni estremamente veloci oppure nella programmazione dei microcontrollori (PIC) dove il sistema operativo è quasi inesistente o limitato a poche funzionalità di base. 

microcontrollore

Virtualizzazione

5Do

cente: M

arco Sechi

Come nei linguaggi ad alto livello, è necessario un processo di traduzione affinché un programma assembly possa diventare un'applicazione eseguibile.

Svilu

ppatore 

UTILIZZANDO LINGUAGGI AD ALTO LIVELLOL'adozione dei linguaggi ad alto livello, che diversamente dall’assembly risultano inveceumanamente più comprensibili e compatti (ad esempio per svolgere un’operazionecomplessa come l’ordinamento basta una singola istruzione: sort), ha semplificatonotevolmente lo sviluppo delle applicazioniI linguaggi ad alto livello sono incomprensibili per il microprocessore per cui è necessarioutilizzare un programma (detto compilatore) che traduca le istruzioni ad alto livello inlinguaggio macchina. (linguaggio a basso livello).

Svilu

ppatore 

Virtualizzazione

6Do

cente: M

arco Sechi

Nessuna delle modalità di sviluppo precedentemente descritte tiene conto del sistemaoperativo. In realtà il sistema operativo gioca un ruolo indispensabile nello sviluppo delleapplicazioni. Oltre a gestire l’interfaccia utente/macchina, fornisce una serie difunzionalità che sono frequentemente richieste dalla maggior parte delle applicazionicome ad esempio: l’accesso al disco, la gestione della stampante, la lettura delleperiferiche di input, etc.Questi servizi, resi fruibili grazie a funzioni chiamate API (DLL in windows), possonoessere utilizzati dalle applicazioni senza che sia necessario svilupparne uno specificocodice. Questo approccio permette di semplificare ulteriormente lo sviluppo delleapplicazioni.

UTILIZZANDO LE API DEL SISTEMA OPERATIVOSvilu

ppatore 

Durante la compilazione vengono inseriti nel programma eseguibile i richiami alle funzioniintegrate messe a disposizione dal linguaggio di programmazione e contenute nellelibrerie di runtime. Le funzionalità messe a disposizione possono essere quindi utilizzatesenza che sia necessario produrne ogni volta uno specifico codice.

Il processo di sviluppo delle applicazioni ora include,rispetto alle precedenti modalità di sviluppo, l'utilizzodelle librerie del sistema operativo.

Virtualizzazione

7Do

cente: M

arco Sechi

Le API (application programming interface) svolgono un ulteriore funzione: controllano gli accessi alle risorse hardware. Più il sistema operativo occulta alle applicazioni il livello fisico (impedendo qualsiasi accesso diretto all’hardware) maggiore è il livello di sicurezza che quel S.O. fornisce. Le API regolamentano l’uso delle risorse hardware imponendo delle direttive che garantiscano un elevato livello di sicurezza e la stabilità del sistema. 

Ad esempio un keylogger (dispositivo per registrare tutta l’attività di input dell’utente) per non essere rilevato dal sistema operativo deve comunicare direttamente con il livello hardware bypassando qualsiasi controllo. Quindi un’applicazione spia, per aggirare le protezioni offerte dal sistema operativo, deve necessariamente avviarsi prima della fase di boot del sistema operativo e successivamente modificarne le procedure di sicurezza.

Architettura applicazione in un ambiente privo di sistema operativo

Architettura applicazione in ambiente DOS

Architettura applicazione in un ambiente con sistema operativo "sicuro"

Virtualizzazione

8Do

cente: M

arco Sechi

Le applicazioni native prodotte attraverso il processo di compilazione, anche se contengono richiami alle API di sistema, restano comunque scritte in linguaggio macchina.La presenza delle API all'interno del codice eseguibile rende le applicazioni sviluppate per diversi sistemi operativi tra loro incompatibili anche quando l'hardware utilizzato è sempre lo stesso. Ad esempio i sistemi operativi MAC OS e Windows supportano lo stesso hardware Intelma le loro applicazioni native risultano incompatibili: un Word per MAC non può essere eseguito su Windows e viceversa.

L'introduzione del sistema operativo nel processo di sviluppo ha aumentato i problemi diportabilità delle applicazioni poiché non è possibile eseguire sullo stesso hardwareapplicazioni progettate per sistemi operativi differenti.

Virtualizzazione

9Do

cente: M

arco Sechi

Vincolare un'applicazione ad un particolare ambiente hardware o sistema operativocomporta forti limitazioni che, con le tecniche di sviluppo analizzate, possono esseresuperate solo con investimenti consistenti. Le diffusione delle applicazioni che nonrisultano portabili (ovvero utilizzabili su differenti piattaforme hardware/cpu) risultafortemente limitata. Un'applicazione come WhatsApp avrebbe ottenuto un così ampiosuccesso se fosse stata implementata solo per particolari modelli di telefonino?

Le modalità di sviluppo illustrate determinano in tutti i casi la produzione di unprogramma in codice macchina che può essere eseguito solo su un particolareprocessore (scrittura diretta del codice macchina, uso dell'assembly e di un linguaggioad alto livello) o su un determinato sistema operativo (quando si utilizzano le API).

Virtualizzazione

10Do

cente: M

arco Sechi

Più ambienti operativi risultano supportati maggiore è la diffusione che l'applicazione puòavere sul mercato. L'eventuale successo di una nuova piattaforma hardware non puòessere trascurato per cui è necessario procedere al porting dell'applicazione anche per ilnuovo ambiente operativo. Tale sviluppo richiede investimenti e tempo: un ritardoeccessivo sulla data di rilascio potrebbe compromettere il successo dell'applicazione inquell'ambiente (ad esempio a causa di un prodotto concorrente che entra sul mercatoprima del nostro) vanificando gli investimenti sostenuti. Il metodo di sviluppo utilizzatodeve quindi permettere anche un tempestivo porting delle applicazioni.

Nell'attuale panorama informatico, caratterizzato da una gran varietà di dispositivi, laportabilità di una applicazione è un elemento fondamentale per il suo successo e vasostenuto con determinazione.

Alla luce di quanto specificato fin qui l'unico modo per aumentare la portabilità di unaapplicazione è quello di implementarla (porting) su ogni piattaforma hardware o sistemaoperativo che si decida di supportare. Questa scelta comporta notevoli costi di produzionepoiché i diversi porting dell'applicativo devono essere gestiti da specifici team di sviluppo chedevono preoccuparsi di mantenerli aggiornati all'ultima release e al tempo stesso impegnarsia condurre tutti i test necessari a garantire la stabilità dell'applicazione.

Virtualizzazione

11Do

cente: M

arco Sechi

Lo scopo della virtualizzazione è quello di limitare i costi necessari ad ottenere applicazioniportabili evitando di dover scrivere per ogni sistema supportato la specifica versionenativa. La virtualizzazione in generale consiste nell'implementare per ogni piattaforma chesi intende supportare un substrato software detto framework (o virtualizzatore) che mettea disposizione una sorta di codice macchina virtuale (bitcode). Le applicazioni scritte conquesto bitcode possono essere eseguite sul virtualizzatore e quindi essere adoperate sudifferenti sistemi operativi senza necessità di un porting specifico.

Il bitcode può essere:la riproduzione di un codice macchina adottato da una cpu realmente esistente (in questo caso si parla di virtualizzazione hardware) un linguaggio macchina inventato non riferibile ad alcuna architettura realmente esistente (virtualizzazione software).

VIRTUALIZZAZIONE

Virtualizzazione

12Do

cente: M

arco Sechi

Nella virtualizzazione hardware particolari software emulano le componenti fisiche di un computer creando di fatto un pc virtuale (Virtual Machine) all’interno del pc fisico (Host PC). Il pc virtuale 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.

La virtualizzazione HW consente l'esecuzione di applicativi progettati per sistemi operativi differenti da quello installato sulla macchina fisica che ospita il virtualizzatore e questo senza apportare modifiche all'applicazione utilizzata.

VIRTUALIZZAZIONE HARDWARE

Virtualizzazione

13Do

cente: M

arco Sechi

Il software di virtualizzazione hardware presenta nel pannello di gestione l'elenco delle macchine virtuali che possono essere avviate.

Virtualizzazione

14Do

cente: M

arco Sechi

Dal punto di vista pratico la virtualizzazione hardware crea all'interno del nostro pc delle finestre applicative nelle quali vengono eseguiti interi sistemi operativi.

Le applicazioni non native vengono eseguite all'interno di una finestra dove, oltre ad esse, è evidente che sta girando un altro sistema operativo (OS Guest).

Virtualizzazione

15Do

cente: M

arco Sechi

In alcuni casi il software di virtualizzazione hardware siintegra fortemente con il sistema operativo ospitante(OS Host) fino a presentare le applicazioni scritte peraltri sistemi operativi come se fossero applicazioninative del computer fisico. Il livello di integrazione ètale che l'utente non si rende neppure conto dellapresenza del software di virtualizzazione.

Virtualizzazione

16Do

cente: M

arco Sechi

Programmi di Virtualizzazione Hardware sono: QEmu, Virtual Box, Microsoft VirtualPC, Parallel Desktop (Mac) e VMWare. 

https://www.virtualbox.org/ http://www.vmware.com

http://www.parallels.com/

https://www.microsoft.com/it‐it/download/details.aspx?id=4580

Obsoleto!

http://www.qemu.org

Virtualizzazione

17Do

cente: M

arco Sechi

Per utilizzare un PC virtuale è necessario installare al suo interno il sistema operativo altrimenti all'avvio della virtual machine riceviamo un messaggio di halt.

L'installazione del sistema operativo avviene con le stesse modalità previste per un pc reale per cui è necessario procurarsi il set di DVD contenenti l'installazione del sistema operativo.

Virtualizzazione

18Do

cente: M

arco Sechi

La Virtualizzazione Hardware riproduce via software tutte le componenti fisichedi un computer: ram, cpu, disco fisso, etc. Il virtualizzatore salva in un file, sul sistema host, il contenuto del disco fisso virtuale utilizzato dalla Virtual Machine. VANTAGGI VIRTUALIZZAZIONE HARDWARE

Posso utilizzare la virtual machine come sistema di test per visitare siti web ritenuti pericolosi o per provare programmi la cui provenienza induce a pensare che siano infettati da qualche virus o nascondano un trojan horse. Se la macchina virtuale diventa instabile a causa di un'infestazione virale mi basta sostituire il file abbinato al disco fisso del sistema corrotto con una copia integra (che ad esempio mi ero messo da parte durante la configurazione iniziale della virtual machine) per ottenere subito una macchina perfettamente funzionante.

Applicazioni costruite per particolari sistemi operativi (anche obsoleti!) possono essere eseguite su altri sistemi operativi senza dover apportare modifiche al software originale.Senza la virtualizzazione hardware il paradigma Terminal Server non esisterebbe.

SVANTAGGI VIRTUALIZZAZIONE HARDWARE

Richiede macchine potenti 

Virtualizzazione

19Do

cente: M

arco Sechi

VM 1

VM N

TERM

INAL

 SER

VER

Concentratore

CLIENT TS 1

La virtualizzazione hardware rappresenta il punto di partenza del paradigma applicativo Terminal Server. Le macchine virtuali, invece di essere usate in locale (standalone), vengono messe a disposizione sulla LAN.

CLIENT TS 2

CLIENT TS N

1 A77 …

Videata

Input

Videata virtuale

Videata virtuale

VM 2

Nel Terminal Server il virtualizzatorenon gira più sul nostro computer ma su un sistema centrale che si preoccupa di collegare

le "videate virtuali" di ogni virtual machine (sessioni) con il corrispondente client. Il client a sua volta  invia alla VM associata tutti i comandi acquisiti tramite mouse e tastiera.

Virtualizzazione

20Do

cente: M

arco Sechi

La virtualizzazione hardware allargata ad un contesto WAN (reti geografiche come ad esempio internet) rappresenta la piattaforma di partenza su cui si basa uno dei servizi offerti dal paradigma applicativo del CLOUD: la remotizzazione dell'infrastruttura di rete aziendale.

Virtualizzazione

21Do

cente: M

arco Sechi

L’obiettivo della virtualizzazione software è quello di fornire un linguaggio di sviluppouniversale che sia indipendente dal sistema operativo e dall'hardware utilizzato. Lo strato software che consente la virtualizzazione software è detto framework. Programmi di virtualizzazione software sono Java e Flash.

VIRTUALIZZAZIONE SOFTWARE

Virtualizzazione

22Do

cente: M

arco Sechi

Con la virtualizzazione software l’applicazione viene scritta una sola volta e può essere eseguita su tutte le piattaforme che supportano quel framework in forma nativa (ovvero il virtualizzatore è un eseguibile di quel sistema operativo).

#include <QApplication> #include <QTextEdit>#include <QPushButton>#include <QWidget>#include <QVBoxLayout>

int main(int argc, char *argv[]){

QApplication app(argc, argv);QTextEdit textEdit;QPushButton quitButton("Esci");QVBoxLayout layout;QWidget window;

QObject::connect(&quitButton,SIGNAL(clicked()),&app,SLOT(quit()));

layout.addWidget(&textEdit);layout.addWidget(&quitButton);window.setLayout(&layout);window.show();

return app.exec();}

Apple LinuxWin

Virtualizzazione

23Do

cente: M

arco Sechi

Il concetto di virtualizzazione software può essere applicato anche in ambito WAN. Il browser rappresenta il virtualizzatore software mentre JavaScript, CSS e HTML il suo bitcode. Il browser gestisce il front‐end applicativo mentre un motore applicativo (app engine), presente sulla piattaforma del provider, amministra il back‐end. L'architettura descritta non è altro che l'infrastruttura delle Web Application e del Cloud.

Piattaforma CLOUD

Le funzionalità fornite dal back‐endvengono distribuite ai client tramitegli endpoints che mettono adisposizione le API, richiamabili conuno specifico client code.

Virtualizzazione

24Do

cente: M

arco Sechi

Ogni client (non necessariamente un browser!) richiama con un opportuno client code (Javascript, Java, Object C) le APImesse a disposizione dai cloud endpoints ed accede ai servizi offerti dal back‐end amministrato dall'app‐engine della piattaforma Cloud utilizzata.

CLIENT SERVERAPICODICE CLIENT

SPECIFICO

L'Endpoint genera le API e le librerie client (a partire da un App 

Engine indicato come un backend API) che 

semplificano l'accesso alle risorse disponibili sulla piattaforma.

Virtualizzazione

25Do

cente: M

arco Sechi

Un esempio di virtualizzazione di questo tipo è rappresentato dalle Google MAPS Api.

Il riferimento online relativo alle api messe a disposizione da google è: https://developers.google.com/products/

<html><HEAD><script src="https://maps.googleapis.com/maps/api/js?v=3.exp"></script><script src="googlemaps.js"></script></HEAD><body><div id="map-canvas" style="width: 500px; height:305px; float: left;" class=googlemap></div> </BODY></HTML>

Pagina WEB

Google Maps API

JavaScript Client Code

Google Maps API permettono di personalizzare le informazioni visualizzate sulle mappe di Google.