SISTEMI OPERATIVI THREAD 2
Mo*vazioni» Un programma complesso può eseguire in modo concorrente più funzioni agraverso la creazione e ges=one di processi figli agraverso il meccanismo dei thread» La creazione e ges=one di più thread all interno di ciascun processo è più leggera rispego all uso di processi concorren=» Requisi= Librerie di ges=one Vantaggi con supporto hardware al mul=threading Vantaggi nel caso di architegure mul=core 3 Thread» Unità di base d uso della CPU» Le risorse sono assegnate al processo TuQ i thread di un processo condividono le risorse del processo (memoria, file aper=, ecc.) ma hanno un loro program counter, registri, stack 4
Mul*threading 5 Impieghi del mul*threading» Programmi applica=vi ges=one interfaccia grafica, input, validazione input» Server thread dedica= a ciascun client» Sistemi opera=vi diverse funzionalità implementate come thread mul=pli 6
Esempio: Archite>ura server mul*thread 7 Vantaggi mul*threading» 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 opera=vo» Economia Ges=re i thread è in genere meno oneroso che ges=re processi concorren=» Scalabilità Esecuzione più rapida su architegure mul=processore 8
Esempio Pthreads 9 Esempio Pthreads Example Pthreads (Cont.) (Cont.) 10 perating System Concepts ñ 9 th Edition 4. 20 Silberschatz, Galvin and Gagne 2013
Pthreads Code for Joining 10 Threads Pthreads Codice per il join di 10 thread Operating System Concepts ñ 9 th Edition 4. 21 Silberschatz, Galvin and Gagne 2013 11 Programmazione mul*core» Il progego di una applicazione che sfruq a pieno le architegure mul=core è complesso Individuare i task fra loro indipenden= Bilanciamento del carico fra i vari task Separazione dei da= + per parallelizzare l accesso ai da= Dipendenze dei da= + evitare incoerenze fra da= elabora= da task diversi Test e debugging + complicato dalle aleatorietà dei flussi d esecuzione 12
Esecuzione concorrente su un sistema a singolo core 13 Esecuzione parallela su un sistema mul*core 14
15 Thread a livello utente e Thread a livello kernel» Thread a livello utente Sono ges== senza l intervento del sistema opera=vo Librerie dei linguaggi di programmazione» Thread a livello kernel Sono ges== diregamente dal sistema opera=vo Supporta= da Windows, Linux, Mac OS X, Solaris, ecc. 16
Modello da mol* a uno» Scheduling thread indipendente dal sistema opera=vo» Una chiamata bloccante al kernel blocca l intero processo» Non sono possibili chiamate concorren= al kernel» Nessun vantaggio in caso di architegura mu=processore 17 Modello da uno a uno» Non ha gli svantaggi del modello precedente» Svantaggio di questo modello Possibile creazione di troppi thread a livello kernel» Modello usato da Windows e Linux 18
Modello da mol* a mol*» Thread a livello kernel in numero inferiore o uguale al numero di thread a livello utente 19 Modello a due livelli 20
21 Librerie» La programmazione mul=thread 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 agraverso JVM usano librerie del sistema opera=vo ospitante) 22
23 Principali aspeh problema*ci» Comportamento delle chiamate di sistema fork() e exec()» Cancellazione di thread è il nome dato alla terminazione forzata» Ges=one dei segnali invia= ai processi» Creazione di gruppi di thread (thread pool) La richiesta di un servizio viene soddisfaga da uno dei thread nel gruppo non ancora impegnato» Associazione ai thread di da= specifici» Comunicazione fra libreria del kernel e libreria dei thread (LWP e aqvazione dello scheduler) 24
AHvazione delle scheduler Modelli mol= a mol= e a due stadi» LWP - LightWeight Process StruGura da= 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 effegua lo scheduling sui LWP 25