Differenza fondamentale : Thread e Process sono due termini strettamente correlati in multi-threading. La principale differenza tra i due termini è che i thread fanno parte di un processo, ovvero un processo può contenere uno o più thread, ma un thread non può contenere un processo.
Nella programmazione, ci sono due unità base di esecuzione: processi e thread. Entrambi eseguono una serie di istruzioni. Entrambi sono avviati da un programma o dal sistema operativo. Questo articolo aiuta a distinguere tra le due unità.
Un processo ha un ambiente di esecuzione autonomo. Ha un set completo di risorse di run-time di base private; in particolare, ogni processo ha il proprio spazio di memoria. I processi sono spesso considerati simili ad altri programmi o applicazioni. Tuttavia, il funzionamento di una singola applicazione potrebbe in effetti essere un insieme di processi cooperativi. Per facilitare la comunicazione tra i processi, la maggior parte dei sistemi operativi utilizza risorse Inter Process Communication (IPC), come pipe e socket. Le risorse IPC possono anche essere utilizzate per la comunicazione tra processi su sistemi diversi. La maggior parte delle applicazioni in una macchina virtuale viene eseguita come un singolo processo. Tuttavia, può creare processi aggiuntivi utilizzando un oggetto generatore di processi.
Nei computer, un thread può eseguire anche la più piccola sequenza di istruzioni programmate che possono essere gestite indipendentemente da un sistema operativo. Le applicazioni di thread e processi differiscono da un sistema operativo all'altro. Tuttavia, i thread sono fatti ed esistono all'interno di un processo; ogni processo ha almeno uno. Più thread possono anche esistere in un processo e condividere risorse, il che aiuta a una comunicazione efficiente tra i thread.
Su un singolo processore, il multitasking avviene mentre il processore passa da un thread all'altro; è conosciuto come multithreading. La commutazione avviene così frequentemente che i thread o le attività sono percepiti come in esecuzione contemporaneamente. I thread possono essere realmente concomitanti su un sistema multiprocessore o multi-core, con ogni processore o core che esegue simultaneamente i thread separati.
In breve, i thread possono essere considerati processi leggeri, in quanto contengono semplici set di istruzioni e possono essere eseguiti all'interno di un processo più ampio. I computer possono eseguire più thread e processi contemporaneamente.
Confronto tra processo e discussione:
Processi | Filo | |
Definizione | Un'istanza di esecuzione di un programma si chiama processo. | Un thread è un sottoinsieme del processo. |
Processi | Ha una propria copia del segmento di dati del processo principale. | Ha accesso diretto al segmento di dati del suo processo. |
Comunicazione | I processi devono utilizzare la comunicazione tra processi per comunicare con i processi di pari livello. | I thread possono comunicare direttamente con altri thread del suo processo. |
Spese generali | I processi hanno un notevole overhead. | Le discussioni non hanno quasi nessun sovraccarico. |
Creazione | I nuovi processi richiedono la duplicazione del processo genitore. | Nuovi thread sono facilmente creati. |
Controllo | I processi possono esercitare solo il controllo sui processi figli. | Le discussioni possono esercitare un notevole controllo sui thread dello stesso processo. |
I cambiamenti | Qualsiasi modifica nel processo principale non ha alcun effetto sui processi figli. | Qualsiasi modifica nel thread principale può influire sul comportamento degli altri thread del processo. |
Memoria | Esegui in spazi di memoria separati. | Esegui in spazi di memoria condivisa. |
Descrittori di file | La maggior parte dei descrittori di file non sono condivisi. | Condivide i descrittori di file. |
File system | Non c'è condivisione del contesto del file system. | Condivide il contesto del file system. |
Segnale | Non condivide la gestione del segnale. | Condivide la gestione del segnale. |
Controllato da | Il processo è controllato dal sistema operativo. | I thread sono controllati dal programmatore in un programma. |
Dipendenza | I processi sono indipendenti. | I fili sono dipendenti |