Capitolo 5: I thread



Documenti analoghi
Sistemi Operativi. Processi GESTIONE DEI PROCESSI. Concetto di Processo. Scheduling di Processi. Operazioni su Processi. Processi Cooperanti

Computazione multi-processo. Condivisione, Comunicazione e Sincronizzazione dei Processi. Segnali. Processi e Threads Pt. 2

SISTEMI OPERATIVI THREAD. Giorgio Giacinto Sistemi Opera=vi

I Thread. I Thread. I due processi dovrebbero lavorare sullo stesso testo

Definizione Parte del software che gestisce I programmi applicativi L interfaccia tra il calcolatore e i programmi applicativi Le funzionalità di base

Modello dei processi. Riedizione delle slide della Prof. Di Stefano

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Scheduling della CPU. Sistemi multiprocessori e real time Metodi di valutazione Esempi: Solaris 2 Windows 2000 Linux

GESTIONE DEI PROCESSI

1 Processo, risorsa, richiesta, assegnazione 2 Concorrenza 3 Grafo di Holt 4 Thread 5 Sincronizzazione tra processi

L API socket ed i daemon

Sistemi Operativi (modulo di Informatica II) I processi

Il Sistema Operativo. C. Marrocco. Università degli Studi di Cassino

Coordinazione Distribuita

Il Sistema Operativo

Architettura di un sistema operativo

Il Concetto di Processo

Pronto Esecuzione Attesa Terminazione

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione.

Sistemi Operativi STRUTTURA DEI SISTEMI OPERATIVI 3.1. Sistemi Operativi. D. Talia - UNICAL

Sistema Operativo. Fondamenti di Informatica 1. Il Sistema Operativo

Introduzione. Coordinazione Distribuita. Ordinamento degli eventi. Realizzazione di. Mutua Esclusione Distribuita (DME)

Thread. Thread. Creazione di nuovi processi. Applicazioni reali. La creazione di un nuovo processo costa I tempi di context switch sono elevati

Processi e thread. Dipartimento di Informatica Università di Verona, Italy. Sommario

SISTEMI OPERATIVI THREAD. Giorgio Giacinto Sistemi Operativi

Corso di Sistemi di Elaborazione delle informazioni

Il Sistema Operativo (1)

VMware. Gestione dello shutdown con UPS MetaSystem

Lezione 1 Introduzione

1. Che cos è la multiprogrammazione? Si può realizzare su un sistema monoprocessore? 2. Quali sono i servizi offerti dai sistemi operativi?

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

ASPETTI GENERALI DI LINUX. Parte 2 Struttura interna del sistema LINUX

T E O R I A D I P R O G E T T A Z I O N E D E L S O F T W A R E

Il Software. Il software del PC. Il BIOS

La gestione di un calcolatore. Sistemi Operativi primo modulo Introduzione. Sistema operativo (2) Sistema operativo (1)

SISTEMI OPERATIVI. I thread. Prof. Luca Gherardi Prof.ssa Patrizia Scandurra (anni precedenti) (MODULO DI INFORMATICA II)

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

I THREAD O PROCESSI LEGGERI Generalità

Lo scheduler di UNIX (1)

Sistema operativo: Gestione della memoria

Introduzione ai sistemi operativi

Calcolatori Elettronici A a.a. 2008/2009

Database. Si ringrazia Marco Bertini per le slides

Gestione della memoria centrale

Telematica II 17. Esercitazione/Laboratorio 6

Java Virtual Machine

Introduzione alle applicazioni di rete

Protezione. Protezione. Protezione. Obiettivi della protezione

Evoluzione dei sistemi operativi (5) Evoluzione dei sistemi operativi (4) Classificazione dei sistemi operativi

Corso di Sistemi Operativi Ingegneria Elettronica e Informatica prof. Rocco Aversa. Raccolta prove scritte. Prova scritta

Approccio stratificato

The Onion PC. Virtualizzazione strato dopo strato

