Virtualizzazione dei Sistemi metodologie, progetto e utilizzo

Slides:



Advertisements
Presentazioni simili
Massa Laura Mela Enrica
Advertisements

Generalità Linguaggio e Macchina Astratta
Introduzione Laboratorio di Calcolo Corso di Laurea in Fisica Università degli Studi di Roma “La Sapienza”
L’esecuzione dei programmi
LA MEMORIA CENTRALE. La memoria nella struttura generale del calcolatore MEMORIA CONTROLLO INGRESSO E USCITA ARITMETICA E LOGICA CPU Dispositivi esterni.
IL PROCESSORE I MICROPROCESSORI INTEL Il microprocessore è un circuito integrato dotato di una struttura circuitale in grado di effettuare un determinato.
D. Talia - UNICAL 1. 1 Sistemi Operativi Domenico Talia Facoltà di Ingegneria Università della Calabria.
Giuditta Cantoni, 4 E S.I.A I DATABASE. Definizione databese In informatica, il termine database, banca dati o base di dati (a volte abbreviato con il.
Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica FONDAMENTI DI INFORMATICA Domenico Talia
Corso di Alta formazione in TL&OS Modulo 1.3 Reti e Servizi - lezione 1 Modulo 1.3 Reti e servizi 1. Introduzione al Networking Connettere il PC in rete;
E’ costituita da due blocchi:  Interfaccia di rete  Blocco di simulazione L’ interfaccia di rete fornisce il collegamento elettrico con la rete sotto.
IL SISTEMA OPERATIVO (seconda parte) PROGRAMMI UTENTE INTERPRETE COMANDI FILE SYSTEM GESTIONE DELLE PERIFERICHE GESTIONE DELLA MEMORIA GESTIONE DEI PROCESSI.
Elementi fondamentali dell’ Architettura di di un elaboratore elettronico.
Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica PROBLEMI E ALGORITMI LINGUAGGIO MACCHINA.
Corso di Elementi di Informatica
Ereditarietà Uno dei principi della programmazione orientata agli oggetti (OOP) è il riuso Le classi dovrebbero essere progettate come componenti riutilizzabili.
Introduzione alla programmazione MIDI
© 2007 SEI-Società Editrice Internazionale, Apogeo
Alcune note, dalla rete, sui Sistemi cellulari
Java World Introduzione.
Scopo delle Moderne MV per HLL
Il Sistema Operativo Gestione dei Processi
Prova d’Esame: selezione di domande
Architettura e funzionalità
Rielaborato da Atzeni et al., Basi di dati, Mc-Graw Hill
Il Sistema Operativo Programmazione Concorrente
Dal problema al processo risolutivo
Generazione di codice dinamico per la realizzazione di catene di servizi componibili Matteo Fazi – matr
Breve report su corso RedHat Enterprise Virtualization (RH318)
Programmazione per la Musica | Adriano Baratè
Sistema di Analisi e di Acquisizione
Microcontrollori e microprocessori
I microprocessori Il microprocessore è un circuito integrato costituito da silicio. Il microprocessore svolge fondamentalmente due funzioni: sovraintende.
Dal problema al processo risolutivo
Introduzione alle griglie computazionali
STRUTTURA GENERALE DI UN ELABORATORE
* Il Sistema Operativo GNU/Linux * Sistema Operativo e Applicazioni
Introduzione I microcontrollori.
UML Creato da: Enrico Tarantino Alessandro Vilucchi Roberta Barcella.
Programmazione ad Oggetti per la Fisica
analizzatore di protocollo
Virtualizzazione desktop e server
Corso di Ingegneria del Web A A Domenico Rosaci 1
MODULO 1 – Computer essentials
Corso Java Introduzione.
Introduzione L’8254 è un interval timer event/counter, progettato per risolvere i problemi del controllo del timing, comuni ad ogni microcomputer. E’ costituito.
Controllo e microprogrammazione
Introduzione alle basi di dati
Processi e Thread Meccanismi di IPC (1).
OBJECT ORIENTED DATABASE
Programmare.
Azione delle istruzioni
ADO Per gestire i database con tecnologia ASP si utilizzano strumenti ADO (ActiveX Data Objects): un'architettura che fornisce oggetti.
Scheduling in Linux (Kernel 2.4 e 2.6)
© 2007 SEI-Società Editrice Internazionale, Apogeo
Definizione di linguaggio di programmazione
APPUNTI SUL LINGUAGGIO C
Azione delle istruzioni
La struttura dei primi programma in C
Programmazione e Laboratorio di Programmazione
Corso Java – Intoduzione
Java Introduzione.
Programmazione e Laboratorio di Programmazione
Introduzione ai DBMS I Sistemi di Gestione di Basi di Dati sono strumenti software evoluti per la gestione di grandi masse di dati residenti su memoria.
Relazioni tra CPU e Memoria e Dispositivi I/O
Algoritmi.
Semantica operazionale:
CLOUD.
Transcript della presentazione:

Virtualizzazione dei Sistemi metodologie, progetto e utilizzo Docente: Eugenia Occhiuto occhiuto@di.unipi.it www.di.unipi.it/~occhiuto Ricevimento studenti: Lun. 11-13, Dipartimento di Informatica, Stanza 356

Prerequisiti e modalità d’esame Programmazione con paradigmi imperativo e object oriented. Il linguaggio Java. Architettture dei calcolatori: concetti di base Sistemi operativi: concetti di base Modalità d’esame: orale, preparazione di un piccolo progetto in bytecode, utilizzando l’assembler Oolong.

Programma del corso (segue) Introduzione ai concetti di base : Concetto di macchina macchina fisica, macchina virtuale, astrazione interfacce I vantaggi della virtualizzazione : l’indipendenza dalla piattaforma, la portabilità, la robustezza, affidabilità e la protezione del software.

Programma del corso (segue) Ambiti e le tipologie di machine virtuali: process virtual machines: stesso ISA: sistemi multiprogrammatie ottimizzatori binari dinamici diverso ISA: traduttori dinamici, macchine ad alto livello system virtual machines: stesso ISA: macchine virtuali di sistema classiche, macchine virtuali ospitate diverso ISA: macchine virtuali di sistema complete, macchine virtuali coprogettate.

Programma del corso (segue) high level language virtual machines (HHL VMs). Pascal P-code VM, JVM: caratteristiche implementazione, scrittura di progammi in byte code utilizzando l’assembler Oolong per la traduzione in byte code CLI VM.

Testi di riferimento Virtual Machines, Versatile Platforms for System and Processes, J.E.Smith and R. Nair, Morgan Kaufmann Pub. Elsevier, ISBN-13: 978-1-55860-910-5, ISBN-10:55860-910-5. (Cap. 1, 5,6) Programming for the JVM, J. Engel, Addison Wesley, 1999, ISBN 0-201-30972-6. Java Virtual Machine specifications, T. Lindholm and F. Yellin, Addison Wesley, 1996, ISBN0-201-63452-X

Gestione della complessità Un moderno computer è una macchina molto complessa: hardware: molti chips contenenti un’enorme quantità (108) di transistor, più dispositivi di I/O, e di telecomuncazione, formano la piattaforma per il software software: S.O., software per la grafica e la connessione di rete, tutto ha lo scopo di fornire un ambiente potente e di facile utilizzo per ogni tipo di applicazione (gestione dei dati, comunicazione, intrattenimento, ecc) Una tale complessità si gestisce solo definendo molti: Livelli di astrazione separati by interfaces ben definite

Astrazione Un livello di astrazione permette di mascondere i dettagli implementativi di una o più componenti semplificando il loro uso a livello più alto. I livelli di astrazione sono organizzati in gerarchie: i livelli più bassi sono implementati in hardware (componeneti fisich econ interfacce interfaces che consentono le connessioni fisiche), i livelli più alti sono implementati in software (componenti logiche con interfacce molto più flessibili).

Interfacce Le interfacce consentono di separare i livelli di astrazione e costituiscono la connessione tra i due livelli. Per esempio il linguaggio macchina (ISA, Instruction Set Architecture) è l’interfaccia tra hardware e software. La specifica dell’ISA è fondamentale affinchè la macchina esegua calcoli correttamente. Essa è necessaria per chi realizza l’hardware perchè ne devono fornire l’implementazione. È necessaria per chi gli sviluppatori del software che devono realizzare i compilatori per i linguaggi ad alto livello.

Definizione Una macchina fisica (computer) è costituita dall’ hardware e dal linguaggio (ISA) che permette di specificare la funzioe da calcolare e i dati che devono essere usati per la computazione. Una macchina virtuale è l’insieme dei programmi (software) che simulano il comportamento di una macchina che è diversa dalla macchina fisica su cui il software è eseguito.

Definizioni Una piattaforma di computazione (computing platform) include un’architettura hardware and a software framework (includente frameworks per varie appliacazioi), dove the combinazione permette al software, particularly al software applicativo , di essere eseguito. macchina  piattaforma (machine  platform)

Virtualizzazione La Virtualizzazione: è un isomorphism V tra un sistema ospitato (guest) e un sistema ospitante (host) : Si, Sj sono stati, e,e’ sono sequenze di operazioni. SSi SSj e(Si) V(Si) V(Sj) SS’i SS’j e’(S’i) guest host

Astrazione L’Astrazione: è (anch’essa) un isomorfismo A tra due sistemi, che però nasconde dei dettagli (ovvero semplifica) mentre la virtualizzazione non necessariamente SSi SSj e(Si) A(Si) A(Sj) SS’i SS’j e’(S’i)

Virtualization versus Abstraction La virtualizzazione serve per emulare una diversa piattaforma o parti di essa, per rendere la piattaforma host compatibile con applicazioni che sono state sviluppate per una piattaforma diversa. Inizialmente le macchine virtuali emulano macchine fisiche reali. Successivamente vengono costruite macchine virtuali che emulano macchine inventate utili per implementare linguaggi ad es. JVM L’astrazione serve per semplificare e descrivere in sintesi ad es. La descrizione dell’Architettura di un calcolatore e` un’astrazione della macchina che e` una sua implementazione

Computer System Architecture Hardware Application Programs Libraries Operating System Execution Hardware MeMemory Translation bus Controllers I/O Devices and Networking 13 11 Main Memory 14 10 9 8 7 Drivers Memory Management Scheduler 4 3 1 2 5 6 Software ISA

Definizioni: ISA, ABI, OS L’ ISA è l’Instruction Set Architecture. Essa è il linguaggio macchina che comprende le istruzioni eseguibili dai normali processi (7) e le istruzioni privilegiate o di sistema . Le istruzioni di sistema permettono di gestire : I/O, Memoria, Scheduler, interrupt? (8) Il S.O. permette di eseguire chiamate di funzioni per function calls for: I/O, memory, processes (nascondendo così le istruzioni di sistema) (3) L’interfaccia binaria delle applicazioni (ABI) contiene le interfacce (3) e (7)

Machine interfaces Application software Application software Machine ISA system calls Machine Operating System ABI user ISA system ISA user ISA

Una macchina dal punto di vista dei processi Dal punto di vista dei processi (generati ad esempio da un programa utente) una macchina consiste di uno spazio logico di indirizzi di memoria, di registri per l’utente, e di istruzioni. Le chiamate di Sistema O, (spesso attraverso librerie) permettono di eseguire I/O (e altre) operazioni di sistema. Di solito i processi hanno un inizio e una fine. L’interazione, in questo caso avvine al livello della Interfaccia Binaria di Applicazione (ABI).

Una macchina dal punto di vista del Sistema Operativo Dal punto di vista del Sistema Operativo la macchina l’intera piattaforma che supporta diversi processi che condividono un file system e le risorse di I/O e comunicano attraverso chiamate di S.O. L’ambiente di sistema è persistente )con occasionali reboots) In questo caso l’interazione avviene al livello dell’Instruction Set Architecture (ISA).

