Concetti Chiave

  • Un thread è un flusso di controllo che opera in parallelo ad altri thread all'interno di un processo, condividendo risorse e spazio di indirizzamento.
  • I thread possiedono caratteristiche comuni ai processi pesanti, come un identificatore, uno stato di esecuzione e uno stack di esecuzione.
  • La gestione dei thread a livello kernel consente una schedulazione efficiente, con il kernel che gestisce i thread come normali processi.
  • Le soluzioni miste combinano i meccanismi a livello utente e kernel, permettendo un controllo più flessibile e l'esecuzione parallela su più processori.
  • Le chiamate al kernel da parte di un thread non bloccano necessariamente il processo originario, migliorando l'efficienza complessiva dell'esecuzione.

Indice

  1. Definizione di thread
  2. Caratteristiche dei thread
  3. Gestione dei thread a livello kernel
  4. Vantaggi delle soluzioni miste

Definizione di thread

Un thread è un flusso di controllo che può essere attivato in parallelo ad altri thread nell’ambito di uno stesso processo e quindi nell’esecuzione dello stesso programma.

Un thread è un “segmento di codice” che viene eseguito in modo sequenziale all’interno di un processo pesante e tutti i thread definiti all’interno di un processo ne condividono le risorse, risiedono nello stesso spazio di indirizzamento e hanno accesso a tutti i suoi dati.

Caratteristiche dei thread

Per evolvere parallelamente agli altri thread o processi che si contendono la CPU, il thread mantiene comunque un insieme di caratteristiche comuni a processi pesanti:

    un identificatore di thread (ID);

    un program counter;

    un insieme di registri;

    uno stato di esecuzione (running, ready, blocked);

    un contesto che è salvato quando il thread non è in esecuzione;

    uno stack di esecuzione;

    uno spazio di memoria privato per le variabili locali.

Gestione dei thread a livello kernel

In base alla capacità di un sistema di gestire a livello kernel i thread ottenuti dalla combinazione delle possibili situazioni:

    singolo processo e thread singolo;

    singolo processo e thread multiplo per processo;

    multiplo processo e thread singolo per processo;

    multiplo processo e thread multiplo per processo.

È l’utente che decide l’avvicendarsi dell’esecuzione dei thread. Servono apposite librerie che interagiscono con il kernel.

Orientato al parallelismo.

A livello di nucleo la gestione dei thread affidata al kernel tramite chiamate di sistema e quindi è il kernel che gestisce i thread come tutti gli altri processi, li deve schedulare, sospendere e risvegliare assegnandogli le risorse di sistema.

Il livello kernel è più efficiente. Gestisce meglio il tempo d’esecuzione, la concorrenza e la competizione.

Vantaggi delle soluzioni miste

Esistono anche soluzioni miste che combina le proprietà di entrambi i meccanismi permettendo di creare a livello utente dei thread che solo però preventivamente devono essere definiti a livello di kernel (i thread utente vengono “mappati” sopra i thread a livello kernel, quindi non possono essere in numero superiore a essi), e lasciano all’utente le politiche di scheduling e di sincronizzazione. I principali vantaggi sono che thread della stessa applicazione possono essere eseguiti in parallelo su processori diversi e che la chiamata al kernel da parte di un thread non blocca necessariamente il processo che lo ha generato.

Domande da interrogazione

  1. Che cos'è un thread e come si differenzia da un processo pesante?
  2. Un thread è un flusso di controllo che può essere attivato in parallelo ad altri thread all'interno dello stesso processo, condividendo risorse e spazio di indirizzamento, mentre un processo pesante è un'entità più complessa e autonoma.

  3. Quali sono le caratteristiche principali di un thread?
  4. Un thread possiede un identificatore (ID), un program counter, registri, uno stato di esecuzione, un contesto salvato, uno stack di esecuzione e uno spazio di memoria privato per le variabili locali, mantenendo così un insieme di caratteristiche comuni ai processi pesanti.

  5. Quali sono i vantaggi delle soluzioni miste nella gestione dei thread?
  6. Le soluzioni miste combinano le proprietà dei thread a livello utente e kernel, permettendo l'esecuzione parallela su processori diversi e evitando che la chiamata al kernel da parte di un thread blocchi l'intero processo, migliorando così l'efficienza e la gestione delle risorse.

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community