Thread (informatica): differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Aggiunta di fonti
rimuovo t:sf
Riga 1:
{{F|sistema operativo|maggio 2012|Questa voce manca completamente di fonti}}
[[File:Multithreaded process.svg|thumb|Un processo con due thread]]
Un '''thread'''<ref>Lett. "filone".</ref> o '''thread di esecuzione''', in [[informatica]], è una suddivisione di un [[processo (informatica)|processo]] in due o più filoni (istanze) o sottoprocessi che vengono [[esecuzione (informatica)|eseguiti]] [[concorrenza (informatica)|concorrentemente]] da un [[computer|sistema di elaborazione]] [[monoprocessore]] (monothreading) o [[multiprocessore]] ([[multithreading]]) o [[multicore]].<ref>{{Cita pubblicazione|autore=Edward A. Lee|data=Maggio 2006|titolo=The Problem with Threads|lingua=en|abstract=https://ieeexplore.ieee.org/abstract/document/1631937}}</ref>
Line 9 ⟶ 8:
Un thread è composto essenzialmente da tre elementi: [[program counter]], valori nei [[registro (informatica)|registri]] e stack. Le risorse condivise con gli altri thread di uno stesso ''task'' sono essenzialmente la sezione di codice, la sezione di dati e le risorse del [[sistema operativo]].
 
Nelle architetture a processore singolo, quando la [[CPU]] esegue alternativamente [[istruzione (informatica)|istruzioni]] di thread differenti, si parla di [[multithreading]] a divisione di tempo: la commutazione fra i thread avviene di solito tanto frequentemente da dare all'utente l'impressione che tutti i task siano eseguiti contemporaneamente. Nelle architetture multi-processore i thread vengono invece realmente eseguiti contemporaneamente, cioè in parallelo, ciascuno su un distinto core.<ref>{{Cita web|url=https://learn.microsoft.com/it-it/windows/win32/procthread/processes-and-threads|titolo=Processi e thread - Win32 apps|autore=Karl-Bridge-Microsoft|sito=learn.microsoft.com|data=2023-06-13|lingua=it-it|accesso=2023-10-24}}</ref>
 
Quando delle azioni sono effettuate a livello di thread tutta l'informazione di stato riguardante l'esecuzione viene tenuta in strutture dati a livello di thread. Ci sono comunque molte azioni che influiscono su tutti i thread di un processo e che il sistema operativo deve gestire a livello di processo. A questo genere di azioni appartengono la ''sospensione'' e la ''terminazione'' di un processo. In entrambi i casi la rimozione dalla memoria dello spazio di indirizzamento si ripercuote su tutti i thread che condividono quello spazio di indirizzamento e che entrano quindi tutti insieme nello stato di sospensione o di terminazione.