vuoi
o PayPal
tutte le volte che vuoi
Thread
In alcuni s.o. il sistema fornisce il supporto per definire sequenze di controllo multiple all'interno di un singolo processo. Queste
sequenze di controllo sono solitamente chiamate thread. Questo tipo di approccio ha dei vantaggi:
• Tempo di risposta: un’applicazione multithread permette all’utente di interagire sempre con essa anche se una parte e bloccata
(ad esempio in attesa di input)
• Condivisione delle risorse: i thread condividono la memoria e le risorse del processo di appartenenza. Poiche una applicazione
puo avere piu thread il risparmio e notevole.
• Economia (normalmente creare un processo e costoso, poiche un thread condivide parte delle risorse di un processo la sua
creazione e piu veloce)
• Uso di piu unita di elaborazione
Un thread e simile ad un processo ma richiede meno risorse da parte del Sistema Operativo. Per ogni thread abbiamo:
• Thread ID (identificativo)
• Program Counter
• Registri
• Stack
Un insieme di thread lanciati dallo stesso processo condividono con il processo che li ha generati la stessa area di dati, le stesse risorse.
Essendo il thread piu leggero la fase di contex switch sarà più rapida.
Thread a livello utente
La gestione dei thread e fatta a livello utente tramite librerie, il sistema operativo ignora la presenza dei thread. I thread sono gestiti da
un processo a run time in modalita utente (lo scheduling avviene senza intervento del kernel).
Vantaggi:
• La commutazione fra i thread non richiede l’intervento del nucleo
• Lo scheduling dei processi e indipendente da quello del nucleo
• Lo scheduling puo essere ottimizzato per la specifica applicazione
• Sono indipendenti dal sistema operativo in quanto implementati come libreria
Problemi:
• Le chiamate di sistema sono bloccanti (si blocca tutto il processo e non il singolo thread)
• Non si sfrutta un eventuale parallelismo hardware
Thread a livello del nucleo
Sono gestiti direttamente dal s.o. ed a ciascuna funzione corrisponde una system call.
Vantaggi:
• In un sistema multiprocessore il nucleo puo assegnare thread dello stesso processo a CPU diverse
• In caso di chiamate di sistema si blocca il singolo thread, non l’intero processo
Problemi:
• La commutazione e costosa (Non vale piu uno dei vantaggi dell’uso dei thread)
Problemi di schedulazione
Esempio:
Processo A: 1 thread
Processo B: 100 thread
Thread utente: A e B ottengono lo stesso tempo macchina. Ogni thread di B un centesimo dell’unico di A.
Thread di sistema: Ogni thread ottiene lo stesso tempo. A ottiene un centesimo del tempo di B.
Modelli di programmazione multithread
Molti a uno
Molti thread di livello utente sono mappati in un singolo thread del nucleo (usato ad esempio quando il kernel non gestisce i thread).
Uno a uno
Ad ogni thread di livello utente corrisponde un singolo thread del nucleo.
Molti a molti
Consente a molti thread di livello utente di essere mappati in molti thread del nucleo. Permette al s.o. di creare un numero sufficiente di
thread a livello nucleo.