Università degli Studi di Bari- Aldo Moro CdL MAGISTRALE in INFORMATICA A.A. 2014-2015 Sistemi Distribuiti Prof. S.Pizzutilo Programma del corso Sistemi Distribuiti (6 CFU) Ø Introduzione e terminologia Ø I princìpi fondamentali : ü Inter-process communication (IPC) ü Concorrenza e sincronizzazione di processi remoti Ø 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 (Sistemi edge-server, Sistemi distribuiti collaborativi) ü Cluster: Architettura e tecniche di comunicazione; funzionalità (Fail-over service, Load-balancing, High Performance Computing) ü Grid: Architettura e tecniche di comunicazione; funzionalità (Storage, Data Base, Process control, HPC) ü 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) 1 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 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 sulla rete di comunicazione o mediante la condivisione di risorse. ☎ ISP ☎ intranet ☎ ☎ backbone desktop computer server: : network link: satellite link AP Ø Tipici aspetti dei sistemi distribuiti: § comunicazione: trasmissione di informazione fra entità, § sincronizzazione: nozione di “evento” comune, § concorrenza: evoluzione contemporanea delle entità, § non determinismo: latenza reti, perdita messaggi. Ø Il punto chiave: § il concetto di INTERAZIONE: momento di sincronia/comunicazione fra entità concorrenti. 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. Architettura 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 mp3 Mem.loc. mp2 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 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 sono risolvibili con programmi scomponibili in procedure indipendenti ( processi - thread ) 2) La dimensione di ogni singolo processo deve poter essere contenuta in ciascuna unità di calcolo. Software: COARSE GRAINED e FINE GRAINED PARALLELISM Hardware: LOOSELY COUPLED SYSTEMS distributed computing systems, own local memory, richiedono poche interazioni, reti TIGHTLY COUPLED SYSTEMS parallel processing systems , shared central memory, richiedono molte interazioni 3) Deve esistere una strategia complessiva di interazione tra i nodi. ( da…CONTROL FLOW a…DATA FLOW ) 4) I linguaggi paralleli ( con strutture linguistiche appropriate ) 5 SD pdv Logico Il modello di comunicazione : dal client-server al P2P richiesta Nodo Client Fruisce dei servizi del server Infrastruttura di collegamento Ø L’Infrastruttura di collegamento è un sistema di comunicazione che collega diversi nodi. § nodi: sistemi di elaborazione, (host) § connettori: cavi coassiali, cavi UTP, fibre ottiche, onde radio, bridge, gateway… SD pdv Logico risposta Nodo Server Fornisce servizi e contiene dati che possono essere condivisi • Protocollo di comunicazione: insieme di regole che disciplinano la comunicazione tra i diversi nodi della rete (es. TCP/IP) Ogni nodo è identificato mediante un indirizzo numerico (indirizzo IP) Client e Server tipici di un sistema distribuito • File Server : insieme di processi che garantiscono l’accesso ai dischi o ad altri dispositivi di memorizzazione condivisi da parte di più utenti. Sono controllati la memorizzazione ed il ritrovamento dei files. Tali processi garantiscono protezione da scrittura e lettura non autorizzate (file system). • Printer Server : Dispositivi H/S che permettono ai diversi utenti del sistema di concedere accesso al servizio di stampa da un nodo qualsiasi del sistema in condivisione. • Mail Server. Insieme di programmi che garantiscono la spedizione e la ricezione di “lettere” tra i nodi del sistema. • Boot Server. Fa partire il sistema da power-on o quando c'e' un problema interno grave non risolvibile. Necessita di un meccanismo hardware per l'inizializzazione (interrupt reset). Esegue ogni tanto un polling sui server per vedere se sono ancora vivi. • Gateway server. Converte messaggi da un protocollo ad un altro (o cambia semplicemente gli indirizzi) per passare da un protocollo della rete locale al protocollo della rete esterna, e viceversa. • File Client : insieme di processi utente che garantiscono l’accesso ai dischi o ad altri dispositivi di memorizzazione di più utenti (ftp, ntfs…) • Printer Client : Dispositivi H/S che permettono agli utenti del sistema di avere accesso al servizio di stampa da un nodo qualsiasi collegato in rete con la macchina server. • Mail client. Software applicativi che consentono la spedizione e la ricezione di “lettere” tra la macchina dell’utente ed il provider di posta (Thunderbird, Eudora, Mail, Outlook express,…) . • Boot client. Firmware su client che consente di fa partire il sistema da altre macchine o dispositivi diversi. . • Gateway client. Macchine di una LAN che devono necessariamente collegarsi al gateway server della LAN per utilizzare servizi di comunicazione con l’esterno. • Name client : Servizio che consente il collegamento ad un server per converte i nomi in rete in indirizzi numerici di rete (DNS). • Name server : Servizio che converte i nomi in rete in indirizzi numerici di rete (DNS). • Data Base client: per gestire query SQL su un DBMS separato su una macchina dedicata. • Data Base server: per gestire separatamente il DBMS sulla base di query SQL lanciate da client autorizzati. • Transaction server: per gestire su una macchina le transazioni richieste da altre macchine in rete. • Transaction client: per gestire su una macchina le transazioni . Ad es. un client invoca una procedura remota che risiede sul server con un motore per eseguire gruppi di statement SQL. (comandi SU, Rlogin,…) • WEB server: per trasmettere mediante un protocollo http ai client che ne fanno richiesta pagine in formato html. • WEB client: browser WEB per trasmettere mediante un protocollo http ai server WEB pagine html (netscape, firefox, …) 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 Applicazioni, servizi librerie & server OS2 OS1 piattaforma OS: kernel, Processi, threads, comunicazioni... Processi, threads, comunicazioni, ... Computer & network hardware Computer & network hardware Middleware SIstema Operativo (kernel) 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