Threads Flashcards
Quali concetti incorpora l’astrazione di processo
Esecuzione:
-Ogni processo ha un flusso di controllo (esecuzione di una sequenza di istruzioni);
-Ogni processo ha uno stato di esecuzione
Possesso di Risorse (e Protezione)
Cos’è un thread e qual è la differenza con un processo
Un thread (o processo leggero) è un flusso di controllo sequenziale in un processo
Un processo (o processo pesante) definisce lo spazio di indirizzamento e le risorse che possono essere condivise da più threads
(Concetto chiave: separazione tra esecuzione e possesso di risorse)
Perché sono utili i threads e quali sono i vantaggi nell’utilizzarli
Per conferire maggiore modularità ai programmi e per aumentare la velocità di esecuzione
Vantaggi nell’uso dei thread:
-La creazione/terminazione di un thread è molto più efficiente della creazione di un processo;
-La comunicazione tra threads è molto più semplice ed efficiente poiché non coinvolge il kernel;
-Il context switch tra threads ha decisamente un minor overhead di quello tra processi.
Quali sono i modelli di programmazione multithread
Manager/Workers: un thread, il manager, riceve in input i comandi e assegna i lavori ad altri thread, i workers.
Pipeline: un task è suddiviso in una serie di operazioni più semplici, che possono essere eseguite in serie, e concorrentemente, da diversi thread.
Peer: simile al modello Manager/Workers, ma una volta che il thread principale assegna il lavoro agli altri thread, partecipa attivamente anch’esso nel lavoro.
Quali sono le tipologie di implementazione thread
-User-Level Threads: la gestione dei thread è eseguita a livello applicativo e il kernel non ha coscienza dell’esistenza dei thread
-Kernel-Level Threads: il Kernel gestisce le informazioni di contesto sia per il processo sia per i threads, lo scheduling è eseguito sui thread
I moderni SO adottano questo approccio
Esistono anche degli approcci combinati
Vantaggi e svantaggi dei User-Level Threads
Vantaggi:
-minore overhead per il context switch
-scheduler dei thread indipendente da quello dei processi
-applicazioni portabili
Svantaggi:
-se il thread invoca una system call tutti i thread del processo si bloccano
Vantaggi e svantaggi dei Kernel-Level Threads
Vantaggi:
-il kernel è in grado di schedulare più thread dello stesso processo su più processori
-Se un thread di un processo è “blocked”, il kernel potrà schedulare un altro thread dello stesso processo
Svantaggi:
-Il trasferimento del controllo da un thread ad un altro, pure se nell’ambito di uno stesso processo, richiede un context switch a livello kernel
Cosa sono i task in Linux e come vengono creati
Il task (un flusso di esecuzione) è l’unità fondamentale di schedulazione per il kernel
Un thread è un task che condivide delle strutture con altri task
Ogni task ha un Process ID (PID) univoco
La creazione di un thread avviene attraverso la chiamata del sistema clone()