Sistema distribuito - Dipartimento di Informatica

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