Newsgroup: it.scienza.informatica
Titolo: Processo/programma/thread

So che č una domanda stupida ma mi servirebbe la differenza precisa e
dettagliata tra processo, programma e thread, con un esempio esplicativo, e
un po di materiale o informazioni sulla struttura Raid.
Grazie a tutti

 
Sia processi che thread sono modi di eseguire piu' flussi di controllo in 
parallelo su una stessa architettura di calcolo. 
I dettagli sono tantissimi, e ci sono varie definizioni di "processo", ma 
grossolanamente la differenza principale e' che (usando definizioni moderne 
e assumendo architetture diffuse) i thread hanno memoria condivisa, i 
processi no. A livello di implementazione, inoltre, creare processi e' in 
genere piu' costoso di creare thread. 
Un programma e' un raggruppamento di uno o piu' flussi di controllo.
-- 
Life's something u don't get out alive..
ObjectZone - 
http://space.tin.it/computer/csadun

 > So che è una domanda stupida ma mi servirebbe la differenza precisa e


 Spero di non aver detto idiozie
"processo" si puo' definire in parecchi modi - e ogni modello o anche 
sistema operativo tende ad avere definizioni diverse. La mia idea di 
riferimento principale e' quella dei CSP alla Hoare. "programma" e' ancor 
meno rigoroso - e' come dire "automobile" senza specificare se e' una 
cinquecento una Ferrari F1.
Detto questo, e parlando colloquialmente, un programma puo' forkare 
parecchi processi. Ad esempio, prendi un server unix "tradizionale" - c'e' 
un processo per ogni client ma tutti coordinati da un processo padre e il 
tutto costituisce lo stesso "programma". Chiaramente si potrebbe dire 
altrimenti, ma appunto e' poco rilevante - dato che non c'e' una 
definizione chiara e rigorosa che elimini tutte le altre, basta mettersi 
d'accordo ed e' morta li'.
Per il context switch, c'e' pure per i thread - e a seconda di come sono 
implementati i thread puo' essere a livello software oppure un vero e 
proprio context switch con cambio di valori di registri e tutto. E' solo, 
in generale, meno costoso.


 
La non esistenza del context switching e` una conseguenza del fatto che c'e' 
memoria condivisa. Ed e` riferibile solo a monoprocessore ovviamente.
(due processi su due processori differenti non fanno context switch)
Per essere proprio pignoli due thread hanno stessa funzione di rilocazione e 
protezione nella MMU.
I processi no. *al limite* due processi possono avere anche tutta la memoria 
in comune (perche` no) ma con due funzioni distinte e quindi fanno context switch.
Quanto alla definizione di programma non credo che ne esista una piu` giusta 
di altre. Non vedo perche` non potrebbe esserci un programma con piu` processi.


penso  ke  kualsiasi applicazione in rete sia un "programma" con +
processi... :)
by3z
Pulz

lazy wrote:
 >>>>La non esistenza del context switching e` una conseguenza del fatto che
 >
 >>
 >> c'e'
 >>
 >
 >>>>memoria condivisa. Ed e` riferibile solo a monoprocessore ovviamente.
 >>>>(due processi su due processori differenti non fanno context switch)
 >
 >>
 >>
 >> vero se num processi  < numero processori..nn mi pronuncio se n processi=n
 >> processori
ovviamente e` un esempio... un processo/thread fa context switch anche
per altri motivi... (purtroppo)
 >>>>Per essere proprio pignoli due thread hanno stessa funzione di rilocazione
 >>>> e protezione nella MMU.
 >
 >>
 >>
 >> pure stessa f di protezione???potrebbero avere diritti diversi sulle stesse
 >> pagine..o no?
No. Hanno la stessa f. (rilocazione e protezione stanno sulla stessa
circuiteria). Questo prendilo come : *fino a qualche anno fa era cosi`*, non 
mi leggo le specifiche di ogni nuovo processore, ma mi pare improbabile.
Il "cambiamente di contesto" dei thread riguarda solo i registri ed e`
una cosa molto piu` *light*, rispetto a quello dei processi
registri+mmu+azzeramento cache.
 >> penso  ke  kualsiasi applicazione in rete sia un "programma" con +
 >> processi... :)
Una volta ho visto un testo dove si chiedeva la differenza tra
applicazione e programma ^_^

 applicazione e programma ^_^
umm testo di ke??:)
giuro ke nn saprei rispondere..
by3z
Pulz