Una definizione di sistema distribuito:
“Il mio programma gira su un sistema distribuito quando non funziona per colpa di una macchina di cui non ho mai sentito parlare“ (L. Lamport).
Caratteristiche fondamentali di un sistema distribuito:
Un sistema distribuito è un sistema i cui componenti, localizzati in computer connessi in rete, comunicano e coordinano le loro azioni solo attraverso scambio di messaggi (G. Coulouris et al.)
Caratteristiche fondamentali di un sistema distribuito:
Fattori di complessità:
I sistemi aperti richiedono:
Access transparency: uniformità di accesso alle risorse locali e remote.
Location transparency: accesso alle risorse senza conoscere la loro posizione fisica o sulla rete (es.: edificio o indirizzo IP).
Concurrency transparency: possibilità per le applicazioni di operare concorrentemente sulle risorse condivise, senza interferire.
Replication transparency: uso di più istanze di una risorsa (tipicamente, per aumentarne disponibilità, affidabilità e prestazioni), in maniera trasparente a utenti e programmatori applicativi.
Failure transparency: possibilità di mascherare l’insorgere di guasti di componenti hardware o software (utenti e applicazioni devono poter completare le loro attività anche in caso di guasti).
Mobility transparency: possibilità di rilocare (far migrare) risorse e clienti durante il loro ciclo di vita, senza condizionare il comportamento di utenti e applicazioni.
Performance transparency: possibilità di riconfigurazione dei sistemi per migliorarne le prestazioni al variare del carico.
Scaling transparency: possibilità di espansione di sistemi ed applicazioni, senza doverne cambiare la struttura o gli algoritmi.
1. Caratterizzazione dei sistemi distribuiti
2. Modelli di sistemi distribuiti
3. Tempo e sincronizzazione nei Sistemi Distribuiti
4. Stato globale nei Sistemi Distribuiti
5. Problemi di consenso nei sistemi distribuiti
7. Algoritmi di mutua esclusione nei sistemi distribuiti
8. Algoritmi di elezione nei sistemi distribuiti
10. Il Network File System di SUN Microsystems
11. AFS (Andrew File System) e GFS (Google File System)
12. Transazioni e controllo di concorrenza
13. Transazioni
15. Affidabilità (dependability) dei sistemi software distribuiti
16. Affidabilità dei sistemi software distribuiti
17. Software Faults
18. Classificazione e analisi dei difetti software
G. Coulouris et al., Distributed Systems: Concepts and Design, (Cap. I), IV ed., 2005.