I Thread. I Thread. Se creiamo un nuovo processo con la fork, questo erediterà dal padre

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "I Thread. I Thread. Se creiamo un nuovo processo con la fork, questo erediterà dal padre"

Transcript

1 I Thread 1 Ad un generico processo, sono associati i seguenti dati e le seguenti informazioni: codice del programma in esecuzione un area di memoria contenente le strutture dati dichiarate nel programma in esecuzione file aperti stack (per le chiamate di procedure e funzioni) contenuto dei registri della CPU I Thread 2 Se creiamo un nuovo processo con la fork, questo erediterà dal padre il codice, ma questo potrà essere sostituito da nuovo codice, mediante la system call execl una copia delle strutture dati una copia della User File Table 1

2 I Thread 3 Consideriamo due processi che devono lavorare sugli stessi dati. Come possono fare, se ogni processo ha la propria area dati (ossia, gli spazi di indirizzamento sono separati)? i dati possono essere scambiati mediante messaggi o tenuti in memoria condivisa i dati possono essere tenuti in un file che viene acceduto a turno dai due processi. Non sarebbe comodo poter avere processi che possano automaticamente lavorare sugli stessi dati, senza usare meccanismi espliciti di condivisione/comunicazione? I Thread 4 Ad esempio, in un editor di testo: un processo gestisce l input e i comandi di formattazione dell utente un altro processo esegue il controllo automatico di errore I due processi dovrebbero lavorare sullo stesso testo La copia corrente del testo è mantenuta in MP, ma come fanno i due processi a condividere la stessa copia, se ogni processo ha un diverso spazio di indirizzamento? 2

3 I Thread 5 Il context switch tra processi richiede molto lavoro al SO: oltre a cambiare il valore dei vari registri, deve spostarsi dalle aree dati e di codice del processo uscente, a quelle del processo entrante. Se dati e codice di quest ultimo erano stati swappati in memoria secondaria, occorre prima riportarli in memoria primaria. Se due (o più) processi potessero condividere dati e codice, il context switch fra di loro sarebbe molto più veloce Per soddisfare questo tipo di esigenza è nato il concetto di thread I Thread 6 Un normale processo è contraddistinto da un unico Thread (filo) di computazione: la sequenza di istruzioni eseguite (che ovviamente può cambiare da un esecuzione all altra, se cambiano, ad esempio, i dati di input). codice dati file registri stack thread 3

4 I Thread 7 Un processo Multi-Thread è fatto di più thread, detti peer thread. Un insieme dei peer thread è detto task. I Thread 8 Ad ogni thread è associato in modo esclusivo il suo stato della computazione, fatto da: valore del program counter e degli altri registri della CPU uno stack Ma un thread condivide con i suoi peer thread: il codice in esecuzione i dati i file aperti 4

5 I Thread 9 I context switch avviene anche tra ognuno dei peer thread che formano task, in modo che tutti possano portare avanti la computazione Ma il context switch fra peer thread richiede il salvataggio e il ripristino solo dei registri della CPU e dello stack (che sono diversi per ogni thread) Codice, dati e file aperti sono gli stessi per tutti, e non devono essere cambiati: IL CONTEXT SWITCH TRA PEER THREAD E MOLTO PIU VELOCE I Thread 10 Il context switch tra processi è molto più oneroso per il SO del context switch tra peer thread, perché nel primo caso sono coinvolte più informazioni da cambiare. Per questa ragione, i normali processi (quelli che abbiamo imparato ad usare in unix fino ad ora) sono spesso chiamati: heavy-weight process (HWP) Mentre per un singolo thread è usato spesso il termine: light-weight process (LWP) 5

6 I Thread 11 Ma come si fa a distinguere tra i thread di un task (in modo da far fare a ciascuno una cosa diversa), se questi condividono lo stesso codice? con delle opportune system call, che all interno del codice permettono di creare i thread necessari, e specificano per ciascun thread quale pezzo di codice deve eseguire quel thread Naturalmente, altre system call permetteranno ai thread di sincronizzarsi fra di loro (in modo simile a come i processi possono sincronizzarsi fra di loro usando i semafori). POSIX Threads (pthreads) 12 Portable Operating System Interface Threads: lo standard POSIX per la programmazione con threads Vari sistemi operativi e versioni di sistemi operativi supportano i POSIX Threads (pthread d ora in poi), anche Solaris. (Poi spesso aggiungono qualcosa in più...) I Pthreads, essendo uno standard riconosciuto, sono portabili da un sistema ad un altro. Riferimenti: Butenhof, Programming with POSIX threads, Addison-Wesley. Multithreaded Programming Guide, SUN microsystem. (ne trovate una copia in formato pdf sulle pagine del corso di laboratorio). 6

7 POSIX Threads (pthreads) 13 per usare i pthreads in un programma C, è necessario includere la libreria: <pthread.h> Per compilare un programma che usa i pthreads occorre linkare la libreria libpthread, usando l opzione -lpthread: $> gcc prog.c -o prog -lpthread Creazione di un thread 14 Un thread ha vari attributi, che possono essere cambiati, ad esempio: la sua priorità (che influenza la frequenza con cui verrà schedulato) la dimensione del suo stack (che specifica la quantità massima di argomenti che gli si possono passare, la profondità delle chiamate ricorsive, e così via) Noi però vedremo sempre thread con gli attributi di default 7

8 Creazione di un thread 15 Gli attributi di un thread sono contenuti in un oggetto di tipo pthread_attr_t la syscall: int pthread_attr_init(pthread_attr_t *attr); inizializza con i valori di default un contenitore di attributi *attr, che potrà poi essere passato alla system call che crea un nuovo thread. Creazione di un thread 16 Un nuovo thread viene creato con la syscall intera pthread_create che accetta quattro argomenti: una varibile di tipo pthread_t, che conterrà l identificativo del thread che viene creato un oggetto *attr, che conterrà gli attributi da dare al thread creato. Se si vuole creare un thread con attributi di default, si può anche semplicemente usare NULL un puntatore alla routine che contiene il codice che dovrà essere eseguito dal thread un puntatore all eventuale argomento che si vuole passare alla routine stessa 8

