Estratto del documento

Sistemi distribuiti

Definizione: il sistema distribuito è una collezione di computer che appare ai suoi

utenti come un singolo sistema coerente.

Caratteristiche:

Mancanza di memoria condivisa: le informazioni vengono scambiate tramite

- messaggi

Non esiste uno stato globale dell’intero sistema

- Ogni componente è autonomo: non c’è bisogno di coordinare l’esecuzione

- concorrente dei diversi componenti del sistema

Non esiste un clock globale: non è possibile un fallimento completo del

- sistema, ma solo fallimenti indipendenti dagli altri componenti

Problematiche fondamentali di un DS:

Individuare la controparte (naming)

- Accedere alla controparte: serve un riferimento (access point)

- Serve un protocollo di comunicazione

- Serve un formato comune per lo scambio dei dati e un modo di

- trattamento per capirli (Sintassi e semantica)

Definizioni:

Servizio: il termine servizio si usa per una parte distinta di un sistema

- calcolatore che gestisce una collezione di risorse correlate e ne presenta la

funzionalità agli utenti e alle applicazioni

Server: un programma (processo) su un calcolatore interconnesso che accetta

- richieste da un programma, in esecuzione su di un altro calcolatore, per

eseguire un servizio e rispondervi in modo appropriato

Client: I calcolatori che richiedono un servizio, mentre tutto il processo viene

- chiamato client-server computing.

Tipi di architetture:

Architettura a strati: come i sistemi operativi e i middleware

- Architettura a livelli: applicazioni client-server

- Architettura a oggetti: Java Remote Method Invocation (RMI)

- Architettura incentrata sui dati: web come file system condiviso

- Architettura ad eventi

-

Sistema operativo di rete (NOS – Network Operating System)

Particolare tipo di sistema distribuito in cui l’applicazione distribuita viene

- eseguita su più macchine, ognuna con il suo OS ma con uno strato intermedio

che gestisce i servizi di rete

Gli utenti sono a conoscenza della molteplicità delle macchine e l’accesso alle

- risorse può avvenire in modi diversi, come il remote logging via SSH o

TELNET, via desktop remoto o via FTP

Diversi client possono accedere alle risorse in posti diversi e attraverso diverse

- modalità

Tipi di sistemi distribuiti

Sistemi di computazione distribuita

Una classe importante dei sistemi distribuiti è quella usata per operazioni

computazionali ad alte performance. Queste possono essere divise in:

Computazione cluster: nel quale l’hardware sottostante consiste in una

- collezione di calcolatori simili (stesso OS…) collegati da una rete locale ad alta

velocità. Il sistema è quindi altamente omogeneo.

Computazione a griglia (grid computing): questo sottogruppo consiste in

- un sistema distribuito che spesso viene costruito come una federazione di

sistemi calcolatori, ove ogni sistema può ricadere sotto un dominio

amministrativo diverso e può essere molto diverso dagli altri per quanto

concerne l’hardware, il software e lo sviluppo della tecnologia di rete.

Cluster:

In quasi ogni caso, la computazione cluster viene usata per la programmazione

parallela nel quale un singolo programma (computazionalmente complesso) viene

eseguito in parallelo su più macchine

Computazione a griglia:

Nella computazione a griglia vi è un altro tasso di eterogeneità. In questo tipo di

sistema, risorse provenienti da diverse organizzazioni vengono riunite per permettere

la collaborazione di un gruppo di persone o di istituzioni.

Tale collaborazione viene realizzata nella forma di un’organizzazione virtuale.

Sistemi d’informazione distribuiti:

Un’applicazione di rete consiste semplicemente in un server che esegue quella

applicazione, rendendo disponibile a programmi remoti, detti client

Tali client posso inviare richieste al server per eseguire una specifica operazione, dopo

la quale una risposta viene rispedita al mittente.

Un minimo livello di integrazione permetterebbe ai client di raccogliere un numero di

richieste, possibilmente a server diversi, in un’unica richiesta più grande e di farla

eseguire come una transizione distribuita.

L’idea chiave è che tutte o nessuna di queste operazioni vengono eseguite.

Man mano che le applicazioni divennero più sofisticate e furono gradualmente

separate le componenti indipendenti, fu chiaro che l’integrazione doveva anche

prevedere che le applicazioni potessero comunicare direttamente fra di loro. Questa

idea portò ad un’industria che si concentra sull’integrazione di applicazioni aziendali

(Enterprise Application Integration – EAT).

Consideriamo due tipi di sistemi distribuiti:

Sistemi di esecuzione delle transazioni (Transation Processing System):

Tali sistemi si basano sul concetto di transazione. Esempi di sistemi facenti uso di

transizioni sono i database.

