62
Università degli Studi di Salerno Sistemi Operativi Avanzati THREAD Grano G. Farisano G. Prof. G. Cattaneo

Thread

Embed Size (px)

Citation preview

Page 1: Thread

Università degli Studi di Salerno Sistemi Operativi Avanzati

THREAD

Grano G. Farisano G.Prof. G. Cattaneo

Page 2: Thread

Outline

Page 3: Thread

Outline

Page 4: Thread

Outline

Page 5: Thread

Outline

Page 6: Thread

Contesto storico (1)

2001 2005 gennaio 2006

luglio 2006

corsa ai Ghz (Prescott)

Core i3, i5 i7

optimized for speed

optimized for performance

/watt

IBM PowerPC POWER4

AMD Opteron

«Le prestazioni dei processori, e il numero di transistor ad esso relativo, raddoppiano

ogni 18 mesi»

Pentium D Presler

Pentium D Smithfield

Athlon 64 X2

Core 2 Duo

DIE singolo

DIE doppio

DIE monolitico

Page 7: Thread

Contesto storico (2)

• La prima legge di Moore è stata valida per un lungo periodo di tempo (primi anni 2000?)

• Seconda legge di Moore: «il costo di una fabbrica di chip raddoppia da una generazione all'altra»

• Troppi transistor da gestire • Impossibilità di aumentare la potenza • Bisogno di replicare i componenti (più cores nello

stesso chip) • Necessità di migliori tool per localizzare il parallelismo

e validare il codice parallelo

Page 8: Thread

Cos’è un thread?

Page 9: Thread

Process vs Threads

Page 10: Thread

• Browser web:

• Rappresentazione dei dati sullo schermo

• Reperimento dati dalla rete

• Elaboratore testi:

• Acquisizione dati da tastiera

• Visualizzazione sullo schermo

• Correttore ortografico durante la battitura

Applicazioni reali

Page 11: Thread

• Tempo di risposta

• Condivisione delle risorse

• Economia

• Scalabilità

Vantaggi

Page 12: Thread

Svantaggi

• Difficoltà di implementazione

• Sincronizzazione

• Sezioni critiche, deadlock…

Page 13: Thread

Creazione thread

• Threading asincrono

• Threading sincrono

Page 14: Thread

Thread models (1)

• Thread di livello kernel

- gestiti direttamente dal kernel

• Thread di livello utente

- gestiti mediante una libreria per i thread

• Thread ibridi

- thread di livello utente mappati su thread di livello kernel

Page 15: Thread

Thread models (2)

• Modello da molti a uno

• Modello da uno a uno

• Modello da molti a molti

Page 16: Thread

Modello da molti a uno

Page 17: Thread

Modello da uno a uno

Page 18: Thread

Modello da molti a molti (1)

Page 19: Thread

Modello da molti a molti (2)

Page 20: Thread

Thread utente e kernel thread

• Il modello molti-a-molti e il modello a due livelli richiedono comunicazione per mantenere il numero appropriato di kernel thread per gestire i thread utenti creati dall’applicazione

• Solitamente, ad un thread utente è allocato un LWP (lightweight process), che la libreria dei thread utente vede come un processore virtuale

• Ogni LWP viene eseguito da un thread del kernel

Page 21: Thread

Programmazione multicore

VERSUS

Page 22: Thread

Parallelismo dei dati

Page 23: Thread

Parallelismo dei task

Page 24: Thread

Legge di Amdahl

speedup 1

S + (1�S)N

Page 25: Thread

Multithreading

Supporto hardware da parte di un processore per eseguire più thread.

Fine anni 90: fine ricerche su incremento dell’instruction level parallelism

Page 26: Thread

Coarse-Grained Multithreading

Context-switch ad ogni evento ad elevata latenza (cache miss)

Vantaggi:

• Non necessita di uno switch veloce

• Non c’è un rallentamento dei thread

Svantaggi:

• La pipeline deve essere svuotata o congelata allo switch

• Un nuovo thread deve riempire la pipeline

Page 27: Thread

Fine-Grained Multithreading

Switch tra i thread ad ogni istruzione!

Scheduling round-robin: skippati thread in stallo!

Vantaggi:

• Si nascondono gli stalli

Svantaggi:

• Si sacrificano le prestazioni di un singolo thread

Page 28: Thread

Granularità

Page 29: Thread

Implementazioni

Page 30: Thread

POSIX Thread

• Diverse librerie proprietarie

• Forte eterogeneità tra le varie librerie

• Bisogno di un’interfaccia standard

• Standard IEEE POSIX 1003.1c (PThreads)

Defini t i come insieme di t ip i e procedure implementate in C. Composti da un file pthread.h e una libreria.

Page 31: Thread

Perché Pthread?

• Light Weight

• Efficient Communications/Data Exchange

• Overlapping CPU work with I/O

• Priority/real time scheduling

• Asynchronous event handling

Page 32: Thread

Designing Threaded Programs parallel programming

shared memory

thread-safeness

Page 33: Thread

PThread API

• Thread Management: creazione, distruzione e join di thread

• Mutexes Management: creazione, distruzione, lock e unlock di variabili di mutua esclusione (mutex) per la gestione di sezioni critiche

• Condition Variables Management: creazione, distruzione, wait e signal su condition variable definite dal programmatore

Page 34: Thread

Creazione dei threadpthread_create (thread, attr, start_routine, arg)

Di default, un thread è creato con una serie di attributi. Alcuni di essi possono essere modificati dal programmatore

pthread_attr_init (attr) e pthread_attr_destroy (attr)

Page 35: Thread

Terminazione di un thread

Un thread può terminare per diversi motivi:

• la starting routine termina

• il thread chiama la subroutine pthread_exit()

• il thread viene cancellato da un altro thread con la routine pthread_cancel()

• il processo main() termina per prima

Page 36: Thread

Esempio

Page 37: Thread

Joinable ThreadsUn modo per realizzare sincronizzazione tra thread

La routine pthread_join() blocca chiamante finché il thread threadid specificato non termina.

Un thread deve essere dichiarato come “joinable”:

Page 38: Thread

Code example

Page 39: Thread

• Sequenziale

• Pthread

• OpenMP

Moltiplicazione matriciale

https://github.com/giograno/thread_so

Page 40: Thread

Codice sequenziale

Page 41: Thread

Uso di pthread

Page 42: Thread

Uso di OpenMP

Page 43: Thread

Tempo di esecuzione

Page 44: Thread

Librerie thread

Page 45: Thread

Thread Java(1)• Due possibilità di creare un

thread:

- Creare una nuova classe derivata dalla classe Thread - J a v a n o n p r e v e d e l’ereditarietà multipla

- Implementare l’interfaccia Runnable

• L’API Java è anche disponibile per le applicazioni Android

- Honeycomb SDK o superiori ci OBBLIGANO ad eseguire operazioni di rete in un Thread differente dal main thread

android.os.NetworkOnMainThreadException

Page 46: Thread

La JVM e il sistema operativo ospitante

Thread Java(2)

Page 47: Thread

Thread di Windows

Page 48: Thread

Thread di Linux

FLAG SIGNIFICATO

CLONE_FS Condivisione delle informazioni sul file system

CLONE_VM Condivisione dello stesso spazio di memoria

CLONE_SIGHAND Condivisione dei gestori dei segnali

CLONE_FILES Condivisione di file aperti

Page 49: Thread

Using Threads in Interactive Systems: A Case Study

Carl Hauser, Christian Jacobi, Marvin Theimer, Brent Welch, Mak Weiser

14th ACM Symposium on Operating Systems Principle (SOSP-14), December 1993

Page 50: Thread
Page 51: Thread

Overview

• Analisi di due grossi sistemi interattivi: Cedar e GVX

• Obiettivi:

1. esaminare e classificare le feature comuni e i paradigmi di utilizzo dei thread

2. analizzare l’architettura di un ambiente thread-based

3. analizzare le più importanti proprietà di un sistema interattivo

Page 52: Thread

Thread Model• Mesa language

• Multiple, lightweight, preemptively scheduled threads in shared address space

• FORK, JOIN, DETACH

• Condition variable and monitors:

- WAIT, NOTIFY, BROADCAST

• Priorities

• Finer grain

Page 53: Thread

Dynamic behavior

• Eternal: run forever, waiting on condition variable

• Worker: perform some computation

• Transient: thread with short life, forked off by long-lived thread

Page 54: Thread

Thread Paradigms

• Defer work: single most common use; reduce latency

• Pumps: components of pipeline

• Sleepers and oneshots: wait for a triggering event and then execute

• Deadlock avoiders: avoid violating lock order constraints

Page 55: Thread

Thread Paradigms

• Task rejuvenation: recover from bad state; fork new copy of service or error reporting thread

• Serializer: queue and thread processing from queue

• Concurrency exploiters: for using multiple processors

• Encapsulated forks: code modularity; not a really thread paradigm

Page 56: Thread

Static Count (Cedar)

7%1%4%1%3%

10%

7%

19% 2%14%

31%

Defer Work General Pumps Slack Processes SleepersOneshot Deadlock Avoid Task Rejuvenate Serializer Encapsulated Fork Cuncurrency Exploiters Unknown and Other

Page 57: Thread

Issues in thread use

Trade-off involving simplicity/concurrency and actual efficiency

Easy uses:

• Work deferrer, sleeper, one-shot, pump without critical constraint

• Little interaction between threads

Page 58: Thread

Hard thread use issue

• Little guidance in literature and in their experience for using concurrency exploiters

• Slack process and pumps w. timing constraint

• X Window system performance

- Slack process hight priority

- YieldButNotToMe

Page 59: Thread

Common usage mistakes

• IF instead WHILE for monitors

• Timeout hacks to compensate for missing NOTIFY

• Timeout inappropriate values

• Running out of resources

• Spurious lock conflicts: thread notified, thread awakened, but notified still has lock

Page 60: Thread

Xerox scientists’ conclusion

• Studies were made of two interactive systems using threads heavily, and taxonomies draw up

• Interesting difficulties were discovered both in use and implementation

• Starting point for new studies

Page 61: Thread

Challengesidentificazione dei task

dipendenze dei dati

suddivisione dei dati

testingbilanciamento

Page 62: Thread