9 Terminazione di un thread 17 Un thread termina quanto finisce il codice della routine specificata all atto della creazione del thread stesso, oppure quando, nel codice della routine, chiama la syscall di terminazione: void pthread_exit(void *value_ptr); Quando termina, il thread restituisce il valore di return specificato nella routine, oppure, se chiama la pthread_exit, il valore passato a questa syscall come argomento. Sincronizzazione fra thread 18 Un thread può sospendersi, in attesa della terminazione di un altro thread chiamando la syscall: int pthread_join(pthread_t thread, void **value_ptr); identificativo del thread di cui si attende la terminazione. Naturalmente deve essere un thread appartenente allo stesso task. valore restituito dal thread che termina 9

10 il primo esempio: t1.c 19 #include <pthread.h> #include <stdio.h> funzione che contiene il codice di un peer thread void *tbody(void *arg) { int j; printf(" ciao sono un thread, mi hanno appena creato\n"); *(int *)arg = 10; sleep(2) /* faccio aspettare un pò il mio creatore, poi termino */ pthread_exit((int *)50); /* oppure return ((int *)50); */ } main(int argc, char **argv) { int i; pthread_t mythread; void *result; printf( sono il primo thread, ora ne creo un altro \n"); pthread_create(&mythread, NULL, tbody, (void *) &i); printf( ora aspetto la terminazione del thread che ho creato \n"); pthread_join(mythread, &result); printf("il thread creato ha assegnato %d ad i\n",i); printf("il thread ha restituito %d \n",result); } 20 10

11 il primo esempio: t1.c 21 provate a stampare mythread come intero. Che valore ha? E se create altri thread (mythread1, mythread2,...) che valore viene assegnato alle rispettive variabili? Provate anche ad usare la funzione che restituisce l id di un thread: pthread_t thread_id thread_id = pthread_self(); // id del thread chiamante il thread main ha generato un secondo thread tbody. Poi main si è messo in attesa della terminazione del thread creato (con pthread_join), ed è terminato lui stesso. Ma che differenza c è rispetto ad usare fork e wait (eventualmente con una execl)? condivisione dello spazio logico 22 I due thread condividono lo stesso spazio di indirizzamento, e quindi vedono le stesse variabili: se uno dei due modifica una variabile, la modifica è vista anche dall altro thread. Nel codice di t1, il main passa al thread tbody il puntatore alla variabile i dichiarata nel main. il thread tbody modifica la variabile, e questa modifica è vista da main. Nel caso dei processi tradizionali, una cosa simile è ottenibile solo usando esplicitamente un segmento di memoria condivisa. 11

12 condivisione dello spazio logico 23 Ma i thread di un task possono condividere variabili in maniera ancora più semplice, usando variabili globali. #include <pthread.h> #include <stdio.h> int global_var = 5; void *tbody(void *arg) { printf(" ciao sono un thread, ora modifico una var globale\n"); global_var = 27; *(int *)arg = 10; pthread_exit((int *)50); /* oppure return ((int *)50); */ } main(int argc, char **argv) { pthread_t mythread; void *result; pthread_create(&mythread, NULL, tbody, (void *) &i); printf( ora aspetto la terminazione del thread che ho creato \n"); pthread_join(mythread, &result); printf( ora global_var vale: %d \n",global_var); } tuttavia un thread può anche avere variabili proprie, viste solo dal thread stesso usando la classe di variabili thread_specific_data, che però noi non vedremo 24 12

13 Sincronizzazione fra thread 25 Diversi strumenti sono disponibili per sincronizzare fra loro i thread di un task, fra questi anche i semafori. In realtà i semafori non fanno parte dell ultima versione dello standard POSIX, ma della precedente. Tuttavia sono normalmente disponibili in tutte le versioni correnti dei pthread. I pthread mettono anche a disposizione meccanismi di sincronizzazione strutturati, quali le variabili condizionali, che però noi non vedremo. Semafori nei thread 26 per usare i semafori nei thread occorre includere: #include <semaphore.h> un semaforo si dichiara semplicemente con: sem_t mysemaphore e si inizializza con: sem_init(&mysemaphore, 0, val); dove il secondo argomento, se vale 0, significa che il semforo può essere usato solo dai thread appartenenti al processo che lo ha creato, e val è il valore iniziale da assegnare al semaforo. 13

14 Semafori nei thread 27 le due operazioni fondamentali sui semafori sono: sem_wait(&mysemaphore); (che è ovviamente l equivalente della operazione di wait/down/p che abbiamo visto a teoria) sem_post(&mysemaphore); (che è l equivalente della operazione di signal/up/v che abbiamo visto a teoria) #include <pthread.h> #include <stdio.h> #include <semaphore.h> 28 char glob_var[100]; /* variabile condivisa dai thread */ sem_t mutex; /* semaforo usato per la mutua esclusione su glob_var */ void *thread1(void *arg) { int i; for(i = 0; i < 5; i++) { sleep(random_time); sem_wait(&mutex); printf("mi hanno scritto: %s\n",glob_var); sprintf(glob_var,"ho ASPETTATO %d SECONDI\n",ran); sem_post(&mutex); } pthread_exit(null); /* oppure return(null); */ } sezione critica 14

15 void *thread2(void *arg) { int i; for(i = 0; i < 5; i++){ sleep(random_time); sem_wait(&mutex); printf("they wrote me: %s\n",glob_var); sezione critica sprintf(glob_var,"i WAITED %d SECONDS\n",ran); sem_post(&mutex); } pthread_exit(null); /* oppure return(null); */ } int main(int argc, char *argv[]) { int i; void *result; pthread_t t1,t2; sem_init(&mutex,0,1); /* inizializzazione del semaforo */ pthread_create(&t1, NULL, thread1, (void *) &i); pthread_create(&t2, NULL, thread2, (void *) &i); pthread_join(t1, &result); pthread_join(t2, &result);} 29 Scheduling dei thread 30 Come viene distribuito il tempo di CPU fra in vari peer thread all interno di un task, e tra i thread appartenenti a task diversi? Lo standard POSIX non specifica nulla a riguardo, e diversi (realizzazioni di) sistemi operativi possono a tal proposito compiere scelte implementative differenti. Uno stesso sistema operativo, può anche permettere all utente di specificare la politica di scheduling preferita per le proprie applicazioni che utilizzino i thread. 15

