Sei sulla pagina 1di 22

Elementi di informatica e

Programmazione
Dipartimento di Ingegneria Meccanica e Industriale

Dipartimento di Ingegneria Meccanica e Industriale

Universit degli Studi di Brescia

PROGRAMMAZIONE
Docente: Marco Sechi
E-mail: marco.sechi@unibs.it
Vers. 24/10/2015

Docente: M. Sechi - Elementi di informatica e programmazione Universit degli studi di Brescia

D.I.M.I - A.A. 2015/2016

Dipartimento di Ingegneria Meccanica e Industriale Elementi di informatica e programmazione

Virtualizzazione

Docente: M. Sechi - Elementi di informatica e programmazione Universit degli studi di Brescia

D.I.M.I - A.A. 2015/2016

Dipartimento di Ingegneria Meccanica e Industriale Elementi di informatica e programmazione

Virtualizzazione
Il linguaggio assembly il linguaggio del
microprocessore. Un programma eseguibile
costituito da istruzioni assembly che vengono
interpretate ed eseguite dal microprocessore.
Un programma che stato progettato per
essere eseguito su un determinato hardware
( scritto nellassembly di quel processore!)
non pu girare su un hardware diverso. Per
eseguire un applicativo su diverse piattaforme
hardware necessario svilupparne diverse
versioni, ciascuna specifica per il processore
che dove l'applicazione deve girare.
Questo comporta costi molto 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!

Docente: M. Sechi - Elementi di informatica e programmazione Universit degli studi di Brescia

D.I.M.I - A.A. 2015/2016

Dipartimento di Ingegneria Meccanica e Industriale Elementi di informatica e programmazione

La scrittura dei programmi direttamente in assembly appartiene alle prime


metodologie di sviluppo ed ora poco diffusa. Oggi lassembly utilizzato quando
necessario ottenere applicazioni estremamente veloci oppure nella programmazione
dei microcontrollori (PIC) dove il sistema operativo quasi inesistente o limitato a
poche funzionalit di base.
Docente: M. Sechi - Elementi di informatica e programmazione Universit degli studi di Brescia

D.I.M.I - A.A. 2015/2016

Dipartimento di Ingegneria Meccanica e Industriale Elementi di informatica e programmazione

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 istruzioni anche quando si vuole creare un semplice programma.
Queste difficolt hanno portato alla creazione di linguaggi ad alto livello, che
contrariamente allassembly, risultano umanamente pi comprensibili e compatti (ad
esempio per svolgere unoperazione complessa come lordinamento di una sequenza di
numeri basta richiamare una singola istruzione: sort).
I linguaggi ad alto livello sono incomprensibili per il microprocessore per cui necessario
utilizzare un programma (detto compilatore) che traduca le istruzioni ad alto livello in
assembly (linguaggio a basso livello).

Docente: M. Sechi - Elementi di informatica e programmazione Universit degli studi di Brescia

D.I.M.I - A.A. 2015/2016

Dipartimento di Ingegneria Meccanica e Industriale Elementi di informatica e programmazione

Il sistema operativo gioca un ruolo importante nello sviluppo delle applicazioni. Oltre a
fornire linterfaccia utente/macchina, fornisce una serie di funzionalit che devono
essere presenti nella maggior parte delle applicazioni come ad esempio: luso 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 volta. Questo permette
di semplificare ulteriormente lo sviluppo delle applicazioni.

Docente: M. Sechi - Elementi di informatica e programmazione Universit degli studi di Brescia

D.I.M.I - A.A. 2015/2016

Dipartimento di Ingegneria Meccanica e Industriale Elementi di informatica e programmazione

Le API svolgono un ulteriore funzione: filtrano gli accessi alle risorse hardware. Pi il
sistema operativo nasconde alle applicazioni il livello fisico (impedendo qualsiasi accesso
diretto allhardware) maggiore il livello di sicurezza ottenuto. Le API controllano luso
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 lattivit di input dellutente) sar
invisibile al sistema operativo quando comunica direttamente con il livello hardware. Per
bypassare le protezioni del sistema operativo unapplicazione spia deve necessariamente
avviarsi prima del boot del sistema operativo e modificarne le procedure di sicurezza.
Docente: M. Sechi - Elementi di informatica e programmazione Universit degli studi di Brescia

D.I.M.I - A.A. 2015/2016

Dipartimento di Ingegneria Meccanica e Industriale Elementi di informatica e programmazione

Le applicazioni che utilizzano le API di un sistema operativo restano comunque scritte in


