Userò molto testo dal libro Operating Systems Concepts di ABRAHAM SILBERSCHATZ, PETER BAER GALVIN e GREG GAGNE insieme alla mia comprensione delle cose.
Processi
Qualsiasi applicazione risiede nel computer sotto forma di testo (o codice).
Sottolineiamo che un programma da solo non è un processo. Un programma è un'entità passiva, ad esempio un file contenente un elenco di istruzioni memorizzate sul disco (spesso chiamato file eseguibile).
Quando iniziamo un'applicazione, creiamo un'istanza di esecuzione. Questa istanza di esecuzione è chiamata processo. EDIT: (Secondo la mia interpretazione, analogo a una classe e un'istanza di una classe, l'istanza di una classe è un processo.)
Un esempio di processi è quello di Google Chrome. Quando avviamo Google Chrome, vengono generati 3 processi:
• Il processo del browser è responsabile della gestione dell'interfaccia utente e dell'I / O del disco e della rete. Un nuovo processo del browser viene creato all'avvio di Chrome. Viene creato solo un processo del browser.
• I processi di rendering contengono una logica per il rendering di pagine Web. Pertanto, contengono la logica per la gestione di HTML, Javascript, immagini e così via. Come regola generale, viene creato un nuovo processo di rendering per ogni sito Web aperto in una nuova scheda e quindi diversi processi di rendering possono essere attivi contemporaneamente.
• Viene creato un processo plug-in per ogni tipo di plug-in (come Flash o QuickTime) in uso. I processi di plug-in contengono il codice per il plug-in e il codice aggiuntivo che consente al plug-in di comunicare con i processi di rendering associati e il processo del browser.
Filo
Per rispondere a questo, penso che dovresti prima sapere cos'è un processore. Un processore è il componente hardware che esegue effettivamente i calcoli. EDIT: (calcoli come l'aggiunta di due numeri, l'ordinamento di un array, sostanzialmente l'esecuzione del codice che è stato scritto)
Passiamo ora alla definizione di un thread.
Un thread è un'unità base di utilizzo della CPU ; comprende un ID thread, un contatore di programmi, un set di registri e uno stack.
EDIT: definizione di un thread dal sito Web di intel:
Un thread, o thread di esecuzione, è un termine software per la sequenza ordinata base di istruzioni che può essere passata o elaborata da un singolo core della CPU.
Quindi, se il processo Renderer dall'applicazione Chrome ordina una matrice di numeri, l'ordinamento avverrà su un thread / thread di esecuzione. (La grammatica relativa ai thread mi sembra confusa)
La mia interpretazione delle cose
Un processo è un'istanza di esecuzione. I thread sono i lavoratori effettivi che eseguono i calcoli tramite l'accesso alla CPU. Quando sono in esecuzione più thread per un processo, il processo fornisce memoria comune.
EDIT:
Altre informazioni che ho trovato utili per dare più contesto
Tutti i computer moderni hanno più di un thread. Il numero di thread in un computer dipende dal numero di core in un computer.
Informatica simultanea :
Da Wikipedia:
Il calcolo simultaneo è una forma di calcolo in cui vengono eseguiti diversi calcoli durante periodi di tempo sovrapposti, contemporaneamente, anziché in sequenza (uno che completa prima dell'inizio successivo). Questa è una proprietà di un sistema - può trattarsi di un singolo programma, un computer o una rete - e esiste un punto di esecuzione o "thread di controllo" separato per ciascun calcolo ("processo").
Quindi, potrei scrivere un programma che calcola la somma di 4 numeri:
(1 + 3) + (4 + 5)
Nel programma per calcolare questa somma (che sarà un processo in esecuzione su un thread di esecuzione) posso fork un altro processo che può essere eseguito su un thread diverso per calcolare (4 + 5) e restituire il risultato al processo originale, mentre il il processo originale calcola la somma di (1 + 3).