16 Scheduling: Thread a livello utente 31 Il SO non sa dell esistenza dei threads. Si dice che i thread esistono solo a livello utente. Il context switch da un peer thread all altro (all interno quindi dello stesso task) avviene mediante opportune funzioni di libreria chiamate all interno del codice dei thread stessi. Quando un thread sta per fermarsi, specifica prima quale peer thread deve proseguire la computazione Scheduling: Thread a livello utente 32 Il SO vede un task fatto di più thread come un normale processo, e gli assegna la CPU secondo il criterio di scheduling adottato per l intero sistema (ad esempio, RR). All interno del task, il tempo di CPU è suddiviso tra i vari peer thread a seconda del codice che eseguono. Se il codice di un thread è scritto male, e il thread si blocca senza farne partire un altro, tutto il tempo di CPU assegnato a quel task (e quindi a tutti i peer thread) viene sprecato 16

17 Scheduling: Thread a livello kernel 33 Il SO deve mantere delle strutture dati per gestire sia i normali processi che tutti i peer thread di un task Quando un thread si blocca volontariamente, o termina il suo quanto di tempo, è il SO che assegna la CPU: a un altro thread dello stesso task a un altro thread di un altro task a un altro processo normale Quindi il SO gestisce ogni singolo thread secondo il modello time-sharing Scheduling dei thread 34 Come si fa a sapere qual è il tipo di scheduling (di default) adottato da un certo sistema operativo che supporta i thread? Possiamo scrivere un semplice programma fatto da due thread che utilizzano una variabile condivisa myvar: il primo thread, thread-1 esegue delle operazioni CPU bound non specificate (chiamiamole CPU-OP) e poi modifica il valore di myvar e termina. Il secondo thread, thread-2, creato dal primo, stampa myvar e termina 17

18 Scheduling dei thread 35 Si possono quindi verificare due casi: se lo scheduling è a livello utente, allora thread-2 ottiene la CPU solo quando thread-1 la abbandona, e quindi il valore di myvar stampato sarà quello dovuto alla modifica operata da thread-1 prima di terminare. se lo scheduling è a livello kernel: 1) se CPU-OP dura più del quanto di tempo, la CPU potrà essere assegnata a thread-2 prima della terminazione di thread-1, e il valore di myvar stampato sarà quello assegnatogli inizialmente. Se 2) CPU-OP dura meno del quanto di tempo, il valore stampato sarà quello assegnato da thread-1. Scheduling dei thread 36 #include <pthread.h> #include <stdio.h> int flag=0; void *tbody(void *arg) { printf("flag = %d \n",flag); pthread_exit(null); } int main(int argc, char *argv[]) { int c,h; pthread_t t; void *status; if (argc!= 2) exit(1); 18

19 Scheduling dei thread 37 c=atoi(argv[1]); pthread_create(&t, NULL, tbody, NULL); for (h=0;h<c;h++); /* usa la CPU per del tempo, a seconda del valore dell'argomento 2 e della velocita' del processore */ flag = 1; pthread_join(t, &status); } ora basta lanciare il programma con diversi valori in input (10, 100, 1000) e vedere se valore di myvar stampato in output rimane lo stesso o cambia. user-level thread 38 VANTAGGI Tempo di context switch (fra thread di uno stesso processo) molto basso SVANTAGGI È difficile evitare che quando un thread ha bisogno di eseguire una system call bloccante, non vengano bloccati anche gli altri thread nello stesso processo Puo' essere implementato al di sopra di qualsiasi sistema operativo Non potrà mai esserci piu' di un thread running per processo anche se il sistema possiede molte CPU 19

20 kernel-level thread 39 VANTAGGI In un sistema con molte CPU e possibile avere piu' di un thread running per processo Il sistema e' sempre in grado di schedulare i thread pronti ad eseguire anche se uno o piu' altri thread nello stesso task sono bloccati in attesa di un evento. SVANTAGGI Il tempo di context switch fra thread di uno stesso processo, anche se meno costoso di un context switch fra processi diversi, e' comunque costoso perche' richiede il passaggio a modalita' kernel Il SO deve predisporre strutture dati per tutti i thread: questo pone limitazioni sul numero massimo di thread che possono essere attivati all'interno di un processo e complessivamente nel sistema Vantaggi nell uso dei thread 40 Efficienza: in Solaris, creare un LWP richiede circa 30 volte meno tempo che creare un HWP. Il context switch tra peer thread richiede 5 volte meno tempo del context switch tra processi Condivisione di dati e risorse: più thread possono lavorare su dati condivisi in maniera efficiente (ma devono sincronizzarsi in maniera adeguata) Uso di architetture con più CPU: i thread sono naturalmente adatti per lavorare in parallelo su più CPU che condividono la stessa MP 20

5 Thread. 5 Thread. 5 Thread. Ad un generico processo, sono associati, in maniera univoca, i seguenti dati e le seguenti informazioni:

5 Thread. 5 Thread. 5 Thread. Ad un generico processo, sono associati, in maniera univoca, i seguenti dati e le seguenti informazioni: 1 Ad un generico processo, sono associati, in maniera univoca, i seguenti dati e le seguenti informazioni: codice del programma in esecuzione un area di memoria contenente le strutture dati dichiarate

Dettagli

Introduzione al Multithreading

Introduzione al Multithreading Introduzione al Multithreading Claudia Calidonna Istituto di di Cibernetica C.N.R. Argomenti principali Parleremo di : Processi & Threads Operazioni sui threads ed eventuali confronti tra operazioni sui

Dettagli

il tipo di parallelismo dipende dal grado di cooperazione

il tipo di parallelismo dipende dal grado di cooperazione Thread Settembre 2009 programma e parallelismo il tipo di parallelismo dipende dal grado di cooperazione (scambio d informazione) necessario tra attività svolte in parallelo processo macchina virtuale

Dettagli

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

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2017-18 Pietro Frasca Lezione 10 Martedì 7-11-2017 Thread a livello kernel Modello da uno a uno La

Dettagli

ACSO Programmazione di Sistema e Concorrente

ACSO Programmazione di Sistema e Concorrente ACSO Programmazione di Sistema e Concorrente P2 Modello Thread 2/12/2015 programma e parallelismo il tipo di parallelismo dipende dal grado di cooperazione (scambio di informazione) necessario tra attività

