Università degli Studi di Bari- Aldo Moro Dipartimento di Informatica CdL MAGISTRALE in INFORMATICA A.A. 2015-16 corso di Sistemi Distribuiti Modulo 1 > Introduzione e concetti generali Prof. S.Pizzutilo Sistema distribuito Un Sistema Distribuito è un insieme di processori indipendenti: • interconnessi da una rete di comunicazione, • in cui ciascun processore ha proprie risorse (processore, memoria locale, registri e software di base ed applicativo), • che cooperano per condividere risorse ovunque distribuite. La comunicazione tra due processori qualsiasi (processi su processori diversi) del sistema avviene attraverso : - lo scambio di messaggi s u l l a r e t e d i comunicazione o - mediante la condivisione di risorse. ☎ ISP ☎ intranet ☎ ☎ backbone desktop computer server: : network link: satellite link AP Ø Il punto chiave: § il concetto di INTERAZIONE: momento di sincronia/comunicazione fra entità concorrenti. 1 Programma del corso Sistemi Distribuiti (6 CFU) Ø Introduzione e terminologia Ø I princìpi fondamentali : ü Inter-process communication (IPC) ü Concorrenza e sincronizzazione di processi remoti ü La sicurezza e la mutua autenticazione nei sistemi distribuiti Ø Le architetture dei sistemi distribuiti: ü Architetture centralizzate: Sistemi client-server sincroni e asincroni; stratificazione delle applicazioni ed architetture multilayered. ü Architetture decentralizzate: Sistemi peer-to-peer. Ø Tipologie di architetture: ü ü ü ü ü ü Rete overlay; Rete overlay non strutturata; Superpeer; reti Ibride Cluster: Architettura e tecniche di comunicazione; funzionalità (Fail-over service, Load-balancing, H P C) Grid: Architettura e tecniche di comunicazione CLOUD Computing System SOA I Sistemi pervasivi: Sistemi domestici (PDA, smart phone, recommender systems, …), Sistemi per la sanità (sistemi Body Area Network), Reti di sensori (Mesh network, Mobile ad hoc network,…) Richiami di UNIX: kernel, file system, processi, thread, daemon, comandi di Network administration, il NTFS, La comunicazione tra processi remoti : gli strumenti ( le socket, RPC, JAVA RMI) Testi consigliati e riferimenti bibliografici: A. Tanenbaum e M. van Steen, Sistemi Distribuiti ed. Pearson-Prentice Hall, seconda edizione 2007. Articoli, dispense e risorse on line distribuiti o segnalati durante il corso http://www.di.uniba.it/~disys 2 Caratteristiche dei sistemi distribuiti (1) ü Condivisione delle risorse (CSCW computer supported cooperative working) Condivisione delle risorse, senza necessita' di replicarle su tutti gli utenti (printer, dischi, data base, array processor). • Guadagno in tempo dovuto alla possibilita' di esecuzione parallela, o di usare un host meno carico o con particolari caratteristiche (floating point...) • Reliability: se il sistema e' ridondante si puo' continuare a lavorare (ridondanza hardware, software, dati). Occorre in questo caso rilevare il fallimento di un nodo e trasferirne le funzioni ad un altro. Infine si reintegra il nodo, dopo averlo aggiustato . Caratteristiche dei sistemi distribuiti (2) ü Openess E’ la caratteristica che determina se e come un sistema può essere esteso. Si basa su regole standard che descrivono la sintassi (Interfacce scritte in IDL) e la semantica dei servizi (es. XML), quali ad esempio i protocolli di comunicazione ed i servizi di condivisione delle risorse (Interoperabilità e portabilità). ü Concurrency Proprietà in base alla quale più processi possono coesistere su un’unica risorsa.. Richiede sincronizzazione. ü Scalability Proprietà che permette di non cambiare il sistema o il software applicativo per passare da una scala dimensionale all’altra. ü Fault tolerance La tolleranza del sistema ai guasti si ottiene o mediante la ridondanza hardware o mediante tecniche di software recovery. 3 Caratteristiche dei sistemi distribuiti (3) ü Trasparenza : 4 Access transparency: permette l’accesso a risorse locali e remote usando operazioni identiche. 4 Location transparency: consente l’accesso alle risorse senza che si conosca la loro dislocazione. 4 Concurrency transparency: permette a più processi di operare in maniera concorrente usando risorse condivise senza generare collisioni. 4 Replication transparency: permette l’uso di istanze multiple delle risorse per migliorare le prestazioni del sistema complessivo senza che gli utenti o le applicazioni sappiano se tali istanze siano o meno duplicati di risorse. 4 Failure transparency: permette di nascondere gli eventuali fault, consentendo agli utenti o alle applicazioni di terminare i loro task malgrado l’occorrenza di fault h/s. 4 Mobility transparency: permette lo spostamento delle risorse all’interno del sistema distribuito senza alcun effetto sulle operazioni degli utenti . 4 Performance transparency: permette di riconfigurare il sistema per migliorare le prestazioni al variare dei carichi di lavoro. 4 Scaling transparency: permette l’espansione del sistema e delle applicazioni senza cambiare la struttura del sistema stesso o gli algoritmi usati delle applicazioni. Analisi di un Sistema Distribuito Sistema Distribuito dal punto di vista... • Hardware (nodi ed infrastruttura di comunicazione) MIMD, Cluster, Grid, Virtualizzazione, LAN • modello logico di calcolo terminali, client/server, P2P, CSCW, WEB centric • del Sistema Operativo • dei linguaggi S.O. centralizzato, di rete, distribuito, group toolkit, middleware Linguaggi basati su variabili globali (concurrent Pascal), linguaggi basati su scambio di messaggi (Occam, ADA), linguaggi per la programmazione in rete (Java, CORBA), linguaggi WEB centric (TCL/TK, CGI, HTML, XML…) 4 Parallelismo fisico Topologia strutturale SD pdv Hardware 3 multiprocessor mp1 Memoria C. mp2 mp3 4 (3, 4) multicomputer mp1 Mem.loc. 0 mp2 Mem.loc. mp3 Mem.loc. 9 multiprocessor con mem. locali mp1 Mem.loc. (0, 1, 2) 1 mp2 Mem.loc. mp3 Mem.loc. 8 (7, 8, 9) Memoria C. intranet ISP ☎ ☎ ☎ ☎ backbone SD pdv modello logico di calcolo Parallel and Distributed Computing … ma il punto di vista hardware non basta, occorre esaminare gli aspetti relativi al software in grado di far cooperare (comunicare) le componenti HW. 1) I problemi del calcolo parallelo e/o distribuito sono risolvibili con programmi scomponibili in procedure indipendenti ( processi - thread ) eseguiti su processori diversi. 2) La dimensione (la granulosità) di ogni singolo processo/thread deve poter essere contenuta in ciascuna unità di calcolo (livelli diversi di coupling). Software: COARSE GRAINED ( dati trasmessi poco frequentemente dopo una computazione pesante su ogni processore) per il calcolo distribuito. FINE GRAINED PARALLELISM (task eseguiti in poco tempo e realizzati con piccole qualtità di codice e dati rappresentati in poche parole di memoria e trasmessi frequentemente tra i processori) per il calcolo parallelo. Hardware: LOOSELY COUPLED SYSTEMS distributed computing systems, own local memory, richiedono poche interazioni tgra i processori, reti. TIGHTLY COUPLED SYSTEMS parallel processing systems , shared central memory, richiedono molte interazioni. 5 SD pdv modello logico di calcolo Parallel Computing 3) Deve esistere una strategia complessiva di interazione tra i nodi della computazione: DA… una strategia CONTROL FLOW (flusso di controllo governato da istruzioni di tipo jump, salti condizionati, loop, iterazioni, subroutine, call,…) che si riferisce all’ordine con cui le singole istruzioni o chiamate a procedura vengono eseguite o valutate in un programma. (Control Flow Graph). A… una strategia DATA FLOW (nella quale l’esecuzione di un programma è governata dal flusso di dati inseriti o prodotti nel sistema, o meglio, il flusso di esecuzione delle istruzioni o delle funzioni è determinato dai tipi di dati in input ed in output dal sistema, dalla loro localizzazione sui diversi processori, dal tempo della loro produzione, dalla localizzazione della loro destinazione ed in definitiva dal loro contesto produttivo ). (Data Flow Diagram) 4) I linguaggi paralleli ( linguaggi con costrutti linguistici appropriati, che permettano di eseguire task diversi in parallelo ) ad es. PARLOG, Concurrent Pascal, Smalltalk, Java,… SD pdv Logico Modelli di comunicazione …dal client-server al P2P Client-server 1) trasmissione di una richiesta da un processo (client) ad un altro processo (server) 2) esecuzione della richiesta sul server 3) trasmissione di una risposta dal server al client Ogni richiesta contiene un identificatore che viene usato anche dal server per trasmettere la risposta al client. Function shipping E’ una estensione del modello client-server in cui il client non invia un messaggio con solo dati, bensì la procedura intera con cui il server deve operare sui dati. Il server in tal caso opera come ambiente di esecuzione (o interprete) dei programmi che il client gli invia. Group multicast Peer to Peer Corrisponde ad un message passing con un target multiplo, formato da un gruppo di processi destinatari/server. In questo caso ad un singolo send corrisponde un receive eseguito da ciascun membro di un gruppo di processi. • P er localizzare un oggetto. • Per aumentare fault tolerance. • Per un multiple update. Ogni computer (nodo autonomo ed indipendente) può operare indifferentemente come client o come server, consentendo accessi condivisi a diverse risorse (come file, periferiche e sensori) senza la necessità di un server centrale. Ciò comporta che ciascun computer della rete utilizzi programmi compatibili che consentano questo tipo di comunicazione. 6 SD pdv Logico Il Peer to Peer Una rete Peer to Peer (P2P) è una rete in cui ogni computer (nodo autonomo ed indipendente) può operare indifferentemente come client o come server, consentendo accessi condivisi a diverse risorse (come file, periferiche e sensori) senza la necessità di un server centrale. Ciò comporta che ciascun computer della rete utilizzi programmi compatibili che consentano questo tipo di comunicazione. P2P ibrido Sono necessari opportuni sistemi di sincronizzazione SD pdv Sistema Operativo I Sistemi Operativi Insieme di Programmi che controllano le risorse di un computer e forniscono agli utenti (programmi applicativi ed utenti umani) servizi di gestione delle risorse fisiche ed interfacce (macchina virtuale) più facili da usare rispetto alla macchina reale. Network Operating System Distributed Operating System Immagine non trasparente trasparente Autonomia ogni S.O. gestisce i suoi processi i processi sono gestiti globalmente Fault tolerance scarsa alta 7 SD pdv Sistema Operativo Sistemi Operativi multistrato utente gui Xwindow Programmi di utilità (shell, editor, compilatori,…) Librerie standard SISTEMA OPERATIVO HARDWARE SD pdv Sistema Operativo Il Middleware Per middleware si intende: Ø uno strato software “in mezzo” tra il sistema operativo, ed i programmi applicativi, Ø una classe di tecnologie software sviluppate per aiutare gli sviluppatori nella gestione della complessità e della eterogeneità presenti nei sistemi distribuiti, Ø software che fornisce un’astrazione di programmazione distribuita – un modello computazionale uniforme, Ø software per mascherare alcune eterogeneità degli elementi sottostanti – reti, hardware, sistemi operativi, linguaggi di programmazione, … client • OS • DSM Distr. System Management • GUI • Applicazioni,….. Servizi specifici ODBC, RPC, Mail, ORB,HTTP DSM SNMP , ORB , CMIP NOS DFS Security Directory Peertopeer, messaging, RPC server • OS • DSM • GUI • DBMS • OLTP • WEB. Transport stack NetBIOS,TCP/IP, IPX SNA L’evoluzione nello sviluppo dei sistemi distribuiti e l’evoluzione degli strumenti di middleware sono correlate 8 SD pdv Sistema Operativo I servizi del S.O. nei Sistemi Distribuiti Applicazioni, servizi Middleware librerie & server Middleware SIstema Operativo (kernel) OS2 OS1 piattaforma OS: kernel, Applicazioni, servizi Processi, threads, comunicazioni... Processi, threads, comunicazioni, ... Computer & network hardware Computer & network hardware Nodo 1 Nodo 2 piattaforma hardware SD pdv Sistema Operativo Comunicazione tra processi (IPC) Chiamata a procedura remota Chiamata a procedura locale Client argomenti Procedura Chiamante Procedura Chiamata Server Processo Chiamato Processo Chiamante argomenti risultati risultati argomenti risultato Client Stub messaggio richiesta messaggio risposta Server Stub messaggio risposta messaggio richiesta RETE 9 SD pdv Sistema Operativo I Processi Ready pronto ad essere eseguito, ma non in esecuzione running in esecuzione waiting in attesa di un evento o di un dato Un processo è un programma in esecuzione. Un processo necessita di alcune risorse per assolvere il proprio compito: tempo di CPU, memoria, file e dispositivi di I/O. Ø Il SO è responsabile delle seguenti attività in connessione con la gestione dei processi: § Creazione e cancellazione di processi. § Sospensione e riattivazione di processi. § Fornire meccanismi per: • sincronizzazione di processi • comunicazione fra processi SD pdv Sistema Operativo Thread Un thread (o lightweight process, LWP) è una unità base dell’uso della CPU e consiste di : Ø un program counter Ø un set di registri Ø lo stack address space. Un thread condivide con altri thread : Ø sezioni di codice Ø sezioni di dati Ø risorse del Sistema Operativo. Un insieme di thread ed il loro ambiente è detto “processo” o “task”. Un processo tradizionale,( o heavyweight process, HWP) corrisponde ad un task con un thread singolo. 10 SD pdv Sistema Operativo Thread in Solaris2 11