Le transazioni sono operazioni:

Atomiche: ogni transizione viene eseguita completamente, o per nulla, e se

- questo avviene in un’unica istantanea operazione. Durante l’esecuzione di una

transazione gli altri processi non possono vedere alcun stato intermediario.

Consistenti: se il sistema ha qualche invarianza (entità che deve essere

- sempre mantenuta) essa deve essere sempre presente. Se era presente prima

della transazione allora deve essere presente anche dopo il suo completamento.

Isolate o serializzabili: se due o più transazioni vengono eseguite nello

- stesso, per ciascuna di loro e per gli altri processi, il risultato finale dovrà

sembrare come se tutte le transazioni siano state eseguite sequenzialmente in

un qualche ordine dipendente dal sistema.

Durature: una volta eseguita la transazione il risultato diventa permanente

-

Da cui l’acronimo ACID.

Middleware:

Software per migliorare le prestazioni e la trasparenza di distribuzione di un

- NOS

Nasconde l’eterogeneità delle macchine condivise fornendo un’interfaccia

- identica a tutti verso i servizi comuni

Permette la definizione di un sistema di comunicazione che nasconde i dettagli

- dello scambio di messaggi

Permette di definire nomi simbolici che possono essere scambiati/cercati

- Definisce meccanismi per l’esecuzione atomica di operazioni di read/write e

- livelli di protezione dell’accesso ai dati e dell’integrità della computazione

Basati su paradigmi di distribuzione e comunicazione, come le RPC o gli oggetti

- distribuiti, tramite diversi livelli di astrazione (dal più generico TCP/IP ai livelli

dedicati come l’ODBC per i database o l’http per internet o l’RMI per gli oggetti)

Sistema Operativo Distribuito (DOS – Distributed Operating System) (confronto

con NOS)

Non interpone i servizi di rete tra le applicazioni distribuite e il client, ma uno

- strato condiviso di servizi di sistema per il controllo delle risorse, siano esse dati

o risorse di sistema, come capacità computazionale o memoria.

In questo sistema gli utenti non sono a conoscenza della molteplicità delle

- macchine, l’accesso alle risorse condivise è identico all’accesso a risorse locali.

Possibilità di migrare processi o parti di essi da una macchina all’altra per

- migliorare le prestazioni dei processi stessi, tramite politiche di bilanciamento

del carico e di efficienza dell’hardware.

Trasparenza: è un aspetto importante dei sistemi distribuiti ed è la necessità di

nascondere all’utente finale i dettagli di come avvengono determinare funzionalità del

sistema. Più c’è trasparenza, meno l’utente finale sa come funziona il sistema.

Categorie di trasparenza:

Trasparenza d’accesso: permette l’accesso a risorse locali e remote con le

- stesse operazioni e stesso formato dei dati

Trasparenza di località: permette l’accesso a risorse remote senza conoscere

- la loro locazione fisica nella rete

Trasparenza di concorrenza: permette a più processi di operare con risorse

- condivise senza interferenze.

Trasparenza di replicazione: permette l’uso di istanze multiple delle risorse

- senza intaccarne l’affidabilità e l’integrità

Trasparenza di fallimento: permette di sanare eventuali fallimenti parziali del

- sistema senza che l’utente ne abbia evidenza

Trasparenza di mobilità: permette il trasferimento di dati, utenti e sw su

- macchine diverse senza impatto utente

Trasparenza di performance: permette la riconfigurazione dinamica (load

- balancing) senza impatto

Trasparenza di persistenza: permette di nascondere una risorsa sia in

- memoria sia su disco

Scalabilità: capacità di un sistema di mantenere le stesse prestazioni all’aumentare

delle richieste di risorse

Tecniche di scalabilità: gli elementi costruttivi di un sistema distribuito sono servizi,

dati e algoritmi. Se essi fossero centralizzati su una stessa macchina si avrebbero

problemi di performance/scalabilità del sistema. Esistono quindi diverse tecniche, da

poter applicare ad elementi distribuiti, che permettono di aumentare il grado di

scalabilità del sistema.

Comunicazione asincrona: comunicazione tra i componenti non bloccante

- (permette quindi un elevato grado di trasparenza di concorrenza)

Fat client vs. fat server: delega dei compiti ai nodi meno impegnati

- Fat client: client con molte funzionalità che è meno dipendente dal

o server

Fat server: server con molte funzionalità al quale dipendono

o maggiormente i client collegati.

Ripartizione dei compiti: parallelizzazione delle attività tramite ripartizione

- gerarchica come nei DNS o tramite pipeline.

Replicazione: più nodi forniscono lo stesso servizio (ma ciò introduce problemi

- di consistenza dei dati)