Premessa Le indicazioni seguenti sono parzialmente tratte da Wikipedia ( e da un tutorial di Pierlauro Sciarelli su comefare.

CAPITOLO 7 - SCAMBIO DI MESSAGGI

Linux nel calcolo distribuito

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. D. Talia - UNICAL. Sistemi Operativi 9.1

Introduzione alla Virtualizzazione

Programmazione concorrente in Java. Dr. Paolo Casoto, Ph.D

2. I THREAD. 2.1 Introduzione

NOTE OPERATIVE. Prodotto Inaz Download Manager. Release 1.3.0

La torta caprese. Ingredienti. Istruzioni: 5 uova 8 cucchiai di zucchero 1/8kg di burro ¼kg di mandorle dolci 100gr di cioccolato fondente

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena

La Gestione delle risorse Renato Agati

2.5. L'indirizzo IP identifica il computer di origine, il numero di porta invece identifica il processo di origine.

Sistemi Operativi. Lez. 13: primitive per la concorrenza monitor e messaggi

Nelle reti di calcolatori, le porte (traduzione impropria del termine. port inglese, che in realtà significa porto) sono lo strumento

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Un sistema operativo è un insieme di programmi che consentono ad un utente di

Multithreading in Java. Fondamenti di Sistemi Informativi

Comunicazione tra Processi

Comunicazione tra Processi

Assegnamento di un indirizzo IP temporaneo a dispositivi Barix

Sistemi Operativi. Scheduling della CPU SCHEDULING DELLA CPU. Concetti di Base Criteri di Scheduling Algoritmi di Scheduling

Sistemi Operativi SCHEDULING DELLA CPU. Sistemi Operativi. D. Talia - UNICAL 5.1

Ambienti di calcolo a griglia Parte 2. Risorse (e loro gestione) Job di griglia e applicazioni di griglia Riservare le risorse ai job

SUPPORTO TECNICO AI PRODOTTI:

SISTEMI OPERATIVI. Prof. Enrico Terrone A. S: 2008/09

Sistemi Operativi GESTIONE DELLA MEMORIA CENTRALE. D. Talia - UNICAL. Sistemi Operativi 6.1

Comunicazione tra Computer. Protocolli. Astrazione di Sottosistema di Comunicazione. Modello di un Sottosistema di Comunicazione

INFORMATICA. Il Sistema Operativo. di Roberta Molinari

Il SOFTWARE DI BASE (o SOFTWARE DI SISTEMA)

Scheduling della CPU Introduzione ai Sistemi Operativi Corso di Abilità Informatiche Laurea in Fisica

CVserver. CVserver. Micky Del Favero BLUG - Belluno Linux User Group Linux Day Feltre 25 ottobre Un cluster di VServer

Scheduling della CPU

Lezione 4 La Struttura dei Sistemi Operativi. Introduzione

Scheduling. Sistemi Operativi e Distribuiti A.A Bellettini - Maggiorini. Concetti di base

Algoritmi di scheduling

11/02/2015 MANUALE DI INSTALLAZIONE DELL APPLICAZIONE DESKTOP TELEMATICO VERSIONE 1.0

Sistemi Operativi (modulo di Informatica II)

Capitolo 3: Strutture dei sistemi operativi

1) GESTIONE DELLE POSTAZIONI REMOTE

Architettura hardware

Potenza Elaborativa, Sistemi Operativi e Virtualizzazione

Organizzazione Monolitica

Scuola Superiore Sant Anna. Progetto parte Unix. AA : Distributed File Repository

I Thread. Laboratorio Software M. Grotto R. Farina

Installazione e caratteristiche generali 1

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Lezione 5. Processi e thread. Sistemi operativi. Marco Cesati System Programming Research Group Università degli Studi di Roma Tor Vergata

Transcript:

Capitolo 5: I thread Generalità. Modelli multithread. Problematiche relative ai thread. Pthread. 5.1

I thread Il thread è un flusso di controllo relativo ad un dato processo. Molti sistemi operativi moderni consentono ad un processo di contenere più flussi di controllo. Generazione di thread vs generazione di processi figli. La creazione di processi è un meccanismo dispendioso in termini di tempo e risorse necessarie. Quando le funzionalità da eseguire sono sostanzialmente analoghe ma semplicemente multiplate non ha senso ridondare l intero apparato a corredo di un processo. È il caso ad esempio di un demone HTTP che deve servire migliaia di client per restituire risorse complesse (immagini, audio, video). Generalmente è più opportuno replicare semplicemente i flussi di controllo di un medesimo processo. È il caso dei server RPC ed RMI che sono tipicamente multithread. 5.2

Single e multithreading Thread = unità atomica di utilizzo della CPU. Comprende: Identificatore del thread; Program counter; Register set; Stack. Due o più thread relativi al medesimo processo condividono: Sezione di codice e di dati; Risorse (file aperti). 5.3

