Sistema distribuito - Dipartimento di Informatica

Transcript

Sistema distribuito - Dipartimento di Informatica
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