THREAD
SISTEMI OPERATIVIGi
orgi
o Gi
acin
to 2
018
Sistemi Operativi
2
Motivazioni» Un programma complesso può eseguire in modo
concorrente più funzioni˃ attraverso la creazione e gestione di processi figli˃ attraverso il meccanismo dei thread
» La creazione e gestione di più thread all’interno di ciascun processo è più leggera rispetto all’uso di processi concorrenti
» Requisiti˃ Librerie di gestione˃ Vantaggi con supporto hardware al multithreading˃ Vantaggi nel caso di architetture multicore
Gior
gio
Giac
into
201
8
3
Sistemi Operativi
Impieghi del multithreading» Programmi applicativi
˃ gestione interfaccia grafica, input, validazione input
» Server˃ thread dedicati a ciascun client
» Sistemi operativi˃ diverse funzionalità implementate come thread
multipli
Gior
gio
Giac
into
201
8
4
Sistemi Operativi
Gior
gio
Giac
into
201
8
Sistemi Operativi
5
Thread e Porcessi
Figure 4.1 Threads and Processes
one processone thread
one processmultiple threads
multiple processesone thread per process
= instruction trace
multiple processesmultiple threads per process
Thread» Unità di base d’uso della CPU» Le risorse sono assegnate al processo
˃ Tutti i thread di un processo condividono le risorse del processo (memoria, file aperti, ecc.) ma hanno un loro program counter, registri, stack
Gior
gio
Giac
into
201
8
6
Sistemi Operativi
Single-ThreadedProcess Model
ProcessControlBlock
UserAddressSpace
UserStack
KernelStack
MultithreadedProcess Model
ProcessControlBlock
UserAddressSpace
UserStack
KernelStack
UserStack
KernelStack
UserStack
KernelStack
ThreadControlBlock
Thread Thread Thread
Figure 4.2 Single Threaded and Multithreaded Process Models
ThreadControlBlock
ThreadControlBlock
Gior
gio
Giac
into
201
8
Sistemi Operativi
7
Esempio: Architettura server multithread
Esempio: RPC mediante thread
Gior
gio
Giac
into
201
8
Sistemi Operativi
8
Figure 4.3 Remote Procedure Call (RPC) Using Threads
(a) RPC Using Single Thread
(b) RPC Using One Thread per Server (on a uniprocessor)
Time
Process 1
Blocked, waiting for response to RPC
Blocked, waiting for processor, which is in use by Thread B
Running
Thread A (Process 1)
Thread B (Process 1)
Server
Server
Server
Server
RPCRequest
RPCRequest
RPCRequest
RPCRequest
Figure 4.3 Remote Procedure Call (RPC) Using Threads
(a) RPC Using Single Thread
(b) RPC Using One Thread per Server (on a uniprocessor)
Time
Process 1
Blocked, waiting for response to RPC
Blocked, waiting for processor, which is in use by Thread B
Running
Thread A (Process 1)
Thread B (Process 1)
Server
Server
Server
Server
RPCRequest
RPCRequest
RPCRequest
RPCRequest
Vantaggi multithreading» Tempo di risposta
˃ Un thread bloccato non blocca necessariamente l’intero processo
» Condivisione delle risorse˃ I thread di uno stesso processo possono cooperare senza
coinvolgere il sistema operativo» Economia
˃ Gestire i thread è in genere meno oneroso che gestire processi concorrenti
» Scalabilità˃ Esecuzione più rapida su architetture multiprocessore
Gior
gio
Giac
into
201
8
9
Sistemi Operativi
Stati di un Thread» Tre stati
˃ Ready˃ Running˃ Blocked
» Operazioni che causano il cambio di stato di un thread˃ Spawn˃ Block˃ Unblock˃ Finish
Gior
gio
Giac
into
201
8
10
Sistemi Operativi
MultithreadingGi
orgi
o Gi
acin
to 2
018
11
Sistemi Operativi
Time
Blocked
I/Orequest
Thread A (Process 1)
Thread B (Process 1)
Thread C (Process 2)
Figure 4.4 Multithreading Example on a Uniprocessor
Ready Running
Requestcomplete
Time quantumexpires
Time quantumexpires
Processcreated
Esempio Pthreads
Gior
gio
Giac
into
201
8
Sistemi Operativi
12
Esempio Pthreads (Cont.)Gi
orgi
o Gi
acin
to 2
018
Sistemi Operativi
13
PthreadsCodice per il join di 10 thread
Gior
gio
Giac
into
201
8
Sistemi Operativi
14
Programmazione multicore» Il progetto di una applicazione che sfrutti a
pieno le architetture multicore è complesso˃ Individuare i task fra loro indipendenti˃ Bilanciamento del carico fra i vari task˃ Separazione dei dati
+ per parallelizzare l’accesso ai dati˃ Dipendenze dei dati
+ evitare incoerenze fra dati elaborati da task diversi˃ Test e debugging
+ complicato dalle aleatorietà dei flussi d’esecuzione
Gior
gio
Giac
into
201
8
15
Sistemi Operativi
Gior
gio
Giac
into
201
8
Sistemi Operativi
16
Esecuzione concorrente su un sistema a singolo core
Gior
gio
Giac
into
201
8
Sistemi Operativi
17
Esecuzione parallela su un sistema multicore
Gior
gio
Giac
into
201
8
Sistemi Operativi
18
Thread a livello utente eThread a livello kernel» Thread a livello utente
˃ Sono gestiti senza l’intervento del sistema operativoLibrerie dei linguaggi di programmazione
» Thread a livello kernel˃ Sono gestiti direttamente dal sistema operativo
Supportati da Windows, Linux, Mac OS X, Solaris, ecc.
Gior
gio
Giac
into
201
8
19
Sistemi Operativi
Modello da molti a unoUser Level Threads
» Scheduling threadindipendente dal sistema operativo
» Una chiamata bloccante al kernel blocca l’intero processo
» Non sono possibili chiamate concorrenti al kernel
» Nessun vantaggio in caso di architettura mutiprocessore
Gior
gio
Giac
into
201
8
20
Sistemi Operativi
Figure 4.5 User-Level and Kernel-Level Threads
P P
UserSpace
ThreadsLibrary
KernelSpace
P
P
UserSpace
KernelSpace
P
UserSpace
ThreadsLibrary
KernelSpace
(c) Combined(b) Pure kernel-level(a) Pure user-level
User-level thread Kernel-level thread ProcessFigure 4.5 User-Level and Kernel-Level Threads
P P
UserSpace
ThreadsLibrary
KernelSpace
P
P
UserSpace
KernelSpace
P
UserSpace
ThreadsLibrary
KernelSpace
(c) Combined(b) Pure kernel-level(a) Pure user-level
User-level thread Kernel-level thread Process
Stati di un processo e statidi user-level thread
Gior
gio
Giac
into
201
8
21
Sistemi Operativi
Ready Running
Blocked
Thread 1
Ready Running
Blocked
Thread 2
Ready Running
Blocked
Process B
(a)
Ready Running
Blocked
Thread 1
Ready Running
Blocked
Thread 2
Ready Running
Blocked
Process B
(b)
Ready Running
Blocked
Thread 1
Ready Running
Blocked
Thread 2
Ready
Figure 4.6 Examples of the Relationships Between User-Level Thread States and Process States
Running
Colored stateis current state
Blocked
Process B
(c)
Ready Running
Blocked
Thread 1
Ready Running
Blocked
Thread 2
Ready Running
Blocked
Process B
(d)
Modello da uno a unoKernel Level Threads
» Non ha gli svantaggi del modello precedente» Svantaggio di questo modello
˃ Possibile creazione di troppi thread a livello kernel» Modello usato da Windows e LinuxGi
orgi
o Gi
acin
to 2
018
22
Sistemi OperativiFigure 4.5 User-Level and Kernel-Level Threads
P P
UserSpace
ThreadsLibrary
KernelSpace
P
P
UserSpace
KernelSpace
P
UserSpace
ThreadsLibrary
KernelSpace
(c) Combined(b) Pure kernel-level(a) Pure user-level
User-level thread Kernel-level thread Process Figure 4.5 User-Level and Kernel-Level Threads
P P
UserSpace
ThreadsLibrary
KernelSpace
P
P
UserSpace
KernelSpace
P
UserSpace
ThreadsLibrary
KernelSpace
(c) Combined(b) Pure kernel-level(a) Pure user-level
User-level thread Kernel-level thread Process
Modello da molti a moltiGi
orgi
o Gi
acin
to 2
018
Sistemi Operativi
23
» Thread a livello kernel in numero inferiore o uguale al numero di thread a livello utente
Modello Combinato
Gior
gio
Giac
into
201
8
Sistemi Operativi
24
Figure 4.5 User-Level and Kernel-Level Threads
P P
UserSpace
ThreadsLibrary
KernelSpace
P
P
UserSpace
KernelSpace
P
UserSpace
ThreadsLibrary
KernelSpace
(c) Combined(b) Pure kernel-level(a) Pure user-level
User-level thread Kernel-level thread Process
Figure 4.5 User-Level and Kernel-Level Threads
P P
UserSpace
ThreadsLibrary
KernelSpace
P
P
UserSpace
KernelSpace
P
UserSpace
ThreadsLibrary
KernelSpace
(c) Combined(b) Pure kernel-level(a) Pure user-level
User-level thread Kernel-level thread Process
Gior
gio
Giac
into
201
8
Sistemi Operativi
25
Librerie» La programmazione multithread avviene per mezzo
di API messe a disposizione da specifiche librerie. ˃ Librerie a livello utente
+ Invocare la libreria non coinvolge il kernel˃ Librerie a livello di kernel
» Librerie più diffuse˃ Pthreads di POSIX (a livello utente e kernel)˃ Win32 (livello kernel)˃ Java (livello utente ma attraverso JVM usano librerie del
sistema operativo ospitante)
Gior
gio
Giac
into
201
8
26
Sistemi Operativi
Gior
gio
Giac
into
201
8
Sistemi Operativi
27
Principali aspetti problematici» Comportamento delle chiamate di sistema fork() e exec()
» Cancellazione di thread˃ è il nome dato alla terminazione forzata
» Gestione dei segnali inviati ai processi» Creazione di gruppi di thread (thread pool)
˃ La richiesta di un servizio viene soddisfatta da uno dei thread nel gruppo non ancora impegnato
» Associazione ai thread di dati specifici» Comunicazione fra libreria del kernel e libreria dei
thread (LWP e attivazione dello scheduler)
Gior
gio
Giac
into
201
8
28
Sistemi Operativi
Attivazione delle schedulerModelli molti a molti e a due stadi
» LWP - LightWeight Process˃ Struttura dati intermedia ˃ Messa a disposizione dal
kernel+ Di solito una per ogni
chiamata di sistema bloccante
+ Numero massimo fissato dal sistema
˃ La libreria a livello utente effettua lo scheduling sui LWP
Gior
gio
Giac
into
201
8
29
Sistemi Operativi