Università degli Studi di Roma Tor Vergata Facoltà di Ingegneria

Documenti analoghi
27/03/2013. Contenuti

Architetture software. Virtualizzazione

Processi nei Sistemi Distribuiti

Università degli Studi di Roma Tor Vergata Facoltà di Ingegneria

Architettura di un sistema operativo

Università degli Studi di Roma Tor Vergata Facoltà di Ingegneria

Introduzione alla Virtualizzazione

Approccio stratificato

Virtualizzazione e Macchine Virtuali

Protezione del Kernel Tramite Macchine Virtuali

Lezione 4 La Struttura dei Sistemi Operativi. Introduzione

La gestione di un calcolatore. Sistemi Operativi primo modulo Introduzione. Sistema operativo (2) Sistema operativo (1)

Processi nei Sistemi Distribuiti

Il Sistema Operativo. C. Marrocco. Università degli Studi di Cassino

Università degli Studi di Roma Tor Vergata Dipartimento di Ingegneria Civile e Ingegneria Informatica

Il Sistema Operativo (1)

Comunicazione tra Processi

Comunicazione tra Processi

Computazione multi-processo. Condivisione, Comunicazione e Sincronizzazione dei Processi. Segnali. Processi e Threads Pt. 2

I Thread. I Thread. I due processi dovrebbero lavorare sullo stesso testo

Pronto Esecuzione Attesa Terminazione

Definizione Parte del software che gestisce I programmi applicativi L interfaccia tra il calcolatore e i programmi applicativi Le funzionalità di base

Macchine Virtuali. Docente: Fabio Tordini

Introduzione alle applicazioni di rete

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione.

Scheduling della CPU. Sistemi multiprocessori e real time Metodi di valutazione Esempi: Solaris 2 Windows 2000 Linux

Creare una Rete Locale Lezione n. 1

Architetture Applicative

SISTEMI OPERATIVI DISTRIBUITI

Comunicazione tra Computer. Protocolli. Astrazione di Sottosistema di Comunicazione. Modello di un Sottosistema di Comunicazione

La Gestione delle risorse Renato Agati

Sistemi Operativi. Processi GESTIONE DEI PROCESSI. Concetto di Processo. Scheduling di Processi. Operazioni su Processi. Processi Cooperanti

PROPOSTA DI UN ARCHITETTURA IMS INTEGRATA IN UN AMBIENTE VIRTUALIZZATO: ANALISI DI PRESTAZIONI Daniele Costarella

Sistemi operativi e reti A.A Lezione 2

VIRTUALIZZAZIONE LUG - CREMONA. Linux Day - 25 Ottobre 2008

Sistemi Operativi STRUTTURA DEI SISTEMI OPERATIVI 3.1. Sistemi Operativi. D. Talia - UNICAL

Introduzione al sistema operativo. Laboratorio Software C. Brandolese

Linux Virtuale Linux Virtuale

Potenza Elaborativa, Sistemi Operativi e Virtualizzazione

Introduzione alle tecnologie informatiche. Strumenti mentali per il futuro

VMware. Gestione dello shutdown con UPS MetaSystem

The Onion PC. Virtualizzazione strato dopo strato

Linux nel calcolo distribuito

INFORMATICA. Il Sistema Operativo. di Roberta Molinari

C Cloud computing Cloud storage. Prof. Maurizio Naldi

Fisciano, 24 ottobre 2008

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. D. Talia - UNICAL. Sistemi Operativi 9.1

Capitolo 5: I thread

La virtualizzazione ed i suoi aspetti di sicurezza. Sergio Sagliocco Responsabile SecureLAB Direzione R&D CSP

SISTEMI OPERATIVI THREAD. Giorgio Giacinto Sistemi Opera=vi

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena

Virtualizzazione con KVM. Reggio Emilia - Linux Day 2014 Stefano Strozzi KVM

Dr. Andrea Niri aka AndydnA ANDYDNA.NET S.r.l.

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

L API socket ed i daemon

Il sistema operativo TinyOS

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

SISTEMI OPERATIVI. Prof. Enrico Terrone A. S: 2008/09