Process Virtual Machine Application process Guest Virtualizing software Runtime Operating System Virtual machine Host Hardware

System Virtual Machine Application process Guest Operating System Virtualizing software VMM Virtual machine Hardware Host

System Virtual Machine supporting multiples OS environments IA-32 Windows Applications Windows Linux Applications Linux VMM

Diversi classi di Macchine Virtuali Macchine virtuali di processo stesso ISA Multiprogrammed Systems, di solito sistemi che supportano processi multi utente. Ogni processo viene eseguito come se la macchina fosse completamente dedicata. Ottimizzatori binari dinamici (traduttori dinamici conlo stesso ISA) ISA differenti Traduttori dinamici: emulazione di un diverso ISA (di solito l’ISA utente) Macchine Virtuali ad alto livello (JVM, CLI Vm)

Un esempio di traduttore Dinamico: Digital FX!32 IA32 Windows Application Alpha ISA La MV emula un diverso target user ISA. In questo caso guest e host condividono lo stesso SO. Di solito, l’implementazione dell’emulazione avviene attraverso l’interpretazione. Windows O.S PVM

Interpretazione contro Traduzione Interpretazione: ciascuna istruzione è reperita (fetched), (decoded) decodificata ed emulata. È piuttosto inefficiente ma facile da realizzare ed ha un basso costo di start up. Traduzione: richiede pìu tempo ma il codice tradotto è più efficiente. Blocchi di codice sorgente possono essere convertiti in codice target e ottimizzati. Techniques di profiling: mischiano interpretazione e traduzione, controllando quali blocchi di istruzioni vengono eseguiti frequentemente. Tali blocchi vengono tradotti e and ottimizzati (possibilmente) incrementalmente, mentre il programma viene eseguito.

