Processo ha spazio di indirizzamento; thread dello stesso processo condividono memoria.
Un processo è un programma in esecuzione con risorse e spazio di indirizzamento propri; i thread sono flussi di esecuzione all’interno di un processo. I thread dello stesso processo condividono codice e memoria globale/heap, ma ciascuno ha normalmente stack e contatore d’istruzione separati. Questa condivisione facilita lo scambio di dati.
Un browser può usare processi distinti per isolare schede o servizi e più thread nel processo per gestire interfaccia, rete e attività di fondo. Concorrenza significa che più attività avanzano nello stesso intervallo temporale, anche alternandosi su un solo core; parallelismo indica esecuzione simultanea su più unità di calcolo.
Memoria condivisa non rende automatico l’ordine delle operazioni: due thread che aggiornano lo stesso contatore senza sincronizzazione possono perdere un incremento, una race condition. Un mutex protegge la sezione critica, ma non elimina ogni rischio: acquisizioni incoerenti possono causare deadlock. Inoltre non è corretto affermare che i thread condividano sempre lo stack: ciascuno ne possiede tipicamente uno proprio.
- Processo ha spazio di indirizzamento; thread dello stesso processo condividono memoria.
- Concorrenza alterna attività, parallelismo le esegue simultaneamente su più unità di calcolo.
- Accessi condivisi non sincronizzati possono creare race condition; mutex coordina l’accesso.
Metti alla prova quello che hai letto
Thread dello stesso processo condividono…
- Nessuna risorsa
- Sempre lo stack
- Contatore programma
- Spazio di memoria
Soluzione e spiegazione
Spazio di memoria. Spazio di memoria. Concorrenza alterna attività, parallelismo le esegue simultaneamente su più unità di calcolo.
Fonti
- Introduction to Pthreads — University of Illinois Chicago
- pthread_create(3) — Linux man-pages
Nota editoriale
Confronto assistito documentato; revisione docente necessaria