Vantaggi Prontezza di risposta. Migliore interazione con l utente nel caso di applicazioni interattive. Condivisione di risorse. I thread condividono memoria e risorse del processo al quale appartengono e questo rende possibile avere un elevato numero di thread all interno dello stesso spazio di indirizzi. Economia. È più economico cambiare il contesto di thread piuttosto che fra processi dato che essi condividono memoria e risorse: in Solaris T creazione processo 30 T creazione thread T context switching processo 5 T context switching thread Utilizzo di architetture multiprocessore. I benefici del multithreading aumentano fortemente su macchine multi-cpu (i thread vengono eseguiti con un parallelismo reale). 5.4

Thread user/kernel space La gestione dei thread è effettuata a livello utente attraverso una opportuna libreria. Essa fornisce al programmatore le API per la creazione e gestione dei thread. Le librerie di thread a livello utente possono essere implementate secondo due approcci: Libreria completamente residente all interno dello user space senza supporto da parte del kernel. Invocare una funzione di libreria si traduce in una chiamata di funzione locale. Libreria a livello kernel. Invocare una funzione delle API della libreria comporta una chiamata di sistema. Tre principali librerie di thread: POSIX Pthread (user/kernel thread). Java thread (user/kernel thread). Win32 thread (kernel thread). 5.5

Modello molti-a-uno Il modello molti-a-uno riunisce molti thread di livello utente in un unico kernel thread. La gestione è effettuata a livello utente e quindi è efficiente. L intero processo si blocca se un thread esegue una chiamata di sistema bloccante. Non è possibile eseguire thread multipli in parallelo su più processori in quanto un solo thread per volta può accedere al kernel. 5.6

Modello uno-a-uno Il modello uno-a-uno mappa ciascun thread utente in un kernel thread. Aumenta il livello di concorrenza possibile: Un thread può essere in esecuzione mentre un altro esegue una chiamata di sistema bloccante. Più thread possono essere eseguiti in parallelo su più processori. Obbliga alla mappatura di uno user thread su un kernel thread. L overhead della creazione di un kernel thread si ripercuote sull applicazione. Esempi: In genere è posto un limite al multithreading. Windows NT/XP/2000 Linux Solaris 9. 5.7

Modello molti-a-molti Permette di aggregare molti thread a livello utente verso un numero più piccolo o equivalente di kernel thread. Permette al sistema operativo di creare un numero sufficiente di kernel thread in base alle caratteristiche dell architettura. Non soffre di alcuna delle limitazioni dei precedenti modelli. Esempio: Windows NT/2000 con il pacchetto ThreadFiber. 5.8

Modello a due livelli Variante del modello molti-a-molti che permette anche di associare un thread di livello utente ad un kernel thread. Esempi: True64 UNIX Solaris 9 IRIX 5.9

fork() ed exec() Le chiamate di sistema fork() ed exec() hanno, nel caso dei thread, una semantica differente rispetto a quella dei processi. La chiamata exec() ha un funzionamento pressoché analogo: si procede a rimpiazzare l intero processo inclusi tutti i suoi thread. Se un thread in un programma chiama una fork() si potrebbe a seconda della specifica applicazione: duplicare tutti i thread duplicare solo il thread che invoca la fork(). Quale delle due versioni di fork() è da usare? Se la chiamata è seguita da una exec(), non è necessario duplicare l intero thread set dal momento che il programma specificato come parametro della exec() rimpiazzerà l intero processo. In caso di fork() singola è opportuno che si duplichi l intero thread set. 5.10

Cancellazione di thread È l atto di terminare un thread prima che abbia completato la propria esecuzione. La cancellazione di un thread target può avvenire in due differenti scenari: Cancellazione asincrona: un thread termina immediatamente il thread target. Cancellazione differita: il thread target può periodicamente effettuare un controllo di terminazione avendo così l opportunità di terminare in modo ordinario. La cancellazione asincrona comporta problemi quando: in fase di cancellazione un thread sta modificando dati condivisi con altri thread; le risorse assegnate ad un thread cancellato non vengano integralmente restituite. In tal caso il sistema operativo potrebbe reclamarle senza esito. 5.11

Gestione dei segnali (1/2) Nei sistemi UNIX per notificare ad un processo che si è verificato un particolare evento si usa un segnale. Un segnale può essere ricevuto in modo sincrono o asincrono a seconda della sua origine e dell evento che lo ha generato. La gestione dei segnali può essere affidata al: 1. Gestore di default dello specifco segnale (eseguito dal kernel); 2. Gestore definito dall utente. Trattare un segnale può significare: 1. ignorarlo; 2. condurre ad un intervento stabilito dal signal manager; 3. condurre alla terminazione del programma. 5.12

