cerca
Sistemi Operativi
modifica cronologia stampa login logout

Wiki

UniCrema


Materie per semestre

Materie per anno

Materie per laurea


Help

Sistemi Operativi

Torna alla pagina di Sistemi Operativi


 :: Appunti caotici ::

Lezione 2 Modelli multi-thread

Pag 1

Sommario

...

Pag 2

Realizzazione di sistemi multi-thread

Per realizzare un sistema multi-thread in un sistema operativo con supporto per soli processi pesanti, occorre simularli a livello utente all'interno di un processo utilizzando una libreria a livello utente. Di fatto il sistema operativo continuerà a trattare esclusivamente processi pesanti.

Modello molti-a-uno

Avviene una serializzazione dei vari thread su un'unico flusso, la cui esecuzione sul processore è vista come se fosse un unico thread.

Pag 3

Modello uno-a-uno

Molto più efficiente del modello precedente, ma non così efficiente. In più ho il problema che ho a disposizione di un numero di thread a livello kernel limitati, quindi potrei averne diversi in attesa a livello utente.

Modello molti-a-molti

Cerca di bilanciare la distribuzione dei thread limitando l'utilizzo di quelli del kernel. Simula in pratica l'esecuzione di n thread su un numero ridotto di thread in modo tale da distribuire le computazioni.

Pag 4

Modello a due livelli

Offre la possibilità di raggruppare i thread a livello utente in due sottoinsiemi da mappare nel modo ritenuto più opportuno (ad esempio, qualcuno in modalità uno-a-uno, altri molti-a-molti).

Organizzazione della cooperazione

...

Pag 5

Thread simmetrici

Ogni thread può compiere le stesse operazioni di tutti gli altri (sono praticamente equivalenti).

Per garantire che ce ne sia sempre almeno uno pronto dovrei avere tanti thread quanti sono le richieste esterne che mi potrebbero arrivare.

Thread gerarchici

I thread vengono divisi in coordinatori e lavoratori. I primi coordinano i lavori (chi fa che, cosa e quando), prendendo le richieste esterne e decidendo eventualmente a quale thread lavoratore indirizzarle, i secondi fanno il lavoro sporco.

Questa gestione a due livelli mi permette di avere il coordinatore sempre reperibile.

Pag 6

Thread in pipeline

Ogni thread svolge una porzione del lavoro complessivo, essendo ognuno specializzato in un preciso sottoinsieme delle funzioni dell'elaborazione complessiva.

Ottengo una distribuzione dei lavori ed un throughput elevato, dal momento che ogni thread torna in attesa di soddisfare nuove richieste dopo il tempo minimale che impiega per svolgere la sua piccola sequenza di operazioni.


Torna alla pagina di Sistemi Operativi