La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Virtualizzazione dei Sistemi metodologie, progetto e utilizzo

Presentazioni simili


Presentazione sul tema: "Virtualizzazione dei Sistemi metodologie, progetto e utilizzo"— Transcript della presentazione:

1 Virtualizzazione dei Sistemi metodologie, progetto e utilizzo
Docente: Eugenia Occhiuto Ricevimento studenti: Lun , Dipartimento di Informatica, Stanza 356

2 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.

3 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.

4 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.

5 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.

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

7 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

8 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).

9 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.

10 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.

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

12 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

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

14 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

15 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

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

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

18 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).

19 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).

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

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

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

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

24 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

25 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.

26 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

27 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.

28 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

29 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..

30 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.

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

32 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

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

34 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à.

35 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

36 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

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

38 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.

39 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

40 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

41 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

42 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

43 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

44 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.)

45 Insieme delle Istruzioni della P-Code
Le istruzioni base includono: lodi 0 5 carica sullo stack la variable in a 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


Scaricare ppt "Virtualizzazione dei Sistemi metodologie, progetto e utilizzo"

Presentazioni simili


Annunci Google