Caching delle informazioni: salvataggio temporaneo di dati recenti nella

- memoria centrale per velocizzare le prestazioni in caso di richieste multiple

delle stessa risorsa (può essere visto come una forma di replicazione lato client)

Modello Client-Server

L’architettura di base prevede che un client acceda ad un server con una

- richiesta e che il serve risponda con un risultato

La richiesta può anche essere “girata” da un server ad un altro (se le

- informazioni non risiedono sul server contattato, oppure se esso è molto carico),

caso in cui si parla di accesso a server multipli, oppure può avvenire tramite

proxy server, che funge da intermediario per le comunicazioni in entrata/uscita.

Il modello di interazione tra processi client e processi server è un modello

- sincrono, in cui il client che ha emesso la richiesta attende che il server la

elabori e restituisca una risposta prima di procedere.

Le comunicazioni tra client e server si basano su protocolli applicativi che

- definiscono il formato, l’ordine di invio e ricezione dei messaggi, i tipi di dati e le

azioni da eseguire quando si riceve un messaggio.

Esempi di protocolli applicativi sono HTTP, FTP e SMTP

-

Aspetti critici

Ripartizione dei compiti tra client e server: chi-fa-cosa dipende dal tipo di

- operazione (es: in una banca, tutto è gestito lato server) ma ciò influenza le

operazioni in base al carico.

Identificazione e accesso al server: il client deve avere le informazioni

- sufficienti all’accesso al server

Comunicazione tra client e server: le primitive disponibili e le modalità per

- la comunicazione

Gestione del ciclo di vita di client e server: bisogna regolamentare

- l’attivazione e la terminazione del client e del server.

Alternativa valida: architettura a più livelli, in cui esistono dei server che si

comportano anche da client, richiedendo informazioni ad ulteriori server posti nella

rete. (es: server di presentazione <-> server applicazione <-> server db).

Come fa il client a conoscere l’indirizzo del server? Esso può essere espresso

come costante (nel caso di applicazioni di client come i client del servizio bancario),

oppure può essere inserito dall’utente (es: web browser), ottenuto via un name server

o un repository da cui il client può ottenere le informazioni necessarie (DNS) o tramite

un protocollo diverso per l’individuazione del server (Broadcast per DHCP)

Modello P2P

Nel modello peer-to-peer (P2P) non esiste un server definito, e tutti i client si

- comportano e partecipano al sistema in egual misura.

Le comunicazioni avvengono in maniera asincrona e attraverso lo scambio di

- messaggi, eventualmente basati comunque su un protocollo client/server

durante la connessione (TCP)

I sistemi P2P si organizzano e gestiscono autonomamente, tramite un controllo

- decentrato grazie all’adattabilità della morfologia di rete

Aspetti critici:

Difficoltà nell’individuazione dei partecipanti

- Gestione di connessione e comunicazione tra i peer

- Gestione di inserimento e cancellazione di peer/processi

- Comunicazione multicast e broadcast

-

Fasi principali:

Boot: permette ad un peer di trovare una rete e di collegarsi ad essa (anche se

- nessuno ormai fa boot P2P, questa operazione viene vista più come

un’operazione client/server tramite i cosiddetti superpeer)

Lookup: permette ad un peer di trovare con chi interagire (il proprietario del

- file cercato/la persona desiderata per chattare). Anche questa operazione viene

effettuata tramite superpeer.

Interazione: due peer iniziano la loro interazione (chat/scambio file)

- Pure se le 3 operazioni avvengono tutte peer-to-peer

o P2P se le fasi di lookup e interazione sono svolte peer-to-peer mentre il

o fase di boot prevede l’utilizzo di qualche server

P2P ibride nelle quali l’unica fase realmente peer-to-peer è lo scambio,

o mentre boot utilizza qualche server e il lookup viene svolto da peer

particolari detti superpeer/hub/mainpeer/server (principalmente nelle reti

di scambio file)

Comunicazione

Tipologie principali di comunicazione d’informazioni

Asincrona: il mittente non attende una risposta del ricevente prima di

- procedere

Persistente: il middleware memorizza i dati fino alla consegna del messaggio

- al ricevente (non è necessario che i processi mittente/destinatario siano in

esecuzione prima e dopo l’invio/ricezione dei messaggi)

Sincrona: il mittente spedisce un messaggio e attende la conferma di

o ricezione da parte del ricevente (se attivo) o del middleware (se il

ricevente non è attivo). All’arrivo della conferma il mittente riprende

l’elaborazione

Asincrona: il mittente spedisce un messaggio ma non attende la

o conferma prima di procedere. Si affida quindi totalmente alle capacità di

consegna del protocollo di comunicazione scelto.