Sistemi Operativi. Conclusioni e nuove frontiere

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. Implementazione del File System. Struttura del File System. Implementazione

Progetto di Applicazioni Software

ANALISI DELLE TECNOLOGIE INTEL-VT E AMD-V A SUPPORTO DELLA VIRTUALIZZAZIONE DELL'HARDWARE

Progetto di Applicazioni Software

Evoluzione dei sistemi operativi (5) Evoluzione dei sistemi operativi (4) Classificazione dei sistemi operativi

2. VIRTUALIZZAZIONE MEDIANTE PARTIZIONAMENTO

Introduzione ai sistemi operativi

Il sistema di I/O. Hardware di I/O Interfacce di I/O Software di I/O. Introduzione

IT Cloud Service. Semplice - accessibile - sicuro - economico

Premessa Le indicazioni seguenti sono parzialmente tratte da Wikipedia ( e da un tutorial di Pierlauro Sciarelli su comefare.

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

1 Processo, risorsa, richiesta, assegnazione 2 Concorrenza 3 Grafo di Holt 4 Thread 5 Sincronizzazione tra processi

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Sistemi Operativi GESTIONE DELLA MEMORIA CENTRALE. D. Talia - UNICAL. Sistemi Operativi 6.1

I sistemi virtuali nella PA. Il caso della Biblioteca del Consiglio Regionale della Puglia

ASPETTI GENERALI DI LINUX. Parte 2 Struttura interna del sistema LINUX

Telematica II 17. Esercitazione/Laboratorio 6

Reti di Telecomunicazione Lezione 6

Architetture Informatiche. Dal Mainframe al Personal Computer

Progetto Virtualizzazione

SISTEMI E RETI. Crittografia. Sistemi distribuiti e configurazione architetturale delle applicazioni WEB.

Corso di Informatica

Il Sistema Operativo. Di cosa parleremo? Come si esegue un programma. La nozione di processo. Il sistema operativo

SDD System design document

Introduzione ai Sistemi Operativi

Infrastrutture Software

Processi e Concorrenza nei Sistemi Distribuiti

Hardware delle reti LAN

Sistemi Operativi II Corso di Laurea in Ingegneria Informatica

Input/Output. Moduli di Input/ Output. gestiscono quantità di dati differenti a velocità diverse in formati diversi. n Grande varietà di periferiche

Virtualization. Strutturare per semplificare la gestione. ICT Information & Communication Technology

Organizzazione Monolitica

Architettura di un sistema operativo

Architetture Informatiche. Dal Mainframe al Personal Computer

Protezione. Protezione. Protezione. Obiettivi della protezione

Il Sistema Operativo

Introduzione alla Progettazione per Componenti

VIRTUALIZZAZIONE. Docente: Marco Sechi Modulo 1

STRUTTURE DEI SISTEMI DI CALCOLO

Sistema Operativo. Fondamenti di Informatica 1. Il Sistema Operativo

Transcript:

Università degli Studi di Roma Tor Vergata Facoltà di Ingegneria Un sistema software distribuito è composto da un insieme di processi in esecuzione su più nodi del sistema Un algoritmo distribuito può essere definito come un insieme {P 1, P 2,, P n } dove P i è un processo I processi possono comunicare, sincronizzarsi e cooperare con le stesse modalità sia se sono in esecuzione su nodi remoti, sia sullo stesso nodo Valeria Cardellini - SD A.A. 2010/11 2

Costruire processori virtuali a livello software, al di sopra dei processori fisici Processore: fornisce un insieme di istruzioni, con la capacità di eseguire una sequenza di queste istruzioni Thread: processore software minimale nel cui contesto può essere eseguita una sequenza di istruzioni Eseguire un thread: eseguire una sequenza di istruzioni nel contesto di quel thread Salvare il contesto del thread: interrompere l esecuzione corrente e salvare tutti i dati necessari a continuarne l esecuzione successivamente Processo: processore software nel cui contesto possono essere eseguiti uno o più thread Valeria Cardellini - SD A.A. 2010/11 3 Processo Unix Thread in un processo Unix Valeria Cardellini - SD A.A. 2010/11 4

Cambio di contesto: meno costoso tra thread, poiché lo spazio di indirizzamento è condiviso e quindi il cambio riguarda soltanto il contesto di esecuzione (registri del processore e stack) più costoso tra processi, poiché occorre salvare tutte le informazioni richieste nel descrittore di processo Creazione e distruzione: di thread: molto meno costosa Gestione di thread: richiede meno risorse di sistema Valeria Cardellini - SD A.A. 2010/11 Fonte: https://computing.llnl.gov/tutorials/pthreads/ 5 I processi offrono trasparenza alla concorrenza, ma ad costo relativamente alto in termini di prestazioni Meccanismi di Inter-Process Communication (IPC): semafori, pipe, code di messaggi, memoria condivisa, socket I thread offrono concorrenza con un grado minore di trasparenza Applicazioni con prestazioni migliori (in molti casi) ma con codifica e debug più difficile Difficoltà legate alla sincronizzazione tra thread Con i thread in generale ottimizzazione nell esecuzione dei programmi, tramite un miglioramento delle fasi di allocazione ed esecuzione (condivisione dello stato e dello spazio di indirizzamento) Valeria Cardellini - SD A.A. 2010/11 6

Possibilità di sfruttare il parallelismo disponibile nelle architetture con più processori Più adatto per applicazioni di grandi dimensioni Comunicazione più economica rispetto a IPC Cambi di contesto legati all uso di un meccanismo di IPC (ad es. pipe) Valeria Cardellini - SD A.A. 2010/11 7 Principali modalità alternative per fornire il supporto di thread Implementazione a livello utente (N:1) Implementazione a livello kernel (1:1, N:M) Lightweight process (LWP) Valeria Cardellini - SD A.A. 2010/11 8

A livello dello spazio utente Anche schema N:1 N thread a livello applicativo, 1 entità schedulabile dal kernel È la corrispondenza con le entità schedulabili nel kernel La libreria viene eseguita completamente in modalità utente Tutte le operazioni sui thread sono completamente gestite all interno di un singolo processo Non è richiesto l intervento del SO per creare, terminare, schedulare per l esecuzione, sospendere, o risvegliare un thread L implementazione può essere molto efficiente (tempo di cambio di contesto tra thread molto basso) Tutti i servizi forniti dal kernel del SO sono per conto del processo in cui il thread risiede Se il kernel blocca un thread, l intero processo a cui appartiene il thread viene bloccato Esempio: GNU Portable Threads Valeria Cardellini - SD A.A. 2010/11 9 Svantaggio principale: preferiamo usare i thread quando ci sono molti eventi di I/O da gestire, ma nello schema N:1 i thread si bloccano su una base perevento Se il kernel non distingue i thread di un processo, non può supportare la segnalazione di eventi ai singoli thread Ulteriore svantaggio: mancanza di parallelizzazione su architetture multiprocessore o multi-core Valeria Cardellini - SD A.A. 2010/11 10

A livello del kernel (anche schema 1:1) 1 thread a livello applicativo, 1 entità schedulabile dal kernel Il kernel contiene l implementazione del pacchetto di thread A ciascuna funzione per la gestione dei thread corrisponde una chiamate di sistema Le operazioni che bloccano un thread non sono più un problema come nello schema N:1 Il kernel schedula un altro thread disponibile all interno dello stesso processo La gestione di eventi di I/O è semplice Il kernel (che cattura tutti gli eventi) schedula il thread associato con l evento Supporta la parallelizzazione su architetture multiprocessore o multi-core Esempio: Native Posix Thread Library (NPTL) per Linux Valeria Cardellini - SD A.A. 2010/11 11 Problema principale: perdita di efficienza rispetto allo schema N:1, dovuta al fatto che ogni operazione del thread richiede una trap al kernel Soluzione possibile: cercare di combinare i concetti di thread a livello utente ed a livello kernel (detto schema N:M) Soluzione ibrida: N thread a livello applicativo sono mappati su M entità schedulabili dal kernel, con N >= M Maggiore complessità di implementazione rispetto agli schemi N:1 e 1:1 Soluzione supportata ad es. dal SO Solaris Valeria Cardellini - SD A.A. 2010/11 12

Processi leggeri (o thread Solaris) Approccio a 2 fasi! processi leggeri (LWP) che possono eseguire thread di livello utente Quando un thread di livello utente fa una chiamata di sistema, il LWP che sta eseguendo quel thread si blocca Il thread è legato al LWP Il kernel può schedulare un altro LWP che ha un thread eseguibile Quando un thread chiama un operazione di livello utente bloccante, si esegue un cambio di contesto ad un thread eseguibile nello stesso LWP Quando non ci sono thread da schedulare, un LWP può rimanere idle o essere rimosso dal kernel Soluzione proposta nel 1990 per SunOS 4.x Valeria Cardellini - SD A.A. 2010/11 13 Client multithread: l obiettivo principale è nascondere la latenza delle comunicazioni distribuite Esempio: un browser è generalmente multithread Ogni risorsa inclusa in una pagina è gestita da un thread, che si occupa di una singola richiesta e risposta HTTP Esempio: chiamate multiple di tipo richiesta/risposta ad altre macchine (RPC) Il client effettua molteplici chiamate contemporaneamente, ciascuna gestita da un diverso thread Attende finché non ottiene tutti i risultati Speedup lineare se le chiamate sono a server diversi Valeria Cardellini - SD A.A. 2010/11 14

Server multithread: gli obiettivi principali sono maggiore efficienza prestazionale e maggiore modularità architetturale (specializzazione, semplicità) Prestazioni Per gestire una richiesta in ingresso è molto più economico avviare un thread piuttosto che un processo Un server single-thread impedisce la scalabilità del server verso un sistema con architettura multiprocessore Come nei client multithread: nascondere la latenza di rete reagendo alla richiesta successiva mentre si risponde alla precedente Struttura migliore: Molti tipi di server hanno una richiesta di I/O elevata: l uso di chiamate di sistema bloccanti semplifica la struttura complessiva I programmi multithread tendono ad essere di dimensioni minori e più semplici da capire per il controllo di flusso semplificato Valeria Cardellini - SD A.A. 2010/11 15 Virtualizzazione: un livello alto di astrazione che nasconde i dettagli dell implementazione sottostante Virtualizzazione: astrazione di risorse computazionali Si presenta all utilizzatore una visione diversa da quella reale Virtualizzazione della piattaforma Virtualizzazione delle risorse di sistema Le tecnologie di virtualizzazione comprendono una varietà di meccanismi e tecniche usate per risolvere problemi di: Sicurezza, affidabilità e prestazioni (isolamento della QoS) Come? Disaccoppiando l architettura ed il comportamento delle risorse hardware e software percepiti dall utente dalla loro realizzazione fisica Valeria Cardellini - SD A.A. 2010/11 16

Il concetto di macchina virtuale (VM, Virtual Machine) è un idea vecchia, essendo stato definito negli anni 60 in un contesto centralizzato Ideato per consentire al software legacy (esistente) di essere eseguito su mainframe molto costosi Ad es. il mainframe IBM System/360-67 Una VM permette di rappresentare le risorse hardware diversamente dai loro limiti fisici Una singola macchina fisica può essere rappresentata e usata come differenti ambienti di elaborazione Valeria Cardellini - SD A.A. 2010/11 17 Ritornata in auge alla fine degli anni 90; sta assumendo un importanza sempre più crescente (vedi cloud computing) L HW cambia più velocemente del SW (middleware e applicazioni) Facilita la portabilità e la migrazione di codice Permette di isolare componenti malfunzionanti o soggetti ad attacchi Valeria Cardellini - SD A.A. 2010/11 18

La virtualizzazione può aver luogo a livelli diversi Dipende fortemente dalle interfacce offerte dai vari componenti del sistema Interfaccia tra hardware e software (istruzioni macchina invocabili da ogni programma o user ISA) [interfaccia 4] Interfaccia tra hardware e software (istruzioni macchina invocabili solo da programmi privilegiati o system ISA) [interfaccia 3] Chiamate di sistema [interfaccia 2] ABI (Application Binary Interface): interfaccia 2 + interfaccia 4 Chiamate di libreria (API) [interfaccia 1] Obiettivo della virtualizzazione: Imitare il comportamento di queste interfacce Riferimento: J.E. Smith, R. Nair, The architecture of virtual machines, IEEE Computer, May 2005. Valeria Cardellini - SD A.A. 2010/11 19 Due tipi di virtualizzazione: Macchina virtuale di processo Monitor della macchina virtuale (VMM, Virtual Machine Monitor) o anche hypervisor Macchina virtuale di processo Il programma è compilato in un codice intermedio (portabile), che viene successivamente eseguito nel sistema runtime Virtualizzazione solo per un Istanze multiple di combinazioni singolo processo <applicazione, sistema runtime> La VM di processo è una piattaforma virtuale che esegue un singolo processo Fornisce un ambiente ABI o API virtuale per le applicazioni utente Esempi: Java VM Valeria Cardellini - SD A.A. 2010/11 20

Uno strato software separato che scherma completamente l hardware sottostante ed imita l insieme di istruzioni Sul VMM possono essere eseguiti indipendentemente e simultaneamente sistemi operativi diversi Esempi: VMware, Microsoft Virtual PC, Parallels, VirtualBox, Xen Istanze multiple di combinazioni <applicazioni, sistema operativo> M. Boari, M. Balboni, Tecniche di virtualizzazione: teoria e pratica, Mondo Digitale, Marzo 2007. M. Rosenblum, T. Garfinkel, Virtual machine monitors: current technology and future trends, IEEE Computer, May 2005. Valeria Cardellini - SD A.A. 2010/11 21 In quale livello dell architettura di sistema collocare il VMM? direttamente sull hardware (VMM classico o di sistema Esempi: VMware ESX, Xen oppure come applicazione su un SO esistente (VMM ospitato) Esempi: VMware Server, VirtualBox, Virtual PC, User Mode Linux host guest guest host VMM di sistema Valeria Cardellini - SD A.A. 2010/11 VMM ospitato 22

VMM di sistema: funzionalità di virtualizzazione integrate in un SO semplificato E necessario corredare il VMM di tutti i driver necessari per gestire le periferiche VMM ospitato: opera nello spazio utente ed accede all hardware tramite le chiamate di sistema del SO su cui viene installato Installazione più semplice Può usare il SO sottostante per gestire le periferiche e può utilizzare altri servizi del SO (es. scheduling, gestione delle risorse) Degrado delle prestazioni Valeria Cardellini - SD A.A. 2010/11 23 Quale modalità di dialogo tra la VM ed il VMM per l accesso alle risorse fisiche? Virtualizzazione completa Paravirtualizzazione Virtualizzazione completa Il VMM espone ad ogni VM interfacce hardware simulate funzionalmente identiche a quelle della sottostante macchina fisica Il VMM intercetta ogni richiesta di accesso privilegiato all hardware e ne emula il comportamento atteso Paravirtualizzazione Il VMM espone ad ogni VM interfacce hardware simulate funzionalmente simili (ma non identiche) a quelle della sottostante macchina fisica Non viene emulato l hardware, ma viene creato uno strato minimale di software (Virtual Hardware API) per assicurare la gestione delle singole istanze di VM ed il loro isolamento Valeria Cardellini - SD A.A. 2010/11 24

Principale vantaggio: SO standard installato nella VM Svantaggi VMM più complesso Collaborazione del processore per implementazione efficace Perché? L architettura del processore opera secondo almeno 2 livelli (ring) di protezione: supervisore e utente Solo il VMM opera nello stato supervisore, mentre il SO guest e le applicazioni (la VM) operano nello stato utente Problema del ring deprivileging: il SO guest opera in uno stato che non gli è proprio! non può eseguire istruzioni privilegiate Problema del ring compression: poiché applicazioni e SO guest eseguono allo stesso livello, occorre proteggere lo spazio del SO Valeria Cardellini - SD A.A. 2010/11 25 Per risolvere il ring deprivileging: Se il SO guest tenta di eseguire un istruzione privilegiata, il processore notifica un eccezione al VMM e gli trasferisce il controllo: il VMM controlla la correttezza dell operazione richiesta e ne emula il comportamento Si ha invece un esecuzione diretta delle istruzioni non priviligiate eseguite dal SO guest Ma il meccanismo di notifica al VMM per ogni istruzione privilegiata è offerto solo dai processori con supporto nativo alla virtualizzazione (ad es. Intel VT, AMD-V) IA-32 non lo è! Due soluzioni possibili: a) Fast binary translation: il VMM scansiona a runtime il codice prima della sua esecuzione per sostituire blocchi contenenti istruzioni problematiche in blocchi equivalenti dal punto di vista funzionale e contenenti istruzioni per la notifica di eccezioni al VMM! più complessità del VMM e minori prestazioni b) Paravirtualizzazione Valeria Cardellini - SD A.A. 2010/11 26