MV per Linguaggi ad alto livello Sono progettate per l’implementazione di un particolare languaggio Conventional system HLL VM environment High level program Intermediate code Object code Memory image Loader High level program Portable code Virtual Memory Image Host instructions Compiler VM loader VM interpreter/compiler Compiler frontend Compiler backend

Diferenti classi di Macchine Virtuali Macchine virtuali di sistema stesso ISA Classic-System VMs, Hosted VMs differente ISA Whole-System VMs Codesigned VMs Il problema principale è la condivisione delle risorse.

Macchine Virtuali di sistema (stesso ISA) Dal punto di vista dell’utente sono tutte molto simili. Differiscono sull’implementazione, due possibilità: VM implementate sull’hardware: massimi privilegi. Tutti i sistemi ospitati (guests) sono implementati sulla VMM. Nessuno ha i privilegi diritti emulazione: c’è un solo S.O privilegiato gli altri sistemi (applicazioni e S.O.) sono emulati (possibili varie tecniche) VMM= Virtual Machine Monitor sta per il software di virtualizzazione

Classic (old) System Virtual Machine supporting multiples users Hardware Appl.s O.S. VMM .... User1 User2 Userk Usually the S.O. è unico: è solo un modo di implementare time sharing..

System Virtual Machine supporting multiples OS environments IA-32 Windows Applications Windows Linux Applications Linux VMM Nowadays servers implementation use such strategy mainly for security reasons.

