Processo (informatica): differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
fix
m Altri progetti: Aggiunto il parametro "Wikizionario (italiano)" nel template "Interprogetto"
 
(3 versioni intermedie di 2 utenti non mostrate)
Riga 16:
{{vedi anche|Thread (informatica)}}
 
Il concetto di processo è associato, ma comunque distinto da quello di [[Thread (informatica)|thread]] (abbreviazione di '''thread of execution''', filo dell'esecuzione) con cui si intende invece l'unità granulare in cui un processo può essere suddiviso (''sottoprocesso'') e che può essere eseguito a divisione di tempo o in parallelo ad altri thread da parte del processore. In altre parole, un thread è una parte del processo che viene eseguita in maniera [[concorrenza (informatica)|concorrente]] ed indipendente internamente allo stato generale del processo stesso. Il termine inglese rende bene l'idea, in quanto si rifà visivamente al concetto di fune composta da vari fili attorcigliati: se la fune è il processo in esecuzione, allora i singoli fili che la compongono sono i thread.
 
Un processo ha sempre almeno un thread (se stesso), ma in alcuni casi un processo può avere più thread che vengono eseguiti in parallelo.
Una differenza sostanziale fra thread e processi consiste nel modo con cui essi condividono le risorse: mentre i processi sono di solito fra loro indipendenti, utilizzando diverse aree di memoria ed interagendo soltanto mediante appositi meccanismi di comunicazione messi a disposizione dal sistema, al contrario i thread di un processo tipicamente condividono le medesime [[informazioni di stato]], la memoria ed altre [[Risorsa informatica|risorse di sistema]].
 
L'altra differenza sostanziale è insita nel meccanismo di attivazione: la creazione di un nuovo processo è sempre onerosa per il sistema, in quanto devono essere allocate ovvero assegnate risorse necessarie alla sua esecuzione (allocazione di memoria, riferimenti alle periferiche, e così via, operazioni tipicamente onerose); il thread invece è parte di un processo e quindi una sua nuova attivazione viene effettuata in tempi ridottissimi a costi minimi.
Riga 48:
 
=== Thread e handle ===
Nel [[sistema operativo]], ciascun processo è identificato da un numero, detto '''[[PID (Unix)|PID]]''' ('''P'''rocessProcess '''ID'''entifierIDentifier) oppure "process handle".
 
Ad un processo sono associate le seguenti [[struttura dati|strutture dati]]:
Riga 56:
* Uno o più thread.
 
L'insieme di tali informazioni è raccolto o indicizzato da una struttura, unica per ogni processo, detta '''[[process control block]]''' (abbreviata in '''PCB'''). A loro volta, tutti i PCB sono elencati in una struttura detta '''process table'''.
 
Se il sistema operativo gestisce i thread, anche ciascun thread è identificato da un numero, detto '''TID''' ('''T'''hreadThread '''ID'''entifierIDentifier) oppure "thread handle". Un '''handle''' (lett. "maniglia") è un riferimento codificato che consente ad un thread di accedere alle entità (oggetti) del sistema operativo. In pratica, gli handle sono identificatori astratti che facilitano la manipolazione (da parte dei thread dei vari processi) dei componenti del sistema (kernel in primis): sono come gli ID dei ticket. Il numero degli handle attivi (cioè quelli che sono utilizzati dai thread), in un determinato istante, è visualizzabile insieme al numero dei thread e dei processi in esecuzione.
 
Ad un thread sono associate le seguenti [[struttura dati|strutture dati]]:
Riga 107:
 
== Altri progetti ==
{{Interprogetto|preposizione=sul|wikt=processo}}
 
== Collegamenti esterni ==