linguaggio assembly. Le chiamate alle API rendono le applicazioni incompatibili su sistemi
operativi differenti anche quando lhardware utilizzato lo stesso. Ad esempio i sistemi
operativi MAC OS e Windows girano sullo stesso hardware Intel ma le loro applicazioni
native 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 di aggirare questo problema.
Virtualizzando possibile scrivere unapplicazione solo una volta ed eseguirla poi su tutti
i sistemi operativi richiesti.
Docente: M. Sechi - Elementi di informatica e programmazione Universit degli studi di Brescia

D.I.M.I - A.A. 2015/2016

VIRTUALIZZAZIONE HARDWARE

Dipartimento di Ingegneria Meccanica e Industriale Elementi di informatica e programmazione

Nella virtualizzazione hardware particolari software emulano le componenti fisiche di un


computer creando di fatto un pc virtuale (Virtual Machine) allinterno 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.

Docente: M. Sechi - Elementi di informatica e programmazione Universit degli studi di Brescia

D.I.M.I - A.A. 2015/2016

Dipartimento di Ingegneria Meccanica e Industriale Elementi di informatica e programmazione

Il software di virtualizzazione hardware ha nel suo pannello di gestione l'elenco delle


macchine virtuali disponibili e che possono essere avviate quando necessario.

Docente: M. Sechi - Elementi di informatica e programmazione Universit degli studi di Brescia

D.I.M.I - A.A. 2015/2016

Dipartimento di Ingegneria Meccanica e Industriale Elementi di informatica e programmazione

In pratica la virtualizzazione hardware crea all'interno del nostro pc diverse finestre


applicative nelle quali vengono eseguiti veri e propri sistemi operativi

Docente: M. Sechi - Elementi di informatica e programmazione Universit degli studi di Brescia

D.I.M.I - A.A. 2015/2016

Dipartimento di Ingegneria Meccanica e Industriale Elementi di informatica e programmazione

Il software di virtualizzazione pu integrarsi fortemente


con il sistema operativo ospitante (OS Host) fino a
mostrare le applicazioni di altri sistemi operativi come
se fossero applicazioni native del nostro sistema. In
questo caso le applicazioni non vengono eseguite
all'interno di una finestra dove evidente che sta
girando un altro sistema operativo (OS Guest).

Il livello di
integrazione tale
che l'utente non si
rende neppure conto
del meccanismo di
virtualizzazione che
sta utilizzando.

Docente: M. Sechi - Elementi di informatica e programmazione Universit degli studi di Brescia

D.I.M.I - A.A. 2015/2016

Dipartimento di Ingegneria Meccanica e Industriale Elementi di informatica e programmazione

Esempi di Virtualizzatori Hardware sono:


QEmu, Virtual Box, Microsoft Virtual PC, Parallel Desktop (Mac) e VMWare.

https://www.virtualbox.org/

http://www.vmware.com

http://www.qemu.org
http://www.parallels.com/
Obsoleto!
https://www.microsoft.com/it-it/download/details.aspx?id=4580

Docente: M. Sechi - Elementi di informatica e programmazione Universit degli studi di Brescia

D.I.M.I - A.A. 2015/2016

Dipartimento di Ingegneria Meccanica e Industriale Elementi di informatica e programmazione

La preparazione di una macchina


virtuale consiste nell'avviare sul
proprio pc l'applicazione di
virtualizzazione.
Per utilizzare il PC virtuale
necessario installare il sistema
operativo altrimenti all'avvio della
virtual machine otteniamo un
messaggio di halt.

E' necessario quindi procedere con l'installazione del Sistema Operativo utilizzando il set di
DVD appropriato.

Docente: M. Sechi - Elementi di informatica e programmazione Universit degli studi di Brescia

D.I.M.I - A.A. 2015/2016

Videata

CLIENT TS 1

Input

VM 1

1 A77

TERMINAL SERVER

CLIENT TS 2
VM 2

VM N
Videata virtuale

Concentratore
CLIENT TS N

VIRTUALIZATION
LAYER

La virtualizzazione hardware, portata dall'ambito standalone ad un contesto di LAN (rete


locale), costituisce la base del funzionamento del paradigma applicativo Terminal Server. Nei
TS la "macchina virtuale" non gira pi sul nostro computer ma su un sistema centrale che si
preoccupa di distribuire le singole "videate" (sessioni) ai client collegati i quali inviano alla
corrispondente macchina virtuale (VM) i dati di input acquisiti tramite mouse e tastiera.

