Newsgroup: it.scienza.informatica
Titolo: Processi e Thread

Salve a tutti, chi mi può chiarire le idee sulla differenza tra Processi e
Thread?
Grazie a chi mi risponderà.
Ciao
 G.

 e Thread?
ciao,
a parte che ti suggerisco di dare un occhio ai vecchi msg sul ng (perche`
se ne discuteva un po' di tempo fa) pero` credo si possa dire che processi
e thread sono le entita` *attive* associate ad un programma... voglio
dire: un eseguibile e` un file (statico,memorizzato nel file system ed
immutabile), nel momento in cui viene eseguito, il sistema lo tratta come
un insieme di processi e di thread (caricati in ram, quindi dinamici
perche` lo stato della memoria cambia, basta pensare all'aggiornamento
delle variabili del programma). questo a partire dal presupposto che lo
scheduler supporti sia i thread che i processi (ma qst e` un altro
discorso, per semplicita` possiamo pensare che lo faccia).
ora, ogni processo sappiamo che porta con se` una qta` di risorse (file
aperti, variabili globali, grosse strutture dati per la gestione della
memoria...) che appesantisce i tempi per passare da un processo all'altro
(context switch, attivita` che avviene ogni pochi milli-secondi). il
thread, dal canto suo si porta dietro una qta` *minore* di dati (processi
di uno stesso thread condividono la memoria del processo e i files aperti)
e questo riduce notevolmente i tempi di context-switch e rendendoli
appetibili nel caso questo sia un fattore critico. tutto questo partendo
dal presupposto che lo scheduler supporti sia i thread che i processi
questo e` quello che mi ricordo della teoria del corso di sistemi
operativi, non so se sono *tutte* le differenze che chiedevi, e
soprattutto spero di non aver detto boiate :)
 
ciao,
mignolo
--
	`` All we have to decide is what to do
	   with the time that is given us. ''
					Gandalf
 
.oO) PoweredBy Linux (Oo.oO) User: #092125 (Oo._

 Grazie a chi mi risponderà.
In parole povere, un processo contiene "dentro di sè" vari thread,
che consistono in tutte le varie parti del programma che devono
andare in esecuzione in parallelo.
Ad essere più precisi, i thread condividono lo stesso spazio di
indirizzamento del processo che li contiene, in generale la loro
creazione è più veloce di quella dei processi proprio per il fatto
che servono meno risorse per gestirli. I processi insomma servono
a raggruppare risorse, i thread a garantire l'esecuzione.

 wrote in message
news:K_89a.6846$zo2.2...@news2.tin.it...

Due processi "vedono" aree di memoria completamente separate. Al massimo
possono condividere le "aree costanti": le costanti vere e proprie e il
codice (di solito costante).
Due thread "vedono" le stesse aree variabili (incluso lo heap) con la sola
esclusione dello stack. Ogni thread ha bisogno del suo stack privato.
Due processi, per scambiarsi dati hanno bisogno di strutture particolari del
sistema operativo quali: memoria condivisa (shared memory), pipes, queues
etc..
Due threads, per scambiarsi dati devono solo depositarli nello heap o in
variabili globali.
Un processo che "sporchi" la memoria danneggera' soltanto se' stesso
Un thread che sporchi la memoria probabilmente danneggera' anche i suoi
compagni
Tutto questo in maniera molto rozza e senza nulla dire dei meccanismi di
sincronizzazione tra processi e tra threads, essi variano molto da un SO a
un altro. Si capisce pero', spero, che i threads sono molto piu'
maneggevoli, ma meno protetti dei processi, sono quindi riservati ai
"solutori piu' che esperti".
Saluti
Mino Saccone