thread - people.unica.it · kernel stack multithreaded process model process control block user...

15
THREAD SISTEMI OPERATIVI Giorgio Giacinto 2018 Sistemi Operativi 2

Upload: others

Post on 28-Jul-2020

43 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: THREAD - people.unica.it · Kernel Stack Multithreaded Process Model Process Control Block User Address Space User Stack Kernel Stack User Stack User Stack Thread Control Block Thread

THREAD

SISTEMI OPERATIVIGi

orgi

o Gi

acin

to 2

018

Sistemi Operativi

2

Page 2: THREAD - people.unica.it · Kernel Stack Multithreaded Process Model Process Control Block User Address Space User Stack Kernel Stack User Stack User Stack Thread Control Block Thread

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

Page 3: THREAD - people.unica.it · Kernel Stack Multithreaded Process Model Process Control Block User Address Space User Stack Kernel Stack User Stack User Stack Thread Control Block Thread

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

Page 4: THREAD - people.unica.it · Kernel Stack Multithreaded Process Model Process Control Block User Address Space User Stack Kernel Stack User Stack User Stack Thread Control Block Thread

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

Page 5: THREAD - people.unica.it · Kernel Stack Multithreaded Process Model Process Control Block User Address Space User Stack Kernel Stack User Stack User Stack Thread Control Block Thread

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

Page 6: THREAD - people.unica.it · Kernel Stack Multithreaded Process Model Process Control Block User Address Space User Stack Kernel Stack User Stack User Stack Thread Control Block Thread

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

Page 7: THREAD - people.unica.it · Kernel Stack Multithreaded Process Model Process Control Block User Address Space User Stack Kernel Stack User Stack User Stack Thread Control Block Thread

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

Page 8: THREAD - people.unica.it · Kernel Stack Multithreaded Process Model Process Control Block User Address Space User Stack Kernel Stack User Stack User Stack Thread Control Block Thread

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

Page 9: THREAD - people.unica.it · Kernel Stack Multithreaded Process Model Process Control Block User Address Space User Stack Kernel Stack User Stack User Stack Thread Control Block Thread

Gior

gio

Giac

into

201

8

Sistemi Operativi

17

Esecuzione parallela su un sistema multicore

Gior

gio

Giac

into

201

8

Sistemi Operativi

18

Page 10: THREAD - people.unica.it · Kernel Stack Multithreaded Process Model Process Control Block User Address Space User Stack Kernel Stack User Stack User Stack Thread Control Block Thread

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

Page 11: THREAD - people.unica.it · Kernel Stack Multithreaded Process Model Process Control Block User Address Space User Stack Kernel Stack User Stack User Stack Thread Control Block Thread

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

Page 12: THREAD - people.unica.it · Kernel Stack Multithreaded Process Model Process Control Block User Address Space User Stack Kernel Stack User Stack User Stack Thread Control Block Thread

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

Page 13: THREAD - people.unica.it · Kernel Stack Multithreaded Process Model Process Control Block User Address Space User Stack Kernel Stack User Stack User Stack Thread Control Block Thread

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

Page 14: THREAD - people.unica.it · Kernel Stack Multithreaded Process Model Process Control Block User Address Space User Stack Kernel Stack User Stack User Stack Thread Control Block Thread

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

Page 15: THREAD - people.unica.it · Kernel Stack Multithreaded Process Model Process Control Block User Address Space User Stack Kernel Stack User Stack User Stack Thread Control Block Thread

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