Dipartimento di Ingegneria Meccanica e Industriale Elementi di informatica e programmazione

La virtualizzazione
hardware estesa
dall'ambito standalone ad
un contesto di WAN (reti
geografiche, ad esempio
internet) costituisce il
punto di partenza di uno
dei servizi offerti dal
paradigma applicativo del
CLOUD.

Docente: M. Sechi - Elementi di informatica e programmazione Universit degli studi di Brescia

D.I.M.I - A.A. 2015/2016

La Virtualizzazione Hardware riproduce via software tutte le componenti fisiche


di un computer: ram, cpu, disco fisso, etc. Il virtualizzatore salva in un file, sul
sistema host il contenuto del disco virtuale utilizzato dalla Virtual Machine.

Dipartimento di Ingegneria Meccanica e Industriale Elementi di informatica e programmazione

VANTAGGI VIRTUALIZZAZIONE HARDWARE


Posso utilizzare la virtual machine come
sistema di test per 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 fisso del
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 sistemi operativi senza dover apportare modifiche al software
originale.
Come gi indicato la virtualizzazione hardware l'elemento base del Terminal Server
SVANTAGGI VIRTUALIZZAZIONE HARDWARE
Richiede macchine potenti
Docente: M. Sechi - Elementi di informatica e programmazione Universit degli studi di Brescia

D.I.M.I - A.A. 2015/2016

VIRTUALIZZAZIONE SOFTWARE

Dipartimento di Ingegneria Meccanica e Industriale Elementi di informatica e programmazione

Lobiettivo della virtualizzazione software quello di fornire un linguaggio di sviluppo


(programmazione) universale che sia indipendente dal sistema operativo utilizzato. Lo strato
software che consente la virtualizzazione software detto framework. Programmi di
virtualizzazione software sono Java e Flash.

Docente: M. Sechi - Elementi di informatica e programmazione Universit degli studi di Brescia

D.I.M.I - A.A. 2015/2016

Dipartimento di Ingegneria Meccanica e Industriale Elementi di informatica e programmazione

#include
#include
#include
#include
#include

<QApplication>
<QTextEdit>
<QPushButton>
<QWidget>
<QVBoxLayout>

Con la virtualizzazione software


lapplicazione viene scritta una sola
volta ed eseguita su tutti i sistemi
operativi che supportano tale
framework.

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();
}

Win

Apple

Docente: M. Sechi - Elementi di informatica e programmazione Universit degli studi di Brescia

Linux

D.I.M.I - A.A. 2015/2016

Dipartimento di Ingegneria Meccanica e Industriale Elementi di informatica e programmazione

Il concetto di virtualizzazione software pu essere esteso anche in ambito WAN. Otteniamo in


questo caso l'infrastruttura portante delle Web Application e del Cloud. I Browser, tramite
JavaScript, CSS e HTML diventano i virtualizzatori software che gestiscono il front-end
applicativo. Il back-end gira invece su istanze del motore applicativo (app engine) fornite dalla
piattaforma del provider.

Piattaforma CLOUD

Le funzionalit fornite dal back-end


vengono rese disponibili ai client
tramite l'Endpoints che mette a
disposizione le API che i client possono
richiamare all'interno del loro codice
(client code).
Docente: M. Sechi - Elementi di informatica e programmazione Universit degli studi di Brescia

D.I.M.I - A.A. 2015/2016

Dipartimento di Ingegneria Meccanica e Industriale Elementi di informatica e programmazione

Ogni client (che potrebbe anche non essere un browser!) comunica, utilizzando un
opportuno client code (Javascript, Java, Object C), con il back-end (che gira sul app-engine
della piattaforma Cloud utilizzata) tramite le API rese disponibili dai cloud endpoints.
CODICE
CLIENT
API
SERVER
CLIENT
SPECIFICO

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.

Docente: M. Sechi - Elementi di informatica e programmazione Universit degli studi di Brescia

D.I.M.I - A.A. 2015/2016

Dipartimento di Ingegneria Meccanica e Industriale Elementi di informatica e programmazione

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

Google Maps API


Google Maps API permettono di
personalizzare le informazioni
visualizzate sulle mappe di Google.
Pagina WEB
<html>
JavaScript
Client
Code
<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>
Riferimento alle api disponibili su google: https://developers.google.com/products/

Docente: M. Sechi - Elementi di informatica e programmazione Universit degli studi di Brescia

D.I.M.I - A.A. 2015/2016