Un sistema monoprocessore:
Possibile stabilire un ordinamento degli eventi
Un sistema multicomputer/distribuito:
Impossibile stabilire un ordinamento completo degli eventi
Denotata con →
Definizione: A si e’ verificato prima di B se (A → B )
A e B sono eventi dello stesso processo e A è stato eseguito prima di B.
A è l’evento di inviare un messaggio da un processo e B è l’evento di ricevere lo stesso messaggio da un altro processo.
A → C e C → B (proprietà transitiva).
Se non è possibile stabilire una relazione di “verificato prima” tra due eventi A e B, allora i due eventi devono essere considerati concorrenti.
Si associa una marca temporale ad ogni evento del sistema e si richiede che per ogni coppia di eventi A e B, se A → B, allora la marca temporale di A deve essere minore della marca temporale di B.
In ogni processo Pi la marca temporale è realizzata mediante il valore di un orologio logico LCi. L’orologio logico è un contatore che viene incrementato ad ogni evento all’interno del sistema.
Se un processo riceve un messaggio con marca temporale minore, esso sincronizza il suo orologio logico.
Il problema della mutua esclusione è un altro problema che richiede un coordinamento con decisioni che devono essere prese in maniera distribuita.
Assunzioni
Richieste
Se Pi è dentro la propria sezione critica allora nessun altro processo deve essere dentro la propria sezione critica.
Uno dei processi nel sistema è scelto come coordinatore.
Lo schema garantisce la mutua esclusione e evita l’attesa indefinita.
Richiede 3 comunicazioni per ogni accesso alla sezione critica.
Basato sul concetto di marca temporale.
Quando un processo Pi vuole entrare nella sezione critica genera una nuova marca temporale TS, e manda un messaggio di richiesta (Pi ,TS) a tutti gli altri processi del sistema.
Quando un processo Pj riceve un messaggio di richiesta può:
Quando il processo Pi riceve la risposta da tutti gli altri processi, può entrare nella sezione critica e differisce tutte le eventuali richieste in arrivo.
All’uscita dalla sezione critica il processo risponde a tutte le richieste sospese.
Algoritmo di Agrawala e Ricart per la mutua esclusione.
Aspetti positivi
Aspetti negativi
I processi sono organizzati logicamente in una struttura ad anello.
Uno speciale messaggio, il contrassegno, viene fatto circolare lungo l’anello: chi lo possiede può entrare nella sezione critica e trattiene il contrassegno.
Quando il processo esce, il contrassegno viene rimesso in circolazione.
Se il processo non vuole entrare nella sezione critica, lo passa al successivo.
Se l’anello è unidirezionale non vi sono situazioni di attesa indefinita.
Alcuni approcci per la prevenzione dei deadlock nei sistemi monoprocessori possono essere utilizzati nei sistemi multicomputer/distribuiti.
Ordinamento globale delle risorse
Algoritmo del banchiere
Il problema principale in un sistema distribuito è decidere come e dove mantenere il grafo di attesa.
Usualmente si mantiene in ogni sito un grafo di attesa locale.
I nodi del grafo corrispondono a tutti i processi (anche di altri siti) ai quali è stata allocata una risorsa locale.
Non è sufficiente verificare l’assenza di cicli all’interno dei singoli grafi locali.
L’unione di tutti i grafi è mantenuta da un singolo processo: il coordinatore per il rilevamento.
Differenti opzioni per la costruzione del grafo di attesa :
Un problema: falsi cicli di deadlock (deadlock fantasma).
Tutti i siti condividono la responsabilità di rilevare lo stallo.
Ogni sito costruisce un grafo di attesa locale che è parte del grafo globale.
Ad ogni grafo locale si aggiunge un nodo Pex per fare riferimento a risorse di altri siti.
Come fare a vedere se c’è effettivamente uno stallo?
Se S1 trova un ciclo che coinvolge Pex nel sito S2 allora manda le informazioni del proprio grafo a S2, che aggiorna il proprio grafo con le nuove informazioni.
Ciclo che non coinvolge Pex allora c’è deadlock.
Nel caso di più siti puo’ essere necessario passare le informazioni da sito a sito.
In un numero di passi al più pari al numero di siti viene rilevato lo stallo.
Molti algoritmi alla base dei sistemi operativi distribuiti richiedono un coordinatore (o master, leader):
In caso di caduta del processo o di interruzione della comunicazione è necessario eleggere un nuovo coordinatore.
Algoritmi basati sul concetto di priorità (per semplicita’ priorita’ di Pi = i).
Il coordinatore e’ il processo con priorità maggiore.
Si assume nel seguito una corrispondenza 1-1 tra processi e siti.
Se un processo Pi invia una richiesta e il coordinatore non risponde in un intervallo di tempo T, allora Pi assume che il coordinatore non è più attivo e cerca di eleggere se stesso come nuovo coordinatore:
Pi invia un messaggio a ogni processo Pj con un numero di priorità più alto (j > i) ed aspetta per un tempo T’ la risposta da tutti gli altri processi.
Un processo Pi in ogni istante può ricevere un messaggio da Pj del tipo:
Quando un processo caduto viene ripristinato, inizia immediatamente l’algoritmo di elezione.
Se non ci sono processi attivi con priorità maggiore, il processo ripristinato si impone come coordinatore, anche se già in esecuzione un altro coordinatore.
Richiede al più n2 messaggi per l’elezione.
2. Lo stallo dei processi – parte prima
3. Lo stallo dei processi – parte seconda
4. Lo stallo dei processi – parte terza
6. Il S.O. Linux – parte prima
7. Il S.O. Linux – parte seconda
8. Il S.O. Windows – parte prima
9. Il S.O. Windows – parte seconda
10. Il S.O. Windows – parte terza
11. I S.O. multimediali – parte prima
12. I S.O. multimediali – parte seconda
13. I S.O. multimediali – parte terza
14. I Sistemi Operativi distribuiti - parte prima
15. I Sistemi Operativi distribuiti - parte seconda
16. I Sistemi Operativi distribuiti - parte terza
17. I Sistemi Operativi distribuiti - parte quarta
18. I Sistemi Operativi distribuiti - parte quinta
19. I Sistemi Operativi distribuiti - parte sesta
Silberschatz , Galvin, Gagne – Sistemi Operativi 8a ed. Capitolo 16.
Tanenbaum – Moderni sistemi operativi 3a ed. Capitolo 8.
Deitel, Deitel, Choffnes - Sistemi operativi 3a ed. Capitoli 13 e 14.
2. Lo stallo dei processi – parte prima
3. Lo stallo dei processi – parte seconda
4. Lo stallo dei processi – parte terza
6. Il S.O. Linux – parte prima
7. Il S.O. Linux – parte seconda
8. Il S.O. Windows – parte prima
9. Il S.O. Windows – parte seconda
10. Il S.O. Windows – parte terza
11. I S.O. multimediali – parte prima
12. I S.O. multimediali – parte seconda
13. I S.O. multimediali – parte terza
14. I Sistemi Operativi distribuiti - parte prima
17. I Sistemi Operativi distribuiti - parte quarta
18. I Sistemi Operativi distribuiti - parte quinta
19. I Sistemi Operativi distribuiti - parte sesta
I podcast del corso sono disponibili anche su iTunesU e tramite Feed RSS.