Xen è l esempio più noto di paravirtualizzazione http://xen.org (sviluppato all università di Cambridge) Il VMM offre al SO guest un interfaccia virtuale (hypercall API) alla quale il SO guest deve riferirsi per aver accesso alle risorse fisiche della macchina Occorre rendere compatibile con Xen il kernel ed i driver del SO guest; le applicazioni rimangono invece invariate Soluzione preclusa ai sistemi operativi commerciali, a meno di non avere un processore che supporti la virtualizzazione nativa Overhead molto basso: in grado di fornire prestazioni molto simili a quelle dell esecuzione non virtualizzata Valeria Cardellini - SD A.A. 2010/11 27 In ambito personale In ambito didattico In ambito professionale per ambienti di test e sviluppo di applicazioni In ambito aziendale per il consolidamento dei server (server consolidation) e dei data center Approccio all uso più efficiente delle risorse dei server nell ottica di ridurre il numero totale di server necessari ad una azienda e di utilizzarli in modo più efficiente ed economico Valeria Cardellini - SD A.A. 2010/11 28

PlanetLab: un sistema distribuito collaborativo caratterizzato da virtualizzazione distribuita http://www.planet-lab.org/ Ampio insieme di macchine sparse su Internet Più di 1100 nodi in oltre 500 siti Usato come testbed per sperimentare sistemi ed applicazioni distribuite su scala planetaria in un ambiente reale Alcuni esempi di sistemi ed applicazioni testati su PlanetLab Reti overlay Misure di rete (Scriptroute, I3, ) Multicast di livello applicativo (Scribe, ) Distributed Hash Table (Chord, Tapestry, Pastry, Bamboo, ) Content Distributed Network (CoDeeN, ) Virtualizzazione ed isolamento (Denali, ) Processamento distribuito di query (PIER, IrisLog, Sophia,..) Allocazione di risorse Valeria Cardellini - SD A.A. 2010/11 29 Organizzazione di base di un nodo PlanetLab Ogni nodo ospita una o più macchine virtuali VMM, parte di un SO Linux esteso Virtualizzazione a livello di chiamate di sistema Vserver: ambiente separato in cui può essere eseguito un gruppo di processi Completa indipendenza, concorrenza ed isolamento tra processi in vserver diversi Riferimento: L. Peterson, T. Roscoe, The design principles of PlanetLab, Operating Systems Review, 40(1):11-16, Jan. 2006. Valeria Cardellini - SD A.A. 2010/11 30

