Thread

In alcune situazioni una singola applicazione deve poter gestire molti compiti simili tra loro

In altre una singola applicazione può dover gestire più compiti diversi, a volte eseguibili concorrentemente

Una possibile soluzione è quella della creazione di più processi tradizionali

Nel modello a processi, l’attivazione di un processo o il cambio di contesto sono operazioni molto complesse che richiedono ingenti quantità di tempo per essere portate a termine

Tuttavia a volte l’attività richiesta ha vita relativamente breve rispetto a questi tempi (ad esempio l’invio di una pagina html da parte di un server web: applicazione troppo leggera per motivare un nuovo processo)

Possibile soluzione: threads

Un thread è talvolta chiamato processo leggero (lightweight process)

Condivide con gli altri thread che appartengono allo stesso processo la sezione del codice, la sezione dei dati e altre risorse di sistema, come i file aperti e i segnali

Processi tradizionali: singolo thread, processi multithread: più thread

Molti kernel sono ormai multithread, con i singoli thread dedicati a servizi specifici come la gestione dei dispositivi periferici o delle interruzioni

Molti programmi per i moderni pc sono predisposti per essere eseguiti da processi multithread

Un’applicazione, solitamente, è codificata come un processo a sé stante comprendente più thread di controllo

Il multithreading è la capacità di un sistema operativo di supportare thread di esecuzione multipli per ogni processo

Modello a thread

Le idee di base dietro il modello a thread sono:

Ogni processo racchiude più flussi di controllo (thread) che condividono le aree di testo e dei dati

Un thread è l’unità di base d’uso della CPU e comprende: