sistemi distribuitidisys/introsidys.pdf · (cscw computer supported cooperative working)...
TRANSCRIPT
1
Università degli Studi di Bari- Aldo Moro
CdL MAGISTRALE in INFORMATICA
A.A. 2013-2014
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)
2
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
Ø 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.
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 sulla rete di comunicazione o mediante la condivisione di risorse.
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)
Architettura 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 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 )
Parallel Computing SD pdv modello logico di calcolo
6
Il modello di comunicazione : dal client-server al P2P
Nodo Server
Fornisce servizi e contiene dati che
possono essere condivisi
Nodo Client Fruisce dei servizi
del server
Infrastruttura di
collegamento
richiesta
risposta
• 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)
SD pdv Logico
Ø 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…
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.
• Name server : Servizio che converte i nomi in rete in indirizzi numerici di rete (DNS).
• 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.
• WEB server: per trasmettere mediante un protocollo http ai client che ne fanno richiesta pagine in formato html.
SD pdv Logico
• 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).
• Data Base client: per gestire query SQL su un DBMS separato su una macchina dedicata.
• 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 client: browser WEB per trasmettere mediante un protocollo http ai server WEB pagine html (netscape, firefox,…)
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