Gestione dei segnali (2/2) La gestione di segnali è più complessa nel caso di multithreading. Riguardo al signal delivery esistono differenti possibilità: Consegnare il segnale al thread cui il segnale viene applicato. Consegnare il segnale ad ogni thread del processo. Consegnare il segnale al alcuni thread del processo. Designare un thread specifico che riceva tutti i segnali per conto del processo. Il metodo adoperato in genere dipende dal tipo di segnale. I segnali sincroni devono essere consegnati al thread che ha causato l evento. Nel caso di segnali asincroni la situazione è più complessa: Alcuni segnali asincroni dovrebbero essere inviati a tutti i thread (come p.es nel caso di terminazione di un processo). In taluni casi UNIX permette di lasciare al thread la decisione sui segnali da accettare e su quelli da bloccare: un segnale asincrono verrà consegnato solo al primo thread che non lo blocca. In Windows i segnali vengono emulati attraverso le Asyncronous Procedure Call (APC). 5.13

Nei server multithread: Gruppi di thread si potrebbero esaurire le risorse di sistema (specialmente tempo di CPU e memoria) se non viene posto limite alla creazione di thread concorrenti; prima che la richiesta possa essere servita occorre attendere un tempo imprecisato in attesa della creazione di un nuovo thread. Come soluzione si può pensare di creare numerosi thread all avvio del processo e metterli dentro ad un pool dove restano in attesa di lavoro. Quando un server multithread riceve una richiesta, si limiterà a risvegliare uno dei thread disponibili all interno del pool. Espletata la richiesta il thread rientra nel pool in sleeping. Se il pool non ha thread disponibili, il server resterà in attesa. Vantaggi: Servire la richiesta all interno di un thread esistente è tipicamente più veloce che attendere la creazione di un thread. Un pool di thread limita il numero di thread esistenti in contemporanea. Le dimensioni dei pool di thread possono essere fissate in modo euristico oppure dinamicamente in base ai pattern di carico. 5.14

LWP Il modello molti-a-molti ed il modello a due livelli richiedono una comunicazione fra kernel e libreria di thread per mantenere un appropriato numero di kernel thread allocati all applicazione. Si adopera una struttura intermedia tra user thread e kernel thread denominata LightWeight Process (LWP). Un LWP appare alla libreria dei thread utente come un processore virtuale sul quale schedulare l esecuzione. Una applicazione CPU-bound su un sistema monoprocessore implica che un solo thread per volta possa essere eseguito, quindi per essa sarà sufficiente un unico LWP per thread. Una applicazione I/O-bound tipicamente richiede un LWP per ciascuna chiamata di sistema bloccante. 5.15

Attivazione dello schedulatore Il kernel mette a disposizione un set di LWP (processori virtuali) per ciascuna applicazione. Essa può schedulare su ciascuno di essi un thread. L attivazione dello schedulatore fornisce upcall (chiamate al thread) un meccanismo di comunicazione dal kernel alla libreria dei thread. La libreria di thread esegue un upcall manager per processore virtuale. Esso provvede alla gestione degli eventi diretti al thread. Quando un kernel thread sta per bloccarsi viene scatenato un evento che attiva una upcall. Il kernel informa l applicazione che uno specifico thread sta per bloccarsi e alloca un nuovo LWP per l applicazione. Questa esegue un upcall manager su di esso. L upcall manager del thread in fase di blocco ne salva lo stato e rilascia il processore virtuale. Poi provvede a schedulare un nuovo thread eleggibile per il LWP appena rilasciato. Al verificarsi dell evento per cui il thread era bloccato, il kernel fa una upcall alla libreria dei thread segnalando l eleggibilità per l esecuzione del thread fermo. Il gestore di upcall per questo evento richiede un processore virtuale e vi schedula l esecuzione del thread sbloccato. L attivazione dello schedulatore permette ad una applicazione di mantenere il corretto numero di kernel thread. 5.16

Pthread Standard POSIX (IEEE 1003.1c). API per la creazione e la sincronizzazione dei thread. Fornisce una specifica per il comportamento della libreria dei thread. I progettisti di sistemi operativi possono implementare la specifica nel modo che desiderano. Frequente nei sistemi operativi di UNIX (Solaris, Linux, Mac OS X). Le API di Pthread possono essere considerate come librerie di thread a livello utente. Non esiste alcuna relazione fra un thread creato usando le API di Pthread e un thread del kernel associato. 5.17