Università degli Studi di Bari- Aldo Moro Dipartimento di ...disys/introsidys15.pdf · message...
Transcript of Università degli Studi di Bari- Aldo Moro Dipartimento di ...disys/introsidys15.pdf · message...
1
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
Ø Il punto chiave: § il concetto di INTERAZIONE: momento di sincronia/comunicazione
fra entità concorrenti.
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.
intranet ISP
desktop computer:
backbone
satellite link server:
☎
network link:
☎
☎ ☎
AP
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.
2
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
3
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.
4
ü 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.
Caratteristiche dei sistemi distribuiti (3)
Analisi di un Sistema Distribuito
Sistema Distribuito dal punto di vista... • Hardware (nodi ed infrastruttura di comunicazione)
• modello logico di calcolo
• del Sistema Operativo
• dei linguaggi
MIMD, Cluster, Grid, Virtualizzazione, LAN
terminali, client/server, P2P, CSCW, WEB centric
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…)
5
Parallelismo fisico Topologia strutturale
Memoria C.
Memoria C.
mp1
mp1
mp2
mp2
mp3
mp3
mp1 mp2 mp3
Mem.loc.
Mem.loc.
Mem.loc. Mem.loc.
Mem.loc. Mem.loc.
multiprocessor
multiprocessor con mem. locali
multicomputer
SD pdv Hardware
intranet ISP
backbone
☎ ☎ ☎ ☎
1
3(0, 1, 2)
4
89
0(3, 4)
(7, 8, 9)
… 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.
Parallel and Distributed Computing
SD pdv modello logico di calcolo
6
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,…
Modelli di comunicazione
Client-server Function shipping Group multicast
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.
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.
Cor r i sponde 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. • Per localizzare un oggetto. • Per aumentare fault tolerance. • Per un multiple update.
Peer to Peer
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.
SD pdv Logico
…dal client-server al P2P
7
Il Peer to Peer SD pdv Logico
Una rete Peer to Peer (P2P) è una rete in cui ogni computer ( n o d o a u t o n o m o e d 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
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
SD pdv Sistema Operativo
8
Sistemi Operativi multistrato
Librerie standard
gui Xwindow
Programmi di utilità (shell, editor, compilatori,…)
HARDWARE
SISTEMA OPERATIVO
utente
SD pdv Sistema Operativo
client server • OS • DSM Distr. System Management • GUI • Applicazioni,…..
• OS • DSM • GUI • DBMS • OLTP • WEB.
Servizi specifici ODBC, RPC, Mail, ORB,HTTP
DSM SNMP , ORB , CMIP
NOS DFS Security Directory Peertopeer, messaging, RPC
Transport stack
NetBIOS,TCP/IP, IPX SNA
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, …
L’evoluzione nello sviluppo dei sistemi distribuiti e l’evoluzione degli strumenti di middleware sono correlate
9
I servizi del S.O. nei Sistemi Distribuiti
Applicazioni, servizi
hardware piattaforma SIstema Operativo (kernel)
Middleware
Applicazioni, servizi
Computer &
Middleware
OS: kernel, librerie & server
network hardware
OS1
Computer & network hardware
Nodo 1 Nodo 2
Processi, threads, comunicazioni...
OS2 Processi, threads,
comunicazioni, ...
piattaforma
SD pdv Sistema Operativo
Comunicazione tra processi (IPC)
argomenti
risultato Procedura Chiamante
Procedura Chiamata argomenti argomenti risultati risultati
messaggio messaggio richiesta risposta messaggio messaggio
risposta richiesta RETE
Client Processo Chiamante
Server Processo Chiamato
Client Stub Server Stub
Chiamata a procedura remota
Chiamata a procedura locale
SD pdv Sistema Operativo
10
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.
SD pdv Sistema Operativo
11
Thread in Solaris2 SD pdv Sistema Operativo