Transiente: se il destinatario non è connesso i dati non vengono scaricati.

- Asincrona transiente: il mittente invia un messaggio ma solo dopo che

o è consapevole che il destinatario sta girando, dopodichè precede nella

normale elaborazione.

Sincrona transiente receipt-based: (basata su un ritorno): il

o messaggio viene inviato ma magari il ricevente è impegnato in altro. A

quel punto, il mittente si ferma, aspettando un messaggio di ricevuta

(ACK) del ricevente (di solito il ricevente si interrompe alla ricezione del

messaggio solo per spedire indietro l’ACK oppure la gestione dei

messaggi è compiuta in un secondo momento)

Sincronia transiente basata sulla consegna: molto simile al

o secondo, solo che l’attesa del mittente si prolunga fin quando il ricevente

non inizia ad elaborare il messaggio, momento in cui esso invia l’ACK

Sincronia transiente basata sulla risposta: l’ACK viene posticipato al

o momento in cui il ricevente ha completato l’elaborazione del messaggio,

prolungando ancora l’attesa del mittente.

La comunicazione persistente viene utilizzata per lo più per lo scambio dei messaggi

senza richiedere che né il mittente né il ricevente siano attivi durante la trasmissione.

Si possono creare quindi 4 combinazioni attivo A e passivo P: A-A A-P P-A P-P

Interfacce basilari per le cose in un sistema di scambio messaggi

PUT: inserisce un messaggio nella coda specifica

- GET: blocca finchè la coda specificata non è vuota, e rimuove il primo

- messaggio

POLL: controlla la coda specificata per i messaggi e rimuove il primo messaggio

- senza bloccare

NOTIFY: installa un handler che viene chiamato quando un messaggio è

- presente nella coda specificata

Come identificare correttamente un processo con il quale comunicare

È necessario conoscere l’indirizzo IP dell’host su cui il processo è in esecuzione,

- e il numero di porta associato al processo

Usando delle socket, ossia delle API (Application Programming Interface) del

- sistema operativo che collegano un processo ad una determinata porta TCP/UDP

in modo da poter interfacciarsi

Primitive per l’utilizzo delle socket

SOCKET: crea un nuovo socket (punto di collegamento)

- BIND: collega un socket a un indirizzo locale

- LISTEN: enuncia la volontà di accettare connessioni in entrata sul socket

- ACCEPT: blocca il processo finchè non arriva una richiesta di connessione

- CONNECT: tenta una connessione in uscita

- WRITE: scrive sulla connessione

- READ: legge dalla connessione

- Attenzione: la lettura/scrittura su una socket basata su un canale

o condiviso da più processi può determinare problemi di concorrenza per

l’accesso multiplo ad una risorsa condivisa. È quindi necessario adottare

meccanismi di mutua esclusione.

CLOSE: chiude la connessione

-

Mentre un client è abbastanza semplice da realizzare, un processo server deve tenere

conto dell’affidabilità del server stesso e del possibile carico al momento della

connessione da parte di più client.

Come definire un server

Iterativo: soddisfa una richiesta alla volta

- Quando arriva una richiesta d

Anteprima
Vedrai una selezione di 9 pagine su 37
Sistemi Distribuiti - Riassunto del corso Pag. 1 Sistemi Distribuiti - Riassunto del corso Pag. 2
Anteprima di 9 pagg. su 37.
Scarica il documento per vederlo tutto.
Sistemi Distribuiti - Riassunto del corso Pag. 6
Anteprima di 9 pagg. su 37.
Scarica il documento per vederlo tutto.
Sistemi Distribuiti - Riassunto del corso Pag. 11
Anteprima di 9 pagg. su 37.
Scarica il documento per vederlo tutto.
Sistemi Distribuiti - Riassunto del corso Pag. 16
Anteprima di 9 pagg. su 37.
Scarica il documento per vederlo tutto.
Sistemi Distribuiti - Riassunto del corso Pag. 21
Anteprima di 9 pagg. su 37.
Scarica il documento per vederlo tutto.
Sistemi Distribuiti - Riassunto del corso Pag. 26
Anteprima di 9 pagg. su 37.
Scarica il documento per vederlo tutto.
Sistemi Distribuiti - Riassunto del corso Pag. 31
Anteprima di 9 pagg. su 37.
Scarica il documento per vederlo tutto.
Sistemi Distribuiti - Riassunto del corso Pag. 36
1 su 37
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Ingegneria industriale e dell'informazione ING-INF/05 Sistemi di elaborazione delle informazioni

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher RickyBolt di informazioni apprese con la frequenza delle lezioni di Sistemi distribuiti e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Milano - Bicocca o del prof De Paoli Flavio Maria.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community