Un obiettivo generale in tutti i sistemi con molte CPU è il bilanciamento del carico:
Due tipi
Una applicazione viene assegnata ad un gruppo di CPU e vi rimane per tutta l’esecuzione
Basso sovraccarico.
Non tiene conto delle variazioni del numero e del tipi di processi di una applicazione.
Utile quando l’applicazione ha un comportamento predicibile e noto prima dell’esecuzione (es sistemi con esigenze real time).
Il sistema misura il carico di lavoro di ogni processore.
Quando il carico tra i nodi è sbilanciato il sistema trasferisce i processi dai nodi sovraccarichi a quelli scarichi (migrazione dei processi).
Utile in applicazioni dove le comunicazioni tra i nodi non sono costanti e quando i processi hanno un tempo di esecuzione non predicibile.
Problemi
Soluzione
Quando iniziare la migrazione dei processi?
Due politiche
1. Iniziata dal sender:
2. Iniziata dal receiver:
Possibili soluzioni ibride.
Esempio di migrazione iniziata dal sender.
I processori con carico di lavoro elevato cercano un numero fissato (ad es. 10) di processori che hanno un carico basso, partendo dai nodi vicini.
Un processore che ha un carico di lavoro basso, segnala la sua disponibilità pubblicando una “offerta”.
Il valore dell’offerta è calcolata in base alla differenza di carico tra i due processori e in base alla distanza tra i nodi.
Il sender invia il processo al processore che ha offerto di più.
Esempio di migrazione iniziata dal receiver.
Ogni processore mantiene informazioni del carico degli altri processori in apposite tabelle.
Al variare del carico, le informazioni sono fatte scorrere attraverso la rete, ed ogni processore aggiorna le proprie tabelle.
I processori sottoutilizzati possono richiedere processi ai processori sovraccarichi.
Il bilanciamento dinamico del carico è basato sulla migrazione di processi tra le CPU.
Oltre a ciò sussistono altri aspetti che richiedono la migrazione dei processi:
Benefici
Cosa migra (lo stato del processo)
Come migra una volta che i processi sorgente e destinatario si accordano per la migrazione
Trasparenza: altri processi cooperanti non dovrebbero notare se un processo è migrato.
Minima dipendenza residua: il processo migrato non dovrebbe più usare informazioni sulla vecchia CPU (info sulla paginazione, comunicazione con processi sul vecchio nodo).
Efficienza: minimo tempo di trasferimento e minimo costo di rilocazione.
In generale la migrazione freezing e restarting è un meccanismo semplice da implementare ma costoso e poco efficiente.
Contesto (registri, program counter) pochi KB.
Spazio di indirizzamento (pagine della memoria) molti MB.
Una soluzione: migrazione pigra
Migrazione sporca
Migrazione flushing
Migrazione con precopia
Un sistema multiprocessore è composto da più CPU che condividono un’unica memoria.
Problema della sincronizzazione degli accessi (mutua esclusione).
Le tecniche per sistemi monoprocessori non sono sempre utilizzabili:
Lock pausa risveglio
Simile alle condizioni basate su attesa attiva ma con minor spreco di cicli di CPU e minor traffico sul bus:
Non esclude la race condition.
Lock read/write
Obiettivo: rilassare le condizioni di accesso.
Basato sul protocollo di sincronizzazione lettori/scrittori.
Alcuni multiprocessori hanno una propria memoria locale (o una cache) per ridurre il traffico sulla rete o per ridurre i problemi di conflitto in memoria centrale.
Problema: coerenza delle cache.
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.