Un applicazione in PlanetLab viene eseguita in una slice della piattaforma Un insieme di vserver (in esecuzione su nodi diversi), su ciascuno dei quali l applicazione riceve una frazione delle risorse del nodo sotto forma di VM Assimilabile ad un cluster di server virtuali Virtualizzazione distribuita: insieme distribuito di VM che sono trattate dal sistema come un entità singola Programmi appartenenti a slice diverse, ma in esecuzione sullo stesso nodo, non interferiscono gli uni con gli altri Molteplici esperimenti possono essere eseguiti simultaneamente su PlanetLab Valeria Cardellini - SD A.A. 2010/11 31 Analizziamo alcune questioni inerenti la progettazione dei client e dei server e la migrazione del codice Valeria Cardellini - SD A.A. 2010/11 32

Il client comprende componenti per ottenere la trasparenza della distribuzione Trasparenza di accesso: generalmente gestita attraverso la generazione di un client stub Trasparenza all ubicazione, alla migrazione e al riposizionamento: generalmente il client tiene traccia della locazione effettiva Trasparenza alla replica: molteplici invocazioni gestite dal client stub Trasparenza ai guasti: spesso gestita solo lato client (cercando di mascherare malfunzionamenti del server o della comunicazione) Valeria Cardellini - SD A.A. 2010/11 33 Già analizzate (anche in altri corsi) diverse questioni inerenti la progettazione di un server, quali Server iterativi e concorrenti Distribuzione orizzontale e verticale Come può il client conoscere la porta su cui contattare il server? Porta preassegnata e nota Porta assegnata dinamicamente (interazione con daemon) Daemon in ascolto su porta preassegnata delle richieste per alcuni servizi Richieste per lo stesso servizio girate su porta assegnata dinamicamente di cui viene informato il server corrispondente Attivazione dinamica di server (interazione con superserver) Per richieste sporadiche non conviene mantenere server attivi Il superserver ascolta le porte corrispondenti e per ogni richiesta in arrivo risveglia (o crea dinamicamente) il server corrispondente Ad es. inetd di UNIX e GNU/Linux Valeria Cardellini - SD A.A. 2010/11 34