Dettagli

LinuxThreads: I thread nel sistema operativo LINUX: Linuxthreads. LinuxThreads. LinuxThreads

LinuxThreads: I thread nel sistema operativo LINUX: Linuxthreads. LinuxThreads. LinuxThreads I thread nel sistema operativo LINUX: Linuxthreads : Caratteristiche Processi leggeri realizzati a livello kernel System call clone: int clone(int (*fn) (void *arg), void *child_stack, int flags, void

Dettagli

LABORATORIO DI SISTEMI OPERATIVI

LABORATORIO DI SISTEMI OPERATIVI LABORATORIO DI SISTEMI OPERATIVI Corso di Laurea Triennale in Ingegneria Informatica A.A. 2018/2019 Guglielmo Cola Email: g.cola@iet.unipi.it Web: iet.unipi.it/g.cola Thread POSIX nel sistema Linux (parte

Dettagli

Corso di Laboratorio di Sistemi Operativi A.A

Corso di Laboratorio di Sistemi Operativi A.A Corso di Laboratorio di Sistemi Operativi A.A. 2016 2017 Lezione 17 Ivan Scagnetto ivan.scagnetto@uniud.it Nicola Gigante gigante.nicola@spes.uniud.it Dipartimento di Scienze Matematiche, Informatiche

Dettagli

Corso di Laboratorio di Sistemi Operativi

Corso di Laboratorio di Sistemi Operativi Corso di Laboratorio di Sistemi Operativi Lezione 7 Alessandro Dal Palù email: alessandro.dalpalu@unipr.it web: www.unipr.it/~dalpalu Threads Un thread è l unità di base per l utilizzo della CPU. Composto

Dettagli

Esercitazione n.1 24 Ottobre Obiettivi:

Esercitazione n.1 24 Ottobre Obiettivi: Esercitazione n.1 24 Ottobre 2013 Obiettivi: Gestione dei thread mediante libreria pthreads: creazione: pthread_create terminazione: pthread_exit join: pthread_join 1 Richiami sui thread 2 Processi Immagine

Dettagli

Thread. Contiene lucidi tratti da: Marco Faella, Clemente Galdi, Giovanni Schmid (Università di Napoli Federico II),

Thread. Contiene lucidi tratti da: Marco Faella, Clemente Galdi, Giovanni Schmid (Università di Napoli Federico II), Thread Contiene lucidi tratti da: 2006-2007 Marco Faella, Clemente Galdi, Giovanni Schmid (Università di Napoli Federico II), 2005-2007 Thread processi leggeri un processo può avere diversi thread i thread

Dettagli

Libreria Linux Threads. Threads nel S.O. Linux. Primitive per la gestione dei thread. Portabilità: libreria pthreads (Posix).

Libreria Linux Threads. Threads nel S.O. Linux. Primitive per la gestione dei thread. Portabilità: libreria pthreads (Posix). Threads nel S.O. Linux Il thread è un processo leggero che può condividere uno spazio di indirizzi (o parte di esso) con il padre e gli altri processi della gerarchia cui appartiene. Realizzato a livello

Dettagli

Thread Standard IEEE POSIX c

Thread Standard IEEE POSIX c Thread Standard IEEE POSIX 1003.1c Prof.ssa Sara Michelangeli Con il termine multithraeding si indica un sistema che consente la attivazione di più flussi di esecuzione all'interno dei processi cosiddetti

Dettagli

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

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2016-17 Pietro Frasca Lezione 20 Giovedì 22-12-2016 Comunicazione: pipe In Unix, processi possono comunicare

Dettagli

Thread thread lightweight process

Thread thread lightweight process Thread Un thread o lightweight process (LWP) è un unità di utilizzo della CPU che consiste di: un program counter, un insieme di registri, uno stack space. Tale unità condivide con gli altri peer thread

Dettagli

Introduzione ai thread

Introduzione ai thread Introduzione ai thread Processi leggeri. Immagine di un processo (codice, variabili locali e globali, stack, descrittore). Risorse possedute: : (file aperti, processi figli, dispositivi di I/O..),. L immagine

Dettagli

I THREAD O PROCESSI LEGGERI

I THREAD O PROCESSI LEGGERI I THREAD O PROCESSI Processi (pesanti): LEGGERI entità autonome con poche risorse condivise (si prestano poco alla scrittura di applicazioni fortemente cooperanti) Ogni processo può essere visto come Immagine

Dettagli

LINUX: struttura generale

LINUX: struttura generale LINUX: struttura generale User Interface The layers of a UNIX system. 1 Processi in LINUX Ogni processo nasce con un solo thread Un processo gira in modalità utente; quando effettua una system call passa

Dettagli

Creazione di thread. In Linux si utilizzano le librerie pthread (POSIX thread) per lavorare con i thread:

Creazione di thread. In Linux si utilizzano le librerie pthread (POSIX thread) per lavorare con i thread: Thread Un thread o lightweight process (LWP) è un unità di utilizzo della CPU che consiste di: un program counter, un insieme di registri, uno stack space. Tale unità condivide con gli altri peer thread

Dettagli

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

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2017-18 Pietro Frasca Lezione 9 Giovedì 2-11-2017 Comunicazione con pipe Oltre che con la memoria condivisa

Dettagli

Obiettivi: Esercitazione n.1! 26 Ottobre Introduzione alla programmazione multithreaded Gestione dei thread mediante libreria pthreads:

Obiettivi: Esercitazione n.1! 26 Ottobre Introduzione alla programmazione multithreaded Gestione dei thread mediante libreria pthreads: Esercitazione n.1! 26 Ottobre 2016 Obiettivi: Introduzione alla programmazione multithreaded Gestione dei thread mediante libreria pthreads: creazione: pthread_create terminazione: pthread_exit join: pthread_join

Dettagli

Sistemi Operativi GESTIONE DEI PROCESSI. D. Talia - UNICAL. Sistemi Operativi 4.1

Sistemi Operativi GESTIONE DEI PROCESSI. D. Talia - UNICAL. Sistemi Operativi 4.1 GESTIONE DEI PROCESSI 4.1 Processi Concetto di Processo Scheduling di Processi Operazioni su Processi Processi Cooperanti Concetto di Thread Modelli Multithread I thread in diversi S.O. 4.2 Concetto di

Dettagli

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

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2014-15 Pietro Frasca Lezione 20 Martedì 16-12-2014 1 System call per la gestione dei processi Creazione

Dettagli

Sistemi operativi. Corso di Laurea Triennale in Ingegneria Informatica. Lezione 7 Mutex Condition Esempi di utilizzo

Sistemi operativi. Corso di Laurea Triennale in Ingegneria Informatica. Lezione 7 Mutex Condition Esempi di utilizzo Sistemi operativi ì Corso di Laurea Triennale in Ingegneria Informatica Lezione 7 Mutex Condition Esempi di utilizzo Domande sulle lezioni passate? Sommario ì Sincronizzazione ì Mutex ì Variabili condition

Dettagli

Cosa sono i semafori?

Cosa sono i semafori? Semafori Cosa sono i semafori? I semafori sono primitive fornite dal sistema operativo per permettere la sincronizzazione tra processi e/o thread. Semafori di mutua esclusione con i thread POSIX 2 Operazioni

Dettagli

Esercitazione [01] Processi e Thread

Esercitazione [01] Processi e Thread Esercitazione [01] Processi e Thread Leonardo Aniello Daniele Cono D Elia Giuseppe Laurenza Federico Lombardi

Dettagli

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

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2018-2019 Pietro Frasca Lezione 9 Martedì 6-11-2018 I thread nello standard POSIX: la libreria pthreads

Dettagli

Esercitazione [2] Processi e Thread

Esercitazione [2] Processi e Thread Esercitazione [2] Processi e Thread Leonardo Aniello Daniele Cono D Elia Federico Lombardi Sistemi di Calcolo - Secondo modulo

Dettagli

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

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2016-17 Pietro Frasca Lezione 21 Martedì 10-01-2017 Sincronizzazione tra thread Per risolvere problemi

Dettagli

System call per la gestione di processi

System call per la gestione di processi System call per la gestione di processi Chiamate di sistema per creazione di processi: fork() sostituzione di codice e dati: exec...() terminazione: exit() sospensione in attesa della terminazione di figli:

Dettagli

System call per la gestione di processi

System call per la gestione di processi System call per la gestione di processi Chiamate di sistema per creazione di processi: fork() sostituzione di codice e dati: exec...() terminazione: exit() sospensione in attesa della terminazione di figli:

Dettagli

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

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2018-2019 Pietro Frasca Lezione 5 Martedì 16-10-2018 Operazioni sui processi Nella maggior parte dei

Dettagli

Seminario: Thread POSIX Insegnamento di Sistemi di Elaborazione Corso di L.S. In Ing. Elettronica

Seminario: Thread POSIX Insegnamento di Sistemi di Elaborazione Corso di L.S. In Ing. Elettronica Seminario: Thread POSIX Insegnamento di Sistemi di Elaborazione Corso di L.S. In Ing. Elettronica Ing. Francesco Restuccia E-mail: f.restuccia@studenti.unipi.it Pervasive Computing & Networking Lab (PerLab)

Dettagli

Sistemi operativi. Corso di Laurea Triennale in Ingegneria Informatica. Lezione 6 Programmazione concorrente Thread Join

Sistemi operativi. Corso di Laurea Triennale in Ingegneria Informatica. Lezione 6 Programmazione concorrente Thread Join Sistemi operativi ì Corso di Laurea Triennale in Ingegneria Informatica Lezione 6 Programmazione concorrente Thread Join Domande sulle lezioni passate? Soluzioni degli esercizi È importante osservare l'utilizzo

Dettagli

Threads: 1. Concetti di base 2. Threads in sistemi operativi attuali (NT/UNIX)

Threads: 1. Concetti di base 2. Threads in sistemi operativi attuali (NT/UNIX) Sistemi Operativi I Corso di Laurea in Ingegneria Informatica Facolta di Ingegneria, Universita La Sapienza Docente: Francesco Quaglia Threads: 1. Concetti di base 2. Threads in sistemi operativi attuali

Dettagli

Thread. La libreria Pthread Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino

Thread. La libreria Pthread Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino Thread La libreria Pthread Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino 2 Librerie di thread Fornisce l interfaccia per effettuare la gestione dei thread da parte del programmatore

Dettagli

LABORATORIO DI SISTEMI OPERATIVI

LABORATORIO DI SISTEMI OPERATIVI LABORATORIO DI SISTEMI OPERATIVI Corso di Laurea Triennale in Ingegneria Informatica A.A. 2018/2019 Guglielmo Cola Email: g.cola@iet.unipi.it Web: iet.unipi.it/g.cola Processi in Unix/Linux caratteristiche

Dettagli

I Processi nel Sistema Operativo Unix. Gerarchie di processi Unix. Stati di un processo Unix. Stati di un processo Unix.

I Processi nel Sistema Operativo Unix. Gerarchie di processi Unix. Stati di un processo Unix. Stati di un processo Unix. I Processi nel Sistema Operativo Unix Processi Unix Unix è un sistema operativo multiprogrammato a divisione di tempo: l unità di computazione è il processo. Caratteristiche del processo Unix: processo

Dettagli

I THREAD. thread 2. thread 1

I THREAD. thread 2. thread 1 I THREAD Un thread è un singolo flusso di istruzioni, all interno di un processo, che lo scheduler può fare eseguire separatamente e concorrentemente con il resto del processo. Per fare questo uno thread

Dettagli

LinuxThreads: I thread nel sistema operativo LINUX: Linuxthreads

LinuxThreads: I thread nel sistema operativo LINUX: Linuxthreads I thread nel sistema operativo LINUX: Linuxthreads LinuxThreads: Caratteristiche Processi leggeri realizzati a livello kernel System call clone: int clone(int (*fn) (void *arg), void *child_stack, int

Dettagli

Programmazione di concorrente - Deadlock

Programmazione di concorrente - Deadlock Programmazione di concorrente - Deadlock Prof. Gerardo Pelosi & Ing. Michele Scandale 30 Ottobre 2014 Il materiale illustrato a lezione e in queste note contiene anche esempi di Fabrizio Castro, Luca Fossati,

Dettagli

Controllo dei Processi 1

Controllo dei Processi 1 Controllo dei Processi 1 I processi Nei sistemi Unix/Linux ogni processo ne può generare altri. Il processo che li genera è detto processo padre (parent process), mentre i processi generati sono detti

Dettagli

Sistemi Operativi 1. Lezione IV: Processi e thread. Mattia Monga. 11 marzo 2008

Sistemi Operativi 1. Lezione IV: Processi e thread. Mattia Monga. 11 marzo 2008 1 Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia mattia.monga@unimi.it 11 marzo 2008 1 c 2008 M. Monga. Creative Commons Attribuzione-Condividi allo stesso modo 2.5 Italia

Dettagli

I thread. Motivazioni e definizione. Modelli di programmazione multithread. Librerie per i thread. Problemi nella programmazione multithread

I thread. Motivazioni e definizione. Modelli di programmazione multithread. Librerie per i thread. Problemi nella programmazione multithread I Thread I thread Motivazioni e definizione Modelli di programmazione multithread Librerie per i thread Problemi nella programmazione multithread Thread di Linux 4.2 Motivazioni 1 La gestione dei processi

Dettagli

Thread POSIX Insegnamento di Sistemi di Elaborazione Corso di L.M. In Ing. Elettronica

Thread POSIX Insegnamento di Sistemi di Elaborazione Corso di L.M. In Ing. Elettronica Thread POSIX Insegnamento di Sistemi di Elaborazione Corso di L.M. In Ing. Elettronica Ing. Simone Brienza E-mail: simone.brienza@for.unipi.it Pervasive Computing & Networking Lab (PerLab) http://www.perlab.it

Dettagli

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

I Thread. I Thread. I due processi dovrebbero lavorare sullo stesso testo I Thread 1 Consideriamo due processi che devono lavorare sugli stessi dati. Come possono fare, se ogni processo ha la propria area dati (ossia, gli spazi di indirizzamento dei due processi sono separati)?

Dettagli

= PTHREAD_MUTEX_INITIALIZER

= PTHREAD_MUTEX_INITIALIZER MUTEX Prof.ssa Sara Michelangeli Quando si programma in modalità concorrente bisogna gestire le problematiche di accesso alle eventuali sezioni critiche. Una sezione critica è una sequenza di istruzioni

Dettagli

Sistemi Operativi (M. Cesati)

Sistemi Operativi (M. Cesati) Sistemi Operativi (M. Cesati) Compito scritto del 19 febbraio 2013 Nome: Matricola: Corso di laurea: Cognome: Crediti da conseguire: 5 6 9 Scrivere i dati richiesti in stampatello. Al termine consegnare

Dettagli

Modelli di programmazione parallela

Modelli di programmazione parallela Modelli di programmazione parallela Oggi sono comunemente utilizzati diversi modelli di programmazione parallela: Shared Memory Multi Thread Message Passing Data Parallel Tali modelli non sono specifici

Dettagli

Thread. Introduzione Creazione, distruzione Sincronizzazione

Thread. Introduzione Creazione, distruzione Sincronizzazione Thread Introduzione Creazione, distruzione Sincronizzazione Parallelismo Il tipo di meccanismo a supporto del parallelismo dipende dal grado di cooperazione tra le varie entità che costituiscono un'applicazione

Dettagli

Concetto di Processo Scheduling dei Processi Operazioni sui Processi Processi cooperanti Comunicazione tra processi

Concetto di Processo Scheduling dei Processi Operazioni sui Processi Processi cooperanti Comunicazione tra processi Concetto di Processo Scheduling dei Processi Operazioni sui Processi Processi cooperanti Comunicazione tra processi 3.3 Silberschatz, Galvin and Gagne 2005 1 Un SO esegue diversi tipi di programmi Sistema

Dettagli

I Processi. Il Concetto di Processo

I Processi. Il Concetto di Processo I Processi Il Concetto di Processo Il processo è un programma in esecuzione È l unità di esecuzione all interno del S.O. Solitamente, l esecuzione di un processo è sequenziale (le istruzioni vengono eseguite

Dettagli

Principles of Concurrent Programming

Principles of Concurrent Programming Principles of Concurrent Programming Alessio Vecchio alessio.vecchio@unipi.it Dip. di Ingegneria dell Informazione Università di Pisa Tratte da Principi e tecniche di progammazione concorrente, cap. 2

Dettagli

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

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2016-17 Pietro Frasca Lezione 6 Giovedì 27-10-2016 Appunti di Sistemi Operativi, 2015-2016 - Pietro

Dettagli

System Calls per la Gestione dei Processi

System Calls per la Gestione dei Processi System Calls per la Gestione dei Processi Domenico Cotroneo Dipartimento di Informatica e Sistemistica Università degli Studi di Napoli Federico II Roadmap Process Context Identificativi getpid() getppid()

Dettagli

Sistemi Operativi 1. Mattia Monga. 11 marzo Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia

Sistemi Operativi 1. Mattia Monga. 11 marzo Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia 1 Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia mattia.monga@unimi.it e 11 marzo 2008 1 c 2008 M. Monga. Creative Commons Attribuzione-Condividi allo stesso modo 2.5 Italia

Dettagli

Principles of Concurrent Programming

Principles of Concurrent Programming Principles of Giuseppe Anastasi g.anastasi@iet.unipi.it Pervasive Computing & Networking Lab. () Dept. of Information Engineering, University of Pisa Overview Concetti preliminari Interazione fra processi

Dettagli

I thread nel sistema operativo LINUX: Linuxthreads

I thread nel sistema operativo LINUX: Linuxthreads I thread nel sistema operativo LINUX: Linuxthreads LinuxThreads: Caratteristiche Processi leggeri realizzati a livello kernel System call clone: int clone(int (*fn) (void *arg), void *child_stack, int

Dettagli

Sistemi Operativi Esercizi File System. Docente: Claudio E. Palazzi

Sistemi Operativi Esercizi File System. Docente: Claudio E. Palazzi Sistemi Operativi Esercizi File System Docente: Claudio E. Palazzi cpalazzi@math.unipd.it Appello AE-2 del 14/9/2005 Esercizi di ricapitolazione Sistemi Operativi - C. Palazzi 93 Soluzione Esercizi di

Dettagli

SISTEMI OPERATIVI. Processi in Linux. Giorgio Giacinto Sistemi Operativi

SISTEMI OPERATIVI. Processi in Linux. Giorgio Giacinto Sistemi Operativi SISTEMI OPERATIVI Processi in Linux 2 Creazione di processi concorrenti» La creazione di un processo figlio consente di far eseguire alcune funzionalità del programma in modo concorrente» Opzione 1 il

Dettagli

I thread. Non bastavano i processi?

I thread. Non bastavano i processi? I thread Non bastavano i processi? 1 Il modello a thread : motivazioni Nel modello a processi, ogni processo ha il suo spazio di indirizzamento, vediamo cosa significa... 2 Spazi di indirizzamento distinti

Dettagli

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

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2017-18 Pietro Frasca Lezione 6 Martedì 24-10-2017 1 Sostituzione del codice Tipicamente, dopo una

Dettagli

Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria Elettronica. SISTEMI OPERATIVI A.A. 2004/2005 Docente: Giorgio Giacinto

Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria Elettronica. SISTEMI OPERATIVI A.A. 2004/2005 Docente: Giorgio Giacinto Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria Elettronica SISTEMI OPERATIVI A.A. 2004/2005 Docente: Giorgio Giacinto fork() & exec() Roberto Perdisci A.A. 2004/2005 1 Dettagli

Dettagli

Sistemi Operativi. Lezione 3 Processi e Thread

Sistemi Operativi. Lezione 3 Processi e Thread Lezione 3 Processi e Thread Introduzione Sino ai sistemi batch la CPU di un sistema svolgeva un attività, la portava a termine e solo allora avviava un altra attività Con l avvento della multiprogrammazione

Dettagli

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

Processi e thread. Dipartimento di Informatica Università di Verona, Italy. Sommario Processi e thread Dipartimento di Informatica Università di Verona, Italy Sommario Concetto di processo Stati di un processo Operazioni e relazioni tra processi Concetto di thread Gestione dei processi

Dettagli

SISTEMI OPERATIVI THREAD. Giorgio Giacinto Sistemi Operativi

SISTEMI OPERATIVI THREAD. Giorgio Giacinto Sistemi Operativi SISTEMI OPERATIVI THREAD 2 Motivazioni» Un programma complesso può eseguire in modo concorrente più funzioni attraverso la creazione e gestione di processi figli attraverso il meccanismo dei thread» La

Dettagli

Esercitazione [1] Processi e Thread

Esercitazione [1] Processi e Thread Esercitazione [1] Processi e Thread Leonardo Aniello - aniello@dis.uniroma1.it Sistemi di Calcolo - Secondo modulo (SC2) Programmazione dei Sistemi di Calcolo Multi-Nodo Corso di Laurea in Ingegneria Informatica

Dettagli

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

Computazione multi-processo. Condivisione, Comunicazione e Sincronizzazione dei Processi. Segnali. Processi e Threads Pt. 2 Computazione multi-processo Avere più processi allo stesso momento implica/richiede Processi e Threads Pt. 2 Concorrenza ed efficienza Indipendenza e protezione dei dati ma deve prevedere/permettere anche:

Dettagli

Richiami sui Concetti Fondamentali dei Processi

Richiami sui Concetti Fondamentali dei Processi Processi Processi 1 Richiami sui Concetti Fondamentali dei Processi Processi 2 Definizione Nell ambito dei sistemi operativi esistono diverse definizioni di processo, ad es. un programma in esecuzione

Dettagli

Sistemi Operativi 1. Lezione III: Concetti fondamentali. Mattia Monga. 7 marzo 2008

Sistemi Operativi 1. Lezione III: Concetti fondamentali. Mattia Monga. 7 marzo 2008 1 Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia mattia.monga@unimi.it 7 marzo 2008 1 c 2008 M. Monga. Creative Commons Attribuzione-Condividi allo stesso modo 2.5 Italia

Dettagli

Sistemi Operativi 1. Mattia Monga. 7 marzo Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia

Sistemi Operativi 1. Mattia Monga. 7 marzo Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia 1 Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia mattia.monga@unimi.it 7 marzo 2008 1 c 2008 M. Monga. Creative Commons Attribuzione-Condividi allo stesso modo 2.5 Italia

Dettagli

" &$ () " ) ) $ ' () *) " ) $

 &$ ()  ) ) $ ' () *)  ) $ %&! "# $ #include int main(int argc, char *argv[]) { int i; for (i = 0; i < argc; i++) printf("argv[%d]: %s\n", i, argv[i] ); 1 2 " &$ cc cc program.c a.out pippo pluto topolino argv[0]: a.out

Dettagli

Seconda Esercitazione. Gestione di processi in Unix Primitive Fork, Wait, Exec

Seconda Esercitazione. Gestione di processi in Unix Primitive Fork, Wait, Exec Seconda Esercitazione Gestione di processi in Unix Primitive Fork, Wait, Exec System call fondamentali fork exit wait exec Generazione di un processo figlio, che condivide il codice con il padre e possiede

Dettagli

Esercitazione n.1! 23 Ottobre Obiettivi: Introduzione alla programmazione pthreads:

Esercitazione n.1! 23 Ottobre Obiettivi: Introduzione alla programmazione pthreads: Esercitazione n.1! 23 Ottobre 2017 Obiettivi: Introduzione alla programmazione pthreads: Gestione thread posix: creazione: pthread_create terminazione: pthread_exit join: pthread_join Sincronizzazione

Dettagli

Pag. 1. modello di esecuzione parallela

Pag. 1. modello di esecuzione parallela Il Sistema Operativo è un insieme di programmi (moduli software) che svolgono funzioni di servizio nel calcolatore. Costituisce la parte essenziale del cosiddetto software di sistema (o di base) in quanto

Dettagli

Thread Posix. Agenda. Introduzione Libreria thread. Esempi ed esercizi

Thread Posix. Agenda. Introduzione Libreria thread. Esempi ed esercizi Thread Posix Agenda Introduzione Libreria thread Creazione e terminazione di thread Sincronizzazione tra thread Variabili condition cenni Esempi ed esercizi 2 Fonti POSIX Thread Programming http://www.llnl.gov/computing/tutorials/worksh

Dettagli

Introduzione ai POSIX Threads (libreria Pthread) E.Mumolo, DIA.

Introduzione ai POSIX Threads (libreria Pthread) E.Mumolo, DIA. Introduzione ai POSIX Threads (libreria Pthread) E.Mumolo, DIA mumolo@units.it Modello implementativo dei Thread Architettura Gestiti da librerie utente Processo1 Processo2 Processo3 Processo4 Processo5

Dettagli

LABORATORIO DI SISTEMI OPERATIVI

LABORATORIO DI SISTEMI OPERATIVI LABORATORIO DI SISTEMI OPERATIVI Corso di Laurea Triennale in Ingegneria Informatica A.A. 2018/2019 Guglielmo Cola Email: g.cola@iet.unipi.it Web: iet.unipi.it/g.cola Thread POSIX nel sistema Linux (parte

Dettagli

Introduzione ai thread

Introduzione ai thread Introduzione ai thread 1 Processi Immagine di un processo (codice, variabili locali e globali, stack, descrittore) Risorse possedute: (file aperti, processi figli, dispositivi di I/O..), L immagine di

Dettagli

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

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2018-2019 Pietro Frasca Lezione 8 Giovedì 25-10-2018 Comunicazione con pipe Oltre che con la memoria

Dettagli

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

Lezione 4. Processi e thread. Sistemi operativi. Marco Cesati System Programming Research Group Università degli Studi di Roma Tor Vergata Lezione 4 Sistemi operativi 4 aprile 2017 System Programming Research Group Università degli Studi di Roma Tor Vergata SO 17 4.1 Di cosa parliamo in questa lezione? Relazione tra processi e thread, e relative

Dettagli

Sommario. Processi e Programmi. Che cosa e un Processo? Lezione 5 Processi e Threads

Sommario. Processi e Programmi. Che cosa e un Processo? Lezione 5 Processi e Threads Sommario Lezione 5 Processi e Threads Processi e Programmi Implementazione dei Processi Casi di Studio relativi a Processi Thread Casi di Studio relativi a Thread 5.2 Processi e Programmi Che cosa e un

Dettagli

Componenti di un sistema operativo

Componenti di un sistema operativo Componenti di un sistema operativo Dipartimento di Informatica Università di Verona, Italy Componenti di un S.O. Gestione dei processi Gestione della memoria primaria Gestione della memoria secondaria

Dettagli

La torta caprese. I Thread. L analogia. L analogia. Parallelismo e concorrenza. Processi con sequenze di esecuzione singole e multiple.

La torta caprese. I Thread. L analogia. L analogia. Parallelismo e concorrenza. Processi con sequenze di esecuzione singole e multiple. Introduzione I Thread Parallelismo e concorrenza Thread a livello utente e nucleo I modelli multithread Aspetti sui thread Pthreads Solaris 2 Threads Windows 2000 Threads Linux Threads Java Threads Ingredienti

Dettagli

Unix/Linux Threads. la memoria globale (l accesso richiede sincronizzazione); i signal handlers e le disposizioni per i segnali;

Unix/Linux Threads. la memoria globale (l accesso richiede sincronizzazione); i signal handlers e le disposizioni per i segnali; Pthreads Massimo Bernaschi Istituto per le Applicazioni del Calcolo Mauro Picone Consiglio Nazionale delle Ricerche Via dei Taurini, 19-00185 Rome - Italy http://www.iac.cnr.it/ e-mail: massimo.bernaschi@cnr.it

Dettagli

Esercitazione 2! Mutex e semafori POSIX. 3 Novembre 2016

Esercitazione 2! Mutex e semafori POSIX. 3 Novembre 2016 Esercitazione 2! Mutex e semafori POSIX 3 Novembre 2016 Strumenti di sincronizzazione nella libreria LinuxThread I semafori nelle librerie pthread e LinuxThreads La libreria pthread definisce soltanto

Dettagli

I Processi nel SO UNIX

I Processi nel SO UNIX I Processi nel SO UNIX 1 Processi UNIX UNIX è un sistema operativo multiprogrammato a divisione di tempo: unità di computazione è il processo Caratteristiche del processo UNIX: processo pesante con codice

Dettagli

Pag. 1. Il Nucleo del sistema operativo (la gestione dei processi)

Pag. 1. Il Nucleo del sistema operativo (la gestione dei processi) shell Programmi utente Modo utente Il Nucleo del sistema operativo (la gestione dei processi) Interfaccia delle chiamate di sistema File system Gestione processi Device driver Gestione memoria HARDWARE

Dettagli

Threads. Processi Single e Multi-thread

Threads. Processi Single e Multi-thread Threads Processi Single e Multi-thread 1 Benefici Diminuisce i tempi di risposta di una applicazione: durante attesa altre attività della applicazione possono essere fatte Condivisione delle risorse: tutti

Dettagli

Esercitazione 2 Sincronizzazione con semafori. 31 Ottobre 2013

Esercitazione 2 Sincronizzazione con semafori. 31 Ottobre 2013 Esercitazione 2 Sincronizzazione con semafori 31 Ottobre 2013 Strumenti di sincronizzazione nella libreria LinuxThread e nel linguaggio Java I semafori nelle librerie pthread e LinuxThreads La libreria

Dettagli

Informatica Generale 07 - Sistemi Operativi:Gestione dei processi

Informatica Generale 07 - Sistemi Operativi:Gestione dei processi Informatica Generale 07 - Sistemi Operativi:Gestione dei processi Cosa vedremo: Esecuzione di un programma Concetto di processo Interruzioni Sistemi monotasking e multitasking Time-sharing Tabella dei

Dettagli

Gestione del processore. Il modello a thread

Gestione del processore. Il modello a thread Gestione del processore Il modello a thread 1 Il modello a thread : motivazioni Nel modello a processi, ogni processo ha il suo spazio di indirizzamento privato ed il modo per interagire è quello di utilizzare

Dettagli

Thread: sincronizzazione Esercitazioni del 16 Ottobre 2009

Thread: sincronizzazione Esercitazioni del 16 Ottobre 2009 Thread: sincronizzazione Esercitazioni del 16 Ottobre 2009 Luca Fossati, Fabrizio Castro, Vittorio Zaccaria 19 ottobre 2009 Sequenze di esecuzione - 2 Sequenze di esecuzione - 2 Esercizio 1 Sequenze di

Dettagli