Thread (informatica): differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
fix
 
(2 versioni intermedie di 2 utenti non mostrate)
Riga 1:
[[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>
 
== Definizioni ==
La specificaspecificazione dell'implementazione dei thread e dei [[Processo (informatica)|processi]] dipende dal [[sistema operativo]], ma in generale un thread è contenuto all'interno di un processo e diversi thread contenuti nello stesso processo condividono alcune risorse, lo spazio d'indirizzamento del processo<ref>{{Cita pubblicazione|autore=Mike Accetta|autore2=Robert Baron|autore3=William Bolosky|coautori=David Golub, Richard Rashid, Avadis Tevanian, Michael Young|anno=1986|titolo=Mach: A New Kernel Foundation For UNIX Development|editore=Computer Science Department, Carnegie Mellon University|città=Pittsburgh, Pa. 15213|pp=3-4|lingua=en|url=https://cseweb.ucsd.edu//classes/wi11/cse221/papers/accetta86.pdf|citazione=A thread is the basic unit of CPU utilization. It is roughly equivalent
to an independent program counter operating within a task. All threads within a task share access to all task resources.}}</ref>, mentre processi differenti non condividono le loro risorse.
 
Line 15 ⟶ 16:
 
Ci sono quattro operazioni di base associate ai cambiamenti di stato di un thread.
* '''Creazione:''' quando un processo viene creato, si crea anche un thread. Successivamente un thread può creare un altro thread a cui deve fornire il [[Puntatore (programmazione)|puntatore]] delle istruzioni e gli argomenti: vengono creati un contesto per i registri e gli stack, e il nuovo thread è messo nella coda dei ''ready''.
* '''Blocco:''' quando un thread deve aspettare un particolare evento entra in stato ''blocked'' (salvando i registri utente, il program counter e lo [[stack pointer]])
* '''Sblocco:''' quando si verifica l'evento per cui il processo era stato posto in stato blocked, il thread passa allo stato ready.
* '''Terminazione:''' quando un thread completa il suo compito, il suo contesto per i registri e i suoi stack vengono deallocati.
*'''Sus'''
 
== Applicazioni ==