Top Banner
Università degli Studi di Salerno Sistemi Operativi Avanzati THREAD Grano G. Farisano G. Prof. G. Cattaneo
62
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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