Click here to load reader

Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8 th Edition Threads

  • View
    222

  • Download
    0

Embed Size (px)

Text of Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8 th Edition Threads

  • Slide 1
  • Silberschatz, Galvin and Gagne 2009Operating System Concepts 8 th Edition Threads
  • Slide 2
  • 4.2 Silberschatz, Galvin and Gagne 2009 Operating System Concepts 8 th Edition Outline Introduzione ai thread Definizione Vantaggi Modelli di programmazione multithread
  • Slide 3
  • 4.3 Silberschatz, Galvin and Gagne 2009 Operating System Concepts 8 th Edition Outline Introduzione ai thread Definizione Vantaggi Modelli di programmazione multithread
  • Slide 4
  • 4.4 Silberschatz, Galvin and Gagne 2009 Operating System Concepts 8 th Edition Motivazioni Nel modello a processi, ogni processo ha il suo spazio di indirizzamento privato ed il modo per interagire quello di utilizzare i meccanismi di IPC messi a disposizione dal sistema Es.: send, receive Questo implica alti costi di interazione, se i dati da scambiare sono molti poich il context-switch unoperazione costosa! Lidea della programmazione multithread di sostituire tanti processi normali con un solo processo in grado di lanciare diversi flussi di esecuzione (thread) che condividono aree testo e dati
  • Slide 5
  • 4.5 Silberschatz, Galvin and Gagne 2009 Operating System Concepts 8 th Edition Thread Thread (processo leggero lightweight process, LWP) simile ad un processo, ma richiede meno risorse da parte del Sistema Operativo Per ogno thread si ha: Identificatore di thread Contatore di programma Insieme di registri Stack Un insieme di thread lanciati dallo stesso processo condividono con il processo che li ha generati: Sezione codice Sezione dati Risorse di sistema (es.: file aperti) Essendo il thread pi leggero, la fase di context switch pi rapida
  • Slide 6
  • 4.6 Silberschatz, Galvin and Gagne 2009 Operating System Concepts 8 th Edition Vantaggi e Svantaggi Vantaggi Tempo di risposta Unapplicazione multithread permette allutente di interagire sempre con essa anche se una parte bloccata (ad esempio in attesa di input) Condivisione delle risorse I thread condividono la memoria e le risorse del processo di appartenenza. Poich una applicazione pu avere pi thread il risparmio notevole Economia Normalmente creare un processo costoso, poich un thread condivide parte delle risorse di un processo la sua creazione pi veloce Uso di sistemi multiprocessori Nei sistemi multiprocessori Se un solo processo non si sfrutta il parallelismo Al contrario, i thread possono essere eseguiti in parallelo aumentando il grado di parallelismo Svantaggi La programmazione in ambienti multithread pi difficile rispetto ai singoli processi Poich i thread di un processo condividono le stesse risorse necessario un accesso con mutua esclusione alle risorse condivise Debugging dei programmi molto pi difficile
  • Slide 7
  • 4.7 Silberschatz, Galvin and Gagne 2009 Operating System Concepts 8 th Edition Uso dei thread I thread possono essere adoperati per eseguire funzioni diverse allinterno della stessa applicazione, ad esempio: Web browser Un thread si occupa si visualizzare le immagini ed il testo Un thread si occupa di ricevere i dati da visualizzare Word processing Un thread mostra testo/immagini a video Un thread si occupa dellinterfaccia utente Un thread controlla gli errori ortografici I thread possono anche essere adoperati per eseguire le stesse funzioni allinterno di una applicazione, ad esempio: Web server Thread che accettano le richieste e creano altri thread per servirle Thread che servono le richiesta di connessione
  • Slide 8
  • 4.8 Silberschatz, Galvin and Gagne 2009 Operating System Concepts 8 th Edition Outline Introduzione ai thread Definizione Vantaggi Modelli di programmazione multithread
  • Slide 9
  • 4.9 Silberschatz, Galvin and Gagne 2009 Operating System Concepts 8 th Edition Modelli di programmazione multithread I thread possono essere definiti come: Thread a livello utente Realizzati tramite librerie che girano in modalit utente Thread a livello kernel Realizzati direttamente nel kernel
  • Slide 10
  • 4.10 Silberschatz, Galvin and Gagne 2009 Operating System Concepts 8 th Edition Thread a livello utente Nellimplementazione dei thread a livello utente il sistema operativo ignora la presenza dei thread I thread sono gestiti da un processo a run-time in modalit utente Il run-time support della libreria gestisce il loro scheduling La creazione dei thread e lo scheduling avvengono a livello applicativo senza entrare nella modalit kernel Lo svantaggio che se un thread effettua una system call bloccate blocca il processo e quindi tutti i thread si bloccano
  • Slide 11
  • 4.11 Silberschatz, Galvin and Gagne 2009 Operating System Concepts 8 th Edition Kernel Threads Le funzioni di creazione, scheduling e gestione sono a carico del Sistema Operativo e quindi implementate direttamente nel kernel A ciascuna funzione corrisponde una system call Quando un thread si blocca il Sistema Operativo pu mettere in esecuzione un altro thread dello stesso processo Possibilit di eseguire thread diversi appartenenti allo stesso processo su unit di elaborazione differenti
  • Slide 12
  • 4.12 Silberschatz, Galvin and Gagne 2009 Operating System Concepts 8 th Edition Esempi di thread Thread a livello utente POSIX Pthreads Win32 threads Java threads Thread a livello kernel Windows 7 Windows XP Linux Mac OS X Solaris Che relazione esiste fra thread a livello utente e quelli a livello kernel?
  • Slide 13
  • 4.13 Silberschatz, Galvin and Gagne 2009 Operating System Concepts 8 th Edition Relazioni tra thread Le relazioni che esistono tra thread a livello utente e thread a livello kernel possono essere Modello da molti a uno Modello da uno a uno Modello da molti a molti
  • Slide 14
  • 4.14 Silberschatz, Galvin and Gagne 2009 Operating System Concepts 8 th Edition Modello molti-a-uno Diversi thread a livello utente sono mappati su un singolo thread a livello kernel Impiegato quando il kernel non gestisce i thread La gestione dei thread efficiente poich avviene a livello utente Se un thread effettua una system call bloccante lintero insieme dei thread si blocca Un solo thread alla volta pu accedere al kernel ed quindi impossibile eseguire pi thread in parallelo
  • Slide 15
  • 4.15 Silberschatz, Galvin and Gagne 2009 Operating System Concepts 8 th Edition Modello uno-a-uno Ogni thread a livello utente corrisponde ad un unico thread a livello kernel Maggiore livello di concorrenza poich se un thread effettua una chiamata bloccante gli altri thread non si bloccano Pi thread possono accedere al kernel quindi possibile eseguire pi thread in parallelo La gestione non molto efficiente poich per ogni thread utente necessario creare il corrispondente thread kernel
  • Slide 16
  • 4.16 Silberschatz, Galvin and Gagne 2009 Operating System Concepts 8 th Edition Modello molti-a-molti Diversi thread a livello utente corrispondono ad un numero uguale o minore di thread del kernel Offre il meglio dei modelli precedenti Offre maggiore concorrenza rispetto al modello molti ad uno Se il numero dei thread aumenta la gestione risulta sempre efficiente rispetto al modello uno ad uno

Search related