You are on page 1of 6

I thread

Oltre al processo viene definita una nuova entit ad esso molto simile ma con particolari caratteristiche che agevolano la risoluzione di problemi con alta cooperazione e condivisione di risorse: i cosiddetti thread Al modello a processi che implementa una insieme di macchine virtuali (una per processo) si affianca quindi un modello a thread, che definisce un sistema di macchine virtuali che realizzano delle attivit piuttosto che un compito completo I processi descritti fino a questo momento vengono anche definiti processi pesanti, mentre i thread, sono detti processi leggeri Processi pesanti Il processo pu essere visto come linsieme della sua immagine e delle risorse che sta utilizzando. Viene definito spazio di indirizzamento linsieme dellimmagine di un processo e le risorse da esso possedute

Una caratteristica fondamentale dei processi che ciascuno di essi ha un proprio spazio di indirizzamento, ovvero due processi non condividono nessuna area di memoria Quando un processo si sospende per renderne operativo un altro, le operazioni che il SO deve compiere sono molteplici e complesse poich richiedono il salvataggio del contesto del processo che si sospende e il ripristino di quello che inizia o riprende la sua esecuzione. Questa operazione detta di context switch e richiede tempo utile alla CPU, sprecato per gestire operazioni non produttive: viene indicato con il nome di overhead Per questo motivo al processo viene attribuito laggettivo pesante

Obiettivo di ogni SO quello di ridurre al minimo loverhead migliorando gli algoritmi di scheduling

Processi leggeri Il processo in evoluzione pu essere visto come lunione di due componenti: le risorse che utilizza comprese nel suo spazio di indirizzamento e lesecuzione di un codice, cio il flusso di evoluzione del programma Il thread una parte del processo alla quale viene assegnata la CPU Un thread risulta allora un flusso di controllo (che pu essere attivato in parallelo ad altri) nellambito di uno stesso processo e quindi nellesecuzione di un programma In altre parole un thread un segmento di codice che viene eseguito in modo sequenziale allinterno di un processo pesante; tutti i thread definiti allinterno di un processo ne condividono le risorse, risiedono nello stesso spazio di indirizzamento e hanno accesso a tutti i suoi dati

Ogni thread viene eseguito in parallelo agli altri mandati in esecuzione dallo stesso processo con il vantaggio di condividere lo spazio di indirizzamento e quindi le strutture dati Il termine processo leggero vuole indicare che limplementazione di un thread meno onerosa di quella di un vero processo
Per evolvere parallelamente agli altri thread o processi, il thread mantiene comunque un insieme di caratteristiche comuni ai processi pesanti. I pi importanti: un identificatore di thread (ID); un program counter;

un insieme di registri;
uno stato di esecuzione; uno stack di esecuzione; uno spazio di memoria privato per le variabili locali

Risulta pi vantaggioso avere i thread rispetto ai processi in quanto le operazioni di context switch sono pi semplici e veloci dal momento che essi condividono i vari dati
I thread di un programma usano il SO mediante system call, i quali a loro volta utilizzano dati e tabelle di sistema dedicate al processo che devono essere progettate per essere utilizzate da pi thread simultaneamente senza che vengano persi i dati Luso dei thread in un programma comporta vantaggi, quali: miglioramento delle performance dei programmi, specialmente in applicazioni di tipo grafico; semplificano il codice: per eseguire cicli possibile utilizzare una classe timer che notifica una certa quantit di tempo trascorsa; garantiscono automaticamente la condivisione della memoria del processo cui appartengono