cerca
Sistemi Operativi
modifica cronologia stampa login logout

Wiki

UniCrema


Materie per semestre

Materie per anno

Materie per laurea


Help

Return to Sistemi Operativi  (Edit)

Uni.SO-Mod3-2-Lez2 History

Show minor edits - Show changes to output

Changed lines 19-20 from:
Avviene una serializzazione dei vari thread su un'unico flusso, la cui eseguita sul processore è vista come se fosse un unico thread.
to:
Avviene una serializzazione dei vari thread su un'unico flusso, la cui esecuzione sul processore è vista come se fosse un unico thread.
Added lines 1-53:
(:title Sistemi Operativi:)
[[Torna alla pagina di Sistemi Operativi->SistemiOperativi]]
----

%titolo%''':: Appunti caotici ::'''

%center%%sottotitolo%Lezione 2
%center%%sottotitolo%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 eseguita 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->SistemiOperativi]]