Threads Flashcards

1
Q

Quali concetti incorpora l’astrazione di processo

A

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)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Cos’è un thread e qual è la differenza con un processo

A

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)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Perché sono utili i threads e quali sono i vantaggi nell’utilizzarli

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Quali sono i modelli di programmazione multithread

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Quali sono le tipologie di implementazione thread

A

-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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Vantaggi e svantaggi dei User-Level Threads

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Vantaggi e svantaggi dei Kernel-Level Threads

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Cosa sono i task in Linux e come vengono creati

A

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()

How well did you know this?
1
Not at all
2
3
4
5
Perfectly