System Virtual Machine: emulation Windows Applications Windows PowerPC Mac Applications Mac OS VM

Implementazione diretta contro emulazione Implementazione direct: efficienza rigidità: necessità di iniziare da zero per istallare una nuova W(whole-system)VM Emulazione: inefficienza flessibilità: possibilità di aggiungere la WVM, e dispositivi di I/O più tardi

Codesigned Virtual Machines L’obiettivo è l’ottimizzazione dell’hardware Differenti ISA or ISA modificati (alcune istruzioni sono aggiunte o cancellate) La MV traduce il codice binario del software (S.O. e appl.) nel diverso ISA. Tale traduzione è assolutamente trasparente (spesso utilizza una zona di memoria invisibile (ricavata nella memoria reale) al software ospitato Simile alla virtualizzazione dell’hardware (Non trattiamo queste MV)

High level language VM High Level language VMs permettono di implementare un linguaggio ad alto livello su diverse piattaforme: L’ISA viene progettato per adattarsi alle caratteristiche del linguaggio che si vuole implementare e efficientemente implementate su ciascuna piattaforma. L’implementazione della MV è dipendente dalla piattaforma e consentendo un’efficiente implementazione. Il frontend del compilatore è indipendente dalla piattaforma: portabilità.

HLL VM: ISA portabile Il frontend del compilatore produce un programma in codice portabile , detto V-ISA V-ISA e un languaggio intermedio che non contiene solo istruzioni ma anche meta dati (strutturati) che caratterizzano il languaggio Quali metadati il languaggio (V-ISA) fornisca depende dalle caratteristiche del linguaggio(HL) di interesse

High Level Language VM Sono progettate per l’ implementazione di uno specifico language Conventional system HLL VM environment High level program Intermediate code Object code Memory image Loader High level program Portable code Virtual Memory Image Host instructions Compiler VM loader VM interpreter/compiler Compiler frontend Compiler backend

Pascal P-code VM Pascal program Compiler P- code VM Library routines Host instructions Compiler VM Library routines readln() writeln() VM interpreter/compiler

Caratteristiche della P-Code VM comuni a tutte le HLL VMs È una macchina a stack : minima quantità di registri i binari sono di dimensioni contenute (importante per HD di capacità ridotta) la memoria è divisa in celle i cui dettagli d’implementazione (num. di bit ecc.) è nascosta la memoria è organizzata in stack e heap le cui dimensioni non sono una proprietà dell’ architettura ma dependono dalla piattforma. nessun indirizzo è assoluto (solo offsets da elementi nello stack) l’interfacciamento con il SO avviene attraverso librarie standard, al fine di isolare i programmi dal SO. Indipendenza dalla piattaforma contro librarie sofisticate / potenti.

Architettura di Memoria della P-Code Area di memoria del programma Area dati: area delle costanti: operandi immediati heap: memoria allocata dinamicamente (in pascal usando new). Lo heap persiste durante tutta l’esecuzione del programma e i dati in esso memorizzati sono condivisi dalle procedure e funzioni. stack: quando una procedura viene eseguita, le viene assegnata un nuovo frame sullo stack (porzione di stack) che esiste solo durante l’invocazione della procedura .: regione a dimensione fissa: markstack regione a dimensione variabile: locali, argomenti, operandi

Struttura di un frame dello stack (regione di dimensione fissata) Mark stack: permette di ripristinare lo stato quando la procedura(/funzione) termina la sua esecuzione: valore della funzione: valore calcolato se esiste link statico: link a constanti definite in procedure in cui la corrente procedura è annidata link dinamico: valore MP del precedente stack frame precedente valore EP “ “ “ “ indirizzo di ritorno: PC dell’istruzione che deve essere eseguita quando la procedura termina

Frame dello Stack (regione di dimensione variabile) parametri: valori dei parametri attuali locali: variabili dichiarate nella procedura stack degli operandi: lo stack è usato per la computazione quando la procedura è eseguita. SP punta al top dello stack. Cresce restando minore del valore EP

P-code V-ISA memory architecture: data area MP function value stack frame MP static link stack frame EP dynamic link mark stack previous EP return address NP parameters heap locals SP operand stack constant area EP

P-Code Memory Architecture: pointers PC: program counter punta alla prossima istruzione (nell’area del programma) MP: Mark Pointer punta all’inizio dello frame della procedura attualmente attiva EP: Extent Pointer punta alla fine del frame corrente dello stack SP: Stack Pointer punta all’attuale top dello stack degli operandi. Se SP=EP failure! memoria insufficiente NP: New Pointer punta all’indirizzo di massima estensione dello heap. Se EP=NP failure! memoria insufficiente

Insieme delle Istruzioni della P-Code load: memorizzazione dell’operando sul top dello stack store trascrizione in memoria del resultato che si trova sullo stack operazioni sugli elementi che si trovano sullo stack (top e precedenti) C’è anche un concetto di tipo abbastanza semplice: integer, real, Boolean, char, set, pointers. Il codice operativo (opcode) è diverso a seconda del tipo degli operandi (addi somma interi, addr somma reali, ecc.)

Insieme delle Istruzioni della P-Code Le istruzioni base includono: lodi 0 5 carica sullo stack la variable in 5a posizione dal MP ldci 1 carica sullo stack la costante 1 stri 0 5 memorizza il top dello stack nella locazione in 5a posizione da MP addi somma i due elementi sullo stack (il top e quello subito precedente) e lascia il resultato sullo stack