Interrompibilità del server: è possibile interrompere un server una volta che ha accettato una richiesta di servizio? Soluzione 1: interruzione della connessione Comporta l interruzione del servizio Soluzione 2: dati out-of-band Usare una porta di controllo separata Il server ha un thread (o processo) in attesa di messaggi urgenti Quando arriva un messaggio urgente, la richiesta di servizio associata viene sospesa Oppure usare i meccanismi di comunicazione out-of-band forniti dal livello di trasporto Ad es. TCP permette di trasmettere dati urgenti sulla stessa connessione Valeria Cardellini - SD A.A. 2010/11 35 Server con o senza stato Server senza stato (stateless) Non mantiene informazioni accurate sullo stato del client e non deve informarlo di eventuali cambi di stato lato server Ad es. non invalida la cache di un client Ad es. non registra che un file è stato aperto Conseguenze: Client e server sono completamente indipendenti Ridotte le inconsistenze di stato dovuto a crash del client o del server Possibile perdita di prestazioni, ad es. il server non può anticipare il comportamento del client Server con stato (stateful) Mantiene informazioni persistenti sullo stato del client Ad es. registra che un file è stato aperto, in modo da poterne fare il prefetching Ad es. conosce il contenuto della cache di un client e consente ad un client di mantenere una copia locale di dati condivisi Valeria Cardellini - SD A.A. 2010/11 36

Nei SD la comunicazione può non essere limitata al passaggio dei dati, ma riguardare anche il passaggio di programmi, anche durante la loro esecuzione Motivazione della migrazione Bilanciare o condividere il carico di lavoro Risparmiare risorse di rete e ridurre il tempo di risposta processando i dati vicino a dove risiedono Sfruttare il parallelismo ma senza le difficoltà della programmazione parallela Configurare dinamicamente il SD Valeria Cardellini - SD A.A. 2010/11 37 Processo composto da tre segmenti Segmento del codice Le istruzioni del programma in esecuzione Segmento delle risorse I riferimenti alle risorse esterne di cui il processo ha bisogno Segmento dell esecuzione Lo stato del processo (stack, PC, dati privati) Alcune alternative per la migrazione Mobilità leggera o mobilità forte Leggera: trasferito solo il segmento del codice Forte: trasferito anche il segmento dell esecuzione Migrazione iniziata dal mittente o avviata dal destinatario Nuovo processo per eseguire il codice migrato o clonazione Argomento trattato nel corso di Sistemi Informatici Mobili Valeria Cardellini - SD A.A. 2010/11 38

In ambienti eterogenei, la macchina target può non essere in gradi di eseguire il codice La definizione del contesto di processo, thread e processore è fortemente dipendente dall hardware, dal SO e dal sistema runtime Soluzione migliore per ambienti eterogenei: usare una macchina virtuale Macchina virtuale di processo Monitor di macchina virtuale Valeria Cardellini - SD A.A. 2010/11 39