Processi e thread

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…

  1. Nessuna risorsa
  2. Sempre lo stack
  3. Contatore programma
  4. 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

  1. Introduction to Pthreads — University of Illinois Chicago
  2. pthread_create(3) — Linux man-pages

Nota editoriale

Confronto assistito documentato; revisione docente necessaria