Upload
giovanni-grano
View
186
Download
2
Tags:
Embed Size (px)
Citation preview
Università degli Studi di Salerno Sistemi Operativi Avanzati
THREAD
Grano G. Farisano G.Prof. G. Cattaneo
Outline
Outline
Outline
Outline
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
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
Cos’è un thread?
Process vs Threads
• 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
• Tempo di risposta
• Condivisione delle risorse
• Economia
• Scalabilità
Vantaggi
Svantaggi
• Difficoltà di implementazione
• Sincronizzazione
• Sezioni critiche, deadlock…
Creazione thread
• Threading asincrono
• Threading sincrono
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
Thread models (2)
• Modello da molti a uno
• Modello da uno a uno
• Modello da molti a molti
Modello da molti a uno
Modello da uno a uno
Modello da molti a molti (1)
Modello da molti a molti (2)
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
Programmazione multicore
VERSUS
Parallelismo dei dati
Parallelismo dei task
Legge di Amdahl
speedup 1
S + (1�S)N
Multithreading
Supporto hardware da parte di un processore per eseguire più thread.
Fine anni 90: fine ricerche su incremento dell’instruction level parallelism
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
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
Granularità
Implementazioni
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.
Perché Pthread?
• Light Weight
• Efficient Communications/Data Exchange
• Overlapping CPU work with I/O
• Priority/real time scheduling
• Asynchronous event handling
Designing Threaded Programs parallel programming
shared memory
thread-safeness
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
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)
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
Esempio
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”:
Code example
• Sequenziale
• Pthread
• OpenMP
Moltiplicazione matriciale
https://github.com/giograno/thread_so
Codice sequenziale
Uso di pthread
Uso di OpenMP
Tempo di esecuzione
Librerie 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
La JVM e il sistema operativo ospitante
Thread Java(2)
Thread di Windows
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
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
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
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
Dynamic behavior
• Eternal: run forever, waiting on condition variable
• Worker: perform some computation
• Transient: thread with short life, forked off by long-lived 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
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
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
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
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
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
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
Challengesidentificazione dei task
dipendenze dei dati
suddivisione dei dati
testingbilanciamento