Thread nei sistemi operativi
In alcuni sistemi operativi, 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 è bloccata (ad esempio in attesa di input).
- Condivisione delle risorse: i thread condividono la memoria e le risorse del processo di appartenenza. Poiché un'applicazione può avere più thread, il risparmio è notevole.
- Economia: normalmente creare un processo è costoso, poiché un thread condivide parte delle risorse di un processo, la sua creazione è più veloce.
- Uso di più unità di elaborazione.
Un thread è simile a 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 e le stesse risorse. Essendo il thread più leggero, la fase di context switch sarà più rapida.
Thread a livello utente
La gestione dei thread è fatta a livello utente tramite librerie, e il sistema operativo ignora la presenza dei thread. I thread sono gestiti da un processo a runtime in modalità utente (lo scheduling avviene senza intervento del kernel).
Vantaggi:
- La commutazione fra i thread non richiede l’intervento del nucleo.
- Lo scheduling dei processi è indipendente da quello del nucleo.
- Lo scheduling può 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 sistema operativo ed a ciascuna funzione corrisponde una system call.
Vantaggi:
- In un sistema multiprocessore il nucleo può 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 è costosa (non vale più 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 ottiene 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...
-
Sistemi operativi
-
Sistemi operativi
-
Appunti di Sistemi operativi
-
Sistemi operativi - Scheduling processi nei sistemi operativi