differenza tra processo e thread

Pubblicità

pcfree1

Utente Attivo
Messaggi
932
Reazioni
41
Punteggio
63
Ho cercato in rete ma ho trovato risposte vaghe direi. Quello che ho capito è che un processo riguarda un programma o un servizio in esecuzione (quindi tutto il pacchetto) e che un processo è suddiviso in thread, cioè sottoprocessi. Mettiamo ad esempio il processo firefox, è formato da più sottoprocessi firefox come ad esempio l'apertura di una nuova scheda (thread), l'apertura del menu componenti aggiuntivi (thread), l'installazione del componente(thread). nel frattempo ci sono processi attivi, come l'antivirus e i suoi thread(l'aggiornamento, la scansione in tempo reale etc.) Altro processo, creazione file word, processo. Scrivere testo (thread), aprire nuovo file(thread), salvare il file1(thread). In questo modo entra in gioco il multitasking, l'hyperthreading cioè questi thread, vengono gestiti dal processore simultaneamente e risolti, in genere a termine dei thread il processo viene terminato, chiudi firefoz(processo), viene gestito in modo veloce da non farci accorgere del breve lasso di tempo che passa tra l'uno e l'altro thread, ma in realtà non avvengono assieme. La ram che fa? La ram aiuta la cpu. apri firefox, quel processo va nella ram, poi la cpu lo gestisce, prende quello che gli serve, lo elabora, se gli serve un appoggio lo rimette nella ram, poi lo riprende e poi lo esegue mostrando il risultato a video, ho detto castronerie? :party: Se si dove ho sbagliato?
 
sinceramente molto non me ne intendo neanche io dei vari tecnicismi
comunque da quello posta dierei che hai capito correttamente i concetti
il multit-hreading è stato pesato (ove è implementato) per far girare le applicazione più velocemente e meglio
ovviamnte se una stessta applicazione la faccio girare parallelemente su più core/thread ha più prestazioni di quando girata su singolo
oltre allla ram il procio pesca le "informazioni" che gli servono prima dal'hdd (che va considerato nell insieme) per poi caricarle sulla ram (eventualmente anche una volta caricato il programma su ram se ha bisogno di info sull hhd le va a pescare) per questo se vede la differenza su sitemi(in termini di velocità) che si appoggiano su ssd rispetto ai tradizionalli dischi meccanici
 
La questione è leggermente più tecnica; bisogna innanzitutto distinguere tra programma e processo.

Un programma non è altro che un insieme statico di file registrato su una memoria di massa (per es. un HDD); non richiede nessuna risorsa di calcolo, solo spazio di memorizzazione per il/i file che lo compongono.

Un processo è un programma in esecuzione, ossia è un programma caricato in memoria ed eseguito; un processo richiede risorse di calcolo, ossia tempo di CPU e spazio di memoria; deve essere visto come entità dinamica perché durante la sua esecuzione le esigenze di calcolo e di memoria possono cambiare. Una cosa importante da capire è che un processo ha un suo spazio di indirizzamento, ossia un certo range di indirizzi di memoria che può usare; per esempio un processo a 32 bit ha potenzialmente a disposizione 4 GiB di RAM di spazio di indirizzamento (ovviamente in genere ne usa solo una parte).

A questo punto entra in gioco il concetto di multitasking, ossia la capacità di un sistema di calcolo di eseguire più programmi "contemporaneamente", esempio banale Windows, Word e Firefox. Sotto il controllo del sistema operativo (Windows) vengono eseguiti "in contemporanea" 2 processi (Word e Firefox); avrete notato le virgolette quando parlo di "contemporaneità"; non sono messe a caso, il multitasking è possibile anche in presenza di una CPU a singolo core; in questo caso la contemporaneità è gestita con una alternanza velocissima di riallocazione di risorse (CPU e memoria): Windows concede a Word un po' di millisecondi (ms) di uso della CPU, poi priva Word della CPU, lo congela e passa la CPU a Firefox per un po' di ms, poi congela Firefox e la riassegna a Word... e così via. Ovviamente se una CPU ha più core e anche l'hyperthreading il calcolo sarà maggiormente parallelizzato.

Il multithreading è un multitasking portato a livello di processo; il concetto di thread è simile a quello di processo, con la differenza che un thread è un flusso di esecuzione che "vive" all'interno dello spazio di indirizzamento del processo padre. Detto così sembra un concetto un po' oscuro, facciamo un esempio pratico: supponiamo di avere una versione Windows a 64 bit che abbia come limite imposto dall'hardware e dalla Microsoft fissato a 64 GiB di RAM; lo spazio di indirizzamento di Windows in questo caso è 64 GiB di RAM. Dentro questo Windows apro Firefox che è un'applicazione a 32 bit, per cui ha uno spazio utile di "soli" 4 GiB di RAM; dentro questo Firefox posso aprire tante schede, e ciascuna scheda è un thread. Quanti thread posso aprire al massimo? si possono aprire thread fino a consumare i 4 GiB di spazio di indirizzamento di Firefox (che è il processo "padre"), non di più (in realtà poi ci sono anche i limiti imposti dal computer reale che hai ma almeno in teoria è così).
 
Ultima modifica:
Ho cercato in rete ma ho trovato risposte vaghe direi. Quello che ho capito è che un processo riguarda un programma o un servizio in esecuzione (quindi tutto il pacchetto) e che un processo è suddiviso in thread, cioè sottoprocessi. Mettiamo ad esempio il processo firefox, è formato da più sottoprocessi firefox come ad esempio l'apertura di una nuova scheda (thread), l'apertura del menu componenti aggiuntivi (thread), l'installazione del componente(thread). nel frattempo ci sono processi attivi, come l'antivirus e i suoi thread(l'aggiornamento, la scansione in tempo reale etc.) Altro processo, creazione file word, processo. Scrivere testo (thread), aprire nuovo file(thread), salvare il file1(thread). In questo modo entra in gioco il multitasking, l'hyperthreading cioè questi thread, vengono gestiti dal processore simultaneamente e risolti, in genere a termine dei thread il processo viene terminato, chiudi firefoz(processo), viene gestito in modo veloce da non farci accorgere del breve lasso di tempo che passa tra l'uno e l'altro thread, ma in realtà non avvengono assieme. La ram che fa? La ram aiuta la cpu. apri firefox, quel processo va nella ram, poi la cpu lo gestisce, prende quello che gli serve, lo elabora, se gli serve un appoggio lo rimette nella ram, poi lo riprende e poi lo esegue mostrando il risultato a video, ho detto castronerie? :party: Se si dove ho sbagliato?
Hai detto bene. Il PROGRAMMA è praticamente il codice che scrivi, sono le varie istruzioni. Il PROCESSO è l'esecuzione di tale programma. Il programma è un'entità passiva, il processo una attiva. Un programma nel suo codice può creare vari processi i quali a loro volta possono creare i thread. I thread/processi non vengono gestiti simultaneamente in realtà. Prendendo una CPU con un core per semplicità, la gestione simultanea di più processi è "un'illusione" nel senso che la CPU è così veloce che a noi umani potrebbe sembrare che faccia più cose nello stesso momento.La cpu lavora in questo modo, inizia a eseguire un processo per un tot di tempo (chiamato quanto) poi ferma il processo e ne esegue un'altro. A questo punto potresti chiederti come fa la CPU a decidere dopo che ha fermato un processo, quale processo eseguire immediatamente dopo. Questo viene chiamato scheduling e ci sono vari algortimi che permettono lo scambio tra processi (argomento interessante, ti consiglio di approfondirlo).
La RAM non aiuta la CPU, è una cosa completamente diversa, è una memoria. Quando la cpu ha bisogno di un dato va a vedere nella cache. Se c'è lo prende (operazione molto veloce), se non c'è va nella RAM. Se è nella RAM lo prende (operazione più lenta), poi lo esegue (parti dell'istruzione vengono salvate nella cache, in questo modo se serve ancora quel dato non va di nuovo nella RAM). Se infine non c'è neppure nella RAM va a prenderlo sul disco fisso (operazione estremamente lenta anche se con gli SSD la situazione è migliorata parecchio). Anche nella RAM...la memoria non è infinita quindi bisogna decidere quali dati tenere e quali spostare sul disco. Questo lo decide sempre il sistema operativo.
 
grazie per le vostre risposte. Volevo sapere che tool utilizzate voi per vedere se la cpu ha un guasto, ad esempio lo riuscite a capire dal task manager prestazioni? A parte la temperatura che non deve essere superiore ai 60 gradi, se la cpu arranca come si fa a capirlo?
 
grazie per le vostre risposte. Volevo sapere che tool utilizzate voi per vedere se la cpu ha un guasto, ad esempio lo riuscite a capire dal task manager prestazioni? A parte la temperatura che non deve essere superiore ai 60 gradi, se la cpu arranca come si fa a capirlo?
Non uso nessun particolare programma per la cpu, se voglio vedere la frequenza vado su task manager e basta. Se dubiti che la cpu sia guasta (anche se la vedo dura) guardi la frequenza operativa. Poi non è vero che deve stare sotto i 60°. D'estate quando giocavo col notebook arrivavo anche a 80°. L'importante è non arrivare alla soglia di 100/105°.
 
Pubblicità
Pubblicità
Indietro
Top