I thread. Operating System Concepts 9 th Edition

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "I thread. Operating System Concepts 9 th Edition"

Transcript

1 I thread

2 I thread Motivazioni e definizione Programmazione multicore Modelli di programmazione multithread Librerie per i thread Threading implicito Problemi nella programmazione multithread Thread di Linux 4.2 Silberschatz, Galvin and Gagne 2013

3 Motivazioni 1 La maggior parte della applicazioni attuali sono multithread I thread vengono eseguiti all interno delle applicazioni La gestione dei processi può diventare molto onerosa, sia dal punto di vista computazionale che per l utilizzo di risorse Creazione: allocazione dello spazio degli indirizzi e successiva popolazione Context switch: salvataggio e ripristino degli spazi di indirizzamento (codice, dati, stack) di due processi 4.3 Silberschatz, Galvin and Gagne 2013

4 Motivazioni 2 Con un applicazione che genera molti processi (es.: server), il SO rischia di passare la maggior parte del tempo a svolgere operazioni interne di gestione, piuttosto che ad eseguire codice applicativo Inoltre, a volte, l attività richiesta ha vita relativamente breve rispetto a questi tempi Esempio: invio di una pagina html da parte di un server Web leggera, per motivare un nuovo processo Infine, esistono applicazioni che, presentando un intrinseco grado di parallelismo, possono essere decomposte in attività che procedono concorrentemente, condividendo un insieme di dati e risorse comuni 4.4 Silberschatz, Galvin and Gagne 2013

5 Motivazioni 3 Esempio: Applicazioni in tempo reale per il controllo di impianti fisici, in cui si individuano attività quali Controllo dei singoli dispositivi di I/O dedicati a raccogliere i dati del processo fisico Invio di comandi verso l impianto Le diverse attività devono frequentemente accedere a strutture dati comuni, che rappresentano lo stato complessivo del sistema da controllare Infine La programmazione multithread può produrre codice più semplice e più efficiente I kernel attuali sono normalmente multithread Il multithreading si adatta perfettamente alla programmazione nei sistemi multicore 4.5 Silberschatz, Galvin and Gagne 2013

6 Definizione 1 Un thread (trama, filo) è l unità base d uso della CPU e comprende un identificatore di thread (TID), un contatore di programma, un insieme di registri ed uno stack Condivide con gli altri thread che appartengono allo stesso processo la sezione del codice, la sezione dei dati e le altre risorse allocate al processo originale (file aperti e segnali) Un processo tradizionale heavyweight process è composto da un solo thread Un processo è pesante, in riferimento al contesto (spazio di indirizzamento, stato) che lo definisce 4.6 Silberschatz, Galvin and Gagne 2013

7 Definizione 2 I thread sono detti anche processi leggeri, perché hanno un contesto più semplice Poiché i thread appartenenti ad uno stesso processo ne condividono codice, dati e risorse Se un thread altera una variabile non locale al thread, la modifica è visibile a tutti gli altri thread Se un thread apre un file, allora anche gli altri thread possono operare sul file Un processo multithread è in grado di eseguire più compiti in modo concorrente 4.7 Silberschatz, Galvin and Gagne 2013

8 Processi a singolo thread e multithread 4.8 Silberschatz, Galvin and Gagne 2013

9 Esempi 1 Browser web Un thread per la rappresentazione sullo schermo di immagini e testo Un thread per il reperimento dell informazione in rete Text editor Possibile avere un thread per ciascun documento aperto (i thread sono tutti uguali ma lavorano su dati diversi) Relativamente ad ognuno è anche possibile avere Un thread per la rappresentazione dei dati su schermo Un thread per la lettura dei dati immessi da tastiera Un thread per la correzione ortografica e grammaticale Un thread per il salvataggio periodico su disco 4.9 Silberschatz, Galvin and Gagne 2013

10 Esempi 2 Server per RPC e RMI Ogni invocazione di procedura remota viene delegata ad un thread separato (diverse richieste gestibili in concorrenza) Server web Un thread per il servizio di ciascuna richiesta da parte dei client 4.10 Silberschatz, Galvin and Gagne 2013

11 Kernel multithread Molti kernel dei SO attuali sono multithread Thread dedicati a servizi specifici (es. gestione dei dispositivi di I/O, della memoria e delle interruzioni) Solaris Thread specializzati nella gestione delle interruzioni Linux Impiega un thread a livello kernel per la gestione della memoria libera del sistema 4.11 Silberschatz, Galvin and Gagne 2013

12 Vantaggi 1 Tempo di risposta Rendere multithread un applicazione interattiva permette ad un programma di continuare la propria esecuzione, anche se una parte di esso è bloccata o sta eseguendo un operazione particolarmente lunga, riducendo il tempo medio di risposta Utile per le interfacce utente Condivisione delle risorse I thread condividono la memoria e le risorse del processo cui appartengono; il vantaggio della condivisione del codice risiede nel fatto che un applicazione può consistere di molti thread relativi ad attività diverse, tutti nello stesso spazio di indirizzi (comunicazioni molto più rapide che con memoria condivisa e message passing) 4.12 Silberschatz, Galvin and Gagne 2013

13 Vantaggi 2 Economia Assegnare memoria e risorse per la creazione di nuovi processi è oneroso; poiché i thread condividono le risorse del processo cui appartengono, è molto più conveniente creare thread e gestirne i cambiamenti di contesto (il TCB dei thread non contiene informazioni relative a codice e dati, quindi alla gestione della memoria) Esempio: in Solaris la creazione di un processo richiede un tempo trenta volte maggiore della creazione di un thread; il cambio di contesto è cinque volte più lungo per i processi rispetto ai thread 4.13 Silberschatz, Galvin and Gagne 2013

14 Vantaggi 3 Scalabilità I vantaggi della programmazione multithread aumentano notevolmente nelle architetture multiprocessore, dove i thread possono essere eseguiti in parallelo; l impiego della programmazione multithread in un sistema con più unità di elaborazione fa aumentare il grado di parallelismo 4.14 Silberschatz, Galvin and Gagne 2013

15 Programmazione multicore 1 Architetture multicore: diverse unità di calcolo sullo stesso chip Ogni unità appare al SO come un processore separato Sui sistemi multicore i thread possono essere eseguiti in parallelo, poiché il sistema può assegnare thread diversi a ciascuna unità di calcolo Distinzione fra parallelismo e concorrenza Un sistema è parallelo se può eseguire simultaneamente più task Un sistema concorrente, invece, supporta più task consentendo a tutti di progredire nell esecuzione (multiplexing della CPU) 4.15 Silberschatz, Galvin and Gagne 2013

16 Concorrenza vs Parallelismo Esecuzione concorrente su un sistema single core Parallelismo nei sistemi multicore 4.16 Silberschatz, Galvin and Gagne 2013

17 Programmazione multicore 2 Tipi di parallelismo Con il termine data parallelism ci si riferisce a scenari in cui la stessa operazione viene eseguita contemporaneamente (ovvero in parallelo) sull insieme dei dati; nelle operazioni in parallelo sui dati l insieme originale viene suddiviso in partizioni in modo che più thread possano agire simultaneamente su segmenti diversi Con il termine task parallelism si indica una forma di parallelizzazione del codice tra più processori in ambienti di calcolo parallelo; il task parallelism si concentra cioè sulla distribuzione di thread diversi in esecuzione nei diversi nodi di calcolo Nella maggior parte dei casi, le applicazioni utilizzano un ibrido delle due strategie 4.17 Silberschatz, Galvin and Gagne 2013

18 Programmazione multicore 3 Obiettivi della programmazione nei sistemi multicore Separazione dei task: esaminare le applicazioni per individuare aree separabili in task distinti che possano essere eseguiti in parallelo Bilanciamento: produrre task che eseguano compiti di mole confrontabile (per carico computazionale) Suddivisione dei dati: i dati a cui i task accedono, e che manipolano, devono essere suddivisi per essere utilizzati da unità di calcolo distinte Dipendenze dei dati: verificare le dipendenze tra due o più task per sincronizzarne l esecuzione Test e debugging: garantire la correttezza malgrado la possibilità di flussi di esecuzione multipli e di eventuali problemi di concorrenza nell accesso ai dati 4.18 Silberschatz, Galvin and Gagne 2013

19 Programmazione multicore 4 In corrispondenza con la proliferazione di programmi multithread, le nuove architetture hardware forniscono sempre maggior supporto al multithreading Le CPU di nuova generazione sono multicore e dispongono di thread hardware Esempio: La Oracle SPARC T4 ha otto core, ciascuno dotato di otto thread hardware 64 unità di calcolo distinte che il SO deve gestire C Ciclo di computazione C M C M C M Stallo della memoria M Ciclo di stallo della memoria C M Thread 0 Thread 1 C C M C M C M C M M C M C M C M Sistema multicore e multithread 4.19 Silberschatz, Galvin and Gagne 2013

20 La legge di Amdahl Permette di determinare i potenziali guadagni in termini di prestazioni ottenuti dall aggiunta di ulteriori core, nel caso di applicazioni che contengano sia componenti seriali (non parallelizzabili) sia componenti parallele S porzione seriale N core Esempio: Se un applicazione è al 75% parallela ed al 25% seriale, passando da 1 a 2 core, si ottiene uno speedup pari a 1.6; se i core sono 4, lo speedup è invece di 2.28 In generale per N lo speedup tende a 1/S Se il 40% di un applicazione è seriale il massimo aumento di velocità è di 2.5 volte La porzione seriale di un applicazione ha un effetto dominante sulle prestazioni ottenibili con l aggiunta di nuovi core Ma è proprio vero anche negli attuali multicore? 4.20 Silberschatz, Galvin and Gagne 2013

21 Supporto del SO ai thread 1 Supporto user level, tramite librerie di funzioni (API) per gestire n thread in esecuzione Supporto kernel level, tramite un astrazione di traccia di esecuzione (su un processore virtuale) Thread a livello utente Sono gestiti come uno strato separato sopra il nucleo del sistema operativo Sono realizzati tramite librerie di funzioni per la creazione, lo scheduling e la gestione dei thread, senza alcun intervento diretto del nucleo POSIX Pthreads è la libreria per la realizzazione di thread utente in sistemi UNIX like Windows threads per sistemi Windows e Java threads per la JVM 4.21 Silberschatz, Galvin and Gagne 2013

22 Supporto del SO ai thread 2 Thread a livello kernel Sono gestiti direttamente dal SO: il nucleo si occupa di creazione, scheduling, sincronizzazione e cancellazione dei thread nel suo spazio di indirizzi Supportati da tutti i sistemi operativi attuali Windows Solaris Linux Tru64 UNIX Mac OS X 4.22 Silberschatz, Galvin and Gagne 2013

23 Modelli di programmazione multithread Modello molti a uno (M:1) Modello uno a uno (1:1) Modello molti a molti (M:M) 4.23 Silberschatz, Galvin and Gagne 2013

24 Modello molti a uno 1 Molti thread a livello utente vanno a corrispondere ad un unico thread a livello kernel Il kernel vede una sola traccia di esecuzione In altre parole: i thread sono implementati a livello di applicazione, il loro scheduler non fa parte del SO, che continua ad avere solo la visibilità del processo 4.24 Silberschatz, Galvin and Gagne 2013

25 Modello molti a uno 2 Vantaggi Gestione efficiente dei thread nello spazio utente (scheduling poco oneroso) Non richiede un kernel multithread per poter essere implementato Svantaggi L intero processo rimane bloccato se un thread invoca una chiamata di sistema di tipo bloccante I thread sono legati allo stesso processo a livello kernel e non possono essere eseguiti su processori fisici distinti Attualmente, pochi SO implementano questo modello Solaris Green Threads GNU Portable Threads 4.25 Silberschatz, Galvin and Gagne 2013

26 Modello uno a uno 1 Ciascun thread a livello utente corrisponde ad un thread a livello kernel Il kernel vede una traccia di esecuzione distinta per ogni thread I thread vengono gestiti dallo scheduler del kernel (come se fossero processi; si dicono thread nativi) 4.26 Silberschatz, Galvin and Gagne 2013

27 Modello uno a uno 2 Vantaggi Scheduling molto efficiente Se un thread effettua una chiamata bloccante, gli altri thread possono proseguire nella loro esecuzione I thread possono essere eseguiti su processori fisici distinti Svantaggi Possibile inefficienza per il carico di lavoro dovuto alla creazione di molti thread a livello kernel Richiede un kernel multithread per poter essere implementato Esempi Windows 95/98/NT/2000/XP e versioni attuali Linux, Solaris (versione 9 e successive) 4.27 Silberschatz, Galvin and Gagne 2013

28 Modello molti a molti 1 Si mettono in corrispondenza più thread a livello utente con un numero minore o uguale di thread a livello kernel In altre parole, il sistema dispone di un pool di thread worker ognuno dei quali viene assegnato di volta in volta ad un thread utente 4.28 Silberschatz, Galvin and Gagne 2013

29 Modello molti a molti 2 Vantaggi Possibilità di creare tanti thread a livello utente quanti sono necessari per la particolare applicazione (e sulla particolare architettura) ed i corrispondenti thread a livello kernel possono essere eseguiti in parallelo sulle architetture multiprocessore Se un thread invoca una chiamata di sistema bloccante, il kernel può fare eseguire un altro thread Svantaggi Difficoltà nel definire la dimensione del pool di worker e le modalità di cooperazione tra i due scheduler Esempi: Windows con il ThreadFiber package Solaris (versioni precedenti alla 9) Tru64 UNIX 4.29 Silberschatz, Galvin and Gagne 2013

30 Modello a due livelli Simile al modello M:M, offre però la possibilità di vincolare un thread utente ad un thread del kernel Esempi: IRIX HP UX Solaris (versioni precedenti alla 9) Tru64 UNIX 4.30 Silberschatz, Galvin and Gagne 2013

31 Librerie dei thread 1 Forniscono al programmatore una API per la creazione e la gestione dei thread Librerie a livello utente Codice e strutture dati nello spazio utente Invocare una funzione di libreria si traduce in una chiamata locale a funzione, non in una system call Librerie a livello kernel Codice e strutture dati nello spazio del kernel Invocare una funzione della API provoca, generalmente, una chiamata di sistema 4.31 Silberschatz, Galvin and Gagne 2013

32 Librerie dei thread 2 POSIX Pthreads Può presentarsi sia come libreria a livello utente sia a livello kernel Win64 Libreria di thread a livello kernel per sistemi Windows Java API gestibile direttamente dai programmi Java La API di Java per i thread è solitamente implementata per mezzo della libreria dei thread del sistema che ospita la JVM 4.32 Silberschatz, Galvin and Gagne 2013

33 Strategie di threading Threading asincrono Il genitore crea un figlio e quindi riprende la propria esecuzione in concorrenza Ogni thread viene eseguito in modo indipendente rispetto agli altri ed il thread genitore non ha bisogno di sapere quando terminano i figli Scarsa condivisione dei dati fra i thread Esempio: server web Threading sincrono Il genitore crea uno o più figli e attende che tutti terminino prima di riprendere l esecuzione fork join I thread figli si eseguono in concorrenza Quando un thread ha terminato il proprio compito, termina e si unisce al genitore Significativa condivisione dei dati fra i thread Il genitore può combinare i risultati calcolati dai figli 4.33 Silberschatz, Galvin and Gagne 2013

34 Pthreads È lo standard POSIX (IEEE c) che definisce la API per la creazione e la sincronizzazione dei thread (definizione no realizzazione) Viceversa, è la API che specifica il comportamento della libreria dei thread, la cui implementazione dipende dal particolare sistema operativo (può essere a livello utente o a livello kernel) Comune nei SO UNIX like (Solaris, Linux, Mac OS X) 4.34 Silberschatz, Galvin and Gagne 2013

35 Esempio con Pthreads 1 /* Programma per il calcolo della somma dei primi N interi */ #include <pthread.h> /* include per la libreria Pthreads */ #include <stdio.h> #include <stdlib.h> int sum; /* variabile globale (condivisa) */ void *somma(char *param); /* funzione del nuovo thread */ int main(int argc, char *argv[]) { pthread_t tid; /* identificatore del thread */ pthread_attr_t attr; /* attributi del thread */ } if (argc!= 2) { fprintf(stderr, Occorreva inserire N! ); exit(1); } if (atoi(argv[1]) < 0) { Dimensione della pila, informazioni per lo scheduling, etc. fprintf(stderr, %d deve essere >=0\n, atoi(argv[1])); exit(1); } pthread_attr_init(&attr); /* reperisce attributi predefiniti */ pthread_create(&tid,&attr,somma,argv[1]); /* crea il thread */ /* il padre attende la terminazione del nuovo thread */ pthread_join(tid, NULL); printf( somma = %d\n, sum); exit(0); 4.35 Silberschatz, Galvin and Gagne 2013

36 Esempio con Pthreads 2 /* Il nuovo thread assume il controllo da questa funzione */ void *somma(char *param); { int i, upper=atoi(param); sum = 0; for (i=1, i<=upper; i++) sum += i; } pthread_exit(0); 4.36 Silberschatz, Galvin and Gagne 2013

37 threads Code for Joining 10 Threads Join in Pthreads 4.37 Silberschatz, Galvin and Gagne 2013

38 Threading implicito Le applicazioni multithread sono più difficili da programmare ed aumentano in complessità al crescere del numero di thread Trasferimento della creazione e della gestione del threading dagli sviluppatori di applicazioni ai compilatori ed alle librerie di runtime Threading implicito Esempi Gruppi di thread (Thread pool) OpenMP Grand Central Dispatch (Mac OS X e ios), Microsoft Threading Building Blocks, java.util.concurrent package 4.38 Silberschatz, Galvin and Gagne 2013

39 Gruppi di thread Un numero illimitato di thread presenti nel sistema potrebbe esaurirne le risorse Creare un certo numero di thread (worker) alla creazione del processo ed organizzarli in un gruppo in cui attendano il lavoro che verrà loro successivamente richiesto Vantaggi Di solito il servizio di una richiesta tramite un thread esistente è più rapido, poiché elimina l attesa della creazione di un nuovo thread Limita il numero di thread relativi a ciascun processo alla dimensione prestabilita (rilevante per sistemi che non possono sostenere un numero elevato di thread concorrenti) Separare il task da eseguire dal meccanismo di creazione dello stesso permette strategie diverse di elaborazione Esempio: i task possono essere schedulati per essere eseguiti periodicamente o dopo un dato intervallo di tempo La API per i thread di Windows supporta i thread pool 4.39 Silberschatz, Galvin and Gagne 2013

40 OpenMP 1 OpenMP è un insieme di direttive del compilatore ed una API per programmi scritti in C, C e FORTRAN Fornisce supporto per la programmazione parallela in ambienti a memoria condivisa Identifica le regioni parallele, cioè i blocchi di codice eseguibili in parallelo Esempio #pragma omp parallel crea tanti thread quanti sono i core #pragma omp parallel for for(i=0;i<n;i++) { c[i]=a[i]+b[i]; } divide il compito di esecuzione del ciclo for fra i thread appena creati 4.40 Silberschatz, Galvin and Gagne 2013

41 OpenMP 2 Esempio: si producono tante stampe quanti sono i core OpenMP permette di impostare manualmente il numero di thread ed il livello di condivisione dei dati fra i thread 4.41 Silberschatz, Galvin and Gagne 2013

42 Threading Semantica delle chiamate di sistema fork() exec() Gestione dei segnali (sincrona vs asincrona) Cancellazione dei thread (asincrona vs differita) Dati specifici dei thread Attivazione dello scheduler ed 4.42 Silberschatz, Galvin and Gagne 2013

43 Semantica di fork() ed exec() In un programma multithread la semantica delle system call fork() ed exec() cambia: Se un thread in un programma invoca la fork(), il nuovo processo potrebbe, in generale, contenere un duplicato di tutti i thread oppure del solo thread invocante La scelta fra le due opzioni dipende dalla immediatezza o meno della successiva chiamata ad exec() la cui modalità di funzionamento non cambia Se la chiamata di exec() avviene immediatamente dopo la chiamata alla fork(), la duplicazione dei thread non è necessaria, poiché il programma specificato nei parametri della exec() sostituirà in toto il processo si duplica il solo thread chiamante Altrimenti, tutti i thread devono essere duplicati Alcune release di UNIX rendono disponibili entrambe le implementazioni della fork() 4.43 Silberschatz, Galvin and Gagne 2013

44 Gestione dei segnali 1 Nei sistemi UNIX si usano segnali per comunicare ai processi il verificarsi di determinati eventi I segnali vengono elaborati da un gestore dei segnali All occorrenza di un particolare evento, si genera un segnale S invia il segnale ad un processo Una volta ricevuto, il segnale deve essere gestito da un gestore, che può essere: predefinito definito dall utente I segnali possono essere sincroni, se vengono inviati allo stesso processo che ha eseguito l operazione causa del segnale asincroni, se causati da eventi esterni al processo in esecuzione 4.44 Silberschatz, Galvin and Gagne 2013

45 Gestione dei segnali 2 Per ogni segnale esiste un gestore predefinito del segnale, che il kernel esegue in corrispondenza del particolare evento Il gestore definito dall utente, se presente, si sostituisce al gestore standard Nei processi a singolo thread, i segnali vengono inviati al processo Cosa accade nel caso di processi multithread? 4.45 Silberschatz, Galvin and Gagne 2013

46 Gestione dei segnali 3 Nei sistemi multithread è possibile inviare il segnale al thread cui il segnale si riferisce inviare il segnale ad ogni thread del processo inviare il segnale a specifici thread del processo definire un thread specifico per ricevere tutti i segnali diretti al processo I segnali sincroni devono essere recapitati al thread che ha generato l evento causa del segnale Alcuni segnali asincroni (per esempio il segnale di terminazione di un processo, ^C) devono essere inviati a tutti i thread Possibilità di specificare, per ciascun thread, quali segnali accettare e quali bloccare (signal()) 4.46 Silberschatz, Galvin and Gagne 2013

47 Cancellazione di thread È l operazione che permette di terminare un thread prima che completi il suo compito Esempio: pressione del pulsante di terminazione di un programma di consultazione del Web per interrompere il caricamento di una pagina Il thread da cancellare viene definito thread bersaglio La cancellazione di un thread bersaglio può avvenire in modalità asincrona: un thread fa terminare immediatamente il thread bersaglio Problemi se si cancella un thread mentre sta aggiornando dati che condivide con altri thread in modalità differita: il thread bersaglio può periodicamente controllare se deve terminare, in modo da riuscirvi al momento opportuno (cancellation point, in Pthreads) 4.47 Silberschatz, Galvin and Gagne 2013

48 Cancellazione di thread in Pthread 1 Codice Pthread per creare e cancellare un thread La chiamata della pthread_cancel() comporta solo una richiesta di cancellazione del thread bersaglio: l effettiva cancellazione dipende dallo stato del thread 4.48 Silberschatz, Galvin and Gagne 2013

49 Cancellazione di thread in Pthread 2 In caso di cancellazione disabilitata, l operazione rimane pendente finché il thread non procede all abilitazione Per ogni thread, lo stato di default è differita La cancellazione avviene solo al momento in cui il thread raggiunge un punto di cancellazione Il punto di cancellazione viene creato con una invocazione alla funzione pthread_testcancel() Si richiama quindi il cleanup handler, che permette di rilasciare tutte le risorse del thread Nei sistemi Linux, la cancellazione dei thread è gestita tramite segnali 4.49 Silberschatz, Galvin and Gagne 2013

50 Dati specifici dei thread Il Thread Local Storage (TLS) permette a ciascun thread di possedere una propria copia dei dati (non necessariamente tutti i dati del processo di origine) Esempio: In un sistema per transazioni, si può svolgere ciascuna transazione tramite un thread distinto ed un identificatore unico per ogni transazione Utili quando non si ha controllo sul processo di creazione dei thread (per esempio, nel caso dei gruppi di thread) Diversamente dalle variabili locali (che sono visibili solo durante una singola chiamata di funzione), i dati TLS sono visibili attraverso tutte le chiamate Simili ai dati dichiarati static in C I dati TLS sono però unici per ogni thread 4.50 Silberschatz, Galvin and Gagne 2013

51 Attivazione dello scheduler 1 Sia il modello M:M che il modello a due livelli richiedono che sia mantenuta una comunicazione costante per garantire un numero sufficiente di thread del kernel allocati ad una particolare applicazione Si alloca una struttura dati intermedia nota come processo leggero o LWP (LightWeight Process) Per la libreria dei thread a livello utente, LWP è un processore virtuale a cui l applicazione può richiedere lo scheduling di un thread a livello utente Corrispondenza fra LWP e thread a livello kernel: quanti LWP dovranno essere creati per una data applicazione? I thread del kernel vanno in esecuzione sui processori fisici Se un thread del kernel si blocca, l effetto si propaga attraverso l LWP fino al thread al livello utente ad esso associato 4.51 Silberschatz, Galvin and Gagne 2013

52 Attivazione dello scheduler 2 L attivazione dello scheduler mette a disposizione la procedura di upcall un meccanismo di comunicazione dal kernel alla libreria di gestione dei thread Tale comunicazione garantisce all applicazione la capacità di mantenere attivi un numero opportuno di thread a livello kernel 4.52 Silberschatz, Galvin and Gagne 2013

53 Thread in Linux 1 Linux li definisce task (come i processi) La creazione dei task avviene con la chiamata della system call clone() All invocazione, clone() riceve come parametro un insieme di indicatori (flag), che definiscono quante e quali risorse del task genitore saranno condivise dal task figlio clone() può permettere al task figlio la condivisione totale dello spazio degli indirizzi e delle risorse del task padre: si crea un thread 4.53 Silberschatz, Galvin and Gagne 2013

54 Thread in Linux 2 Se nessun flag è impostato al momento dell invocazione di clone(), non si ha alcuna condivisione: si ottiene una situazione analoga all invocazione di una fork() Condivisione ad intensità variabile possibile perché: Ogni task è rappresentato da una struttura dati nel kernel (TCB, struct task_struct, che punta alle strutture dati del processo, che siano esse uniche o condivise) La struttura non contiene dati, ma puntatori alle strutture contenenti dati La chiamata a fork() duplica tutte le strutture dati del task genitore Con clone() il nuovo task non riceve una copia di tutte le strutture dati, ma solo alcuni puntatori a tali strutture (quelle del padre), in base ai parametri di chiamata di clone() 4.54 Silberschatz, Galvin and Gagne 2013

55 Fine del Capitolo 4

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

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

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

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

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

Il modello a thread : motivazioni

Il modello a thread : motivazioni Sistemi Operativi Giuseppe Prencipe 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 i

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

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

Capitolo 5: I thread

Capitolo 5: I thread 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

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

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

Thread. Thread. Creazione di nuovi processi. Applicazioni reali. La creazione di un nuovo processo costa I tempi di context switch sono elevati Thread Thread Motivazioni Modelli Multithread Pthread, Threads in Win32, Thread in Java Problematiche relative ai Thread Thread Windows XP Thread Linux Applicazioni reali Creazione di nuovi processi Browser

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

Sistemi Operativi (modulo di Informatica II) I thread

Sistemi Operativi (modulo di Informatica II) I thread Sistemi Operativi (modulo di Informatica II) I thread Patrizia Scandurra Università degli Studi di Bergamo a.a. 2009-10 Sommario Generalità: il concetto di thread ed il multi-threading Modelli multithread

Dettagli

Lab 1: Java Multithreading

Lab 1: Java Multithreading Dept. of Computer Science Lab 1: Java Multithreading Matteo Camilli matteo.camilli@unimi.it Laboratorio di Sistemi Operativi a.a. 2015/16 Università degli Studi di Bergamo 1 Outline Programmazione multithreading

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

SISTEMI OPERATIVI THREAD. Giorgio Giacinto 2013. Sistemi Opera=vi

SISTEMI OPERATIVI THREAD. Giorgio Giacinto 2013. Sistemi Opera=vi 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

Dettagli

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

SISTEMI OPERATIVI. I thread. Prof. Luca Gherardi Prof.ssa Patrizia Scandurra (anni precedenti) (MODULO DI INFORMATICA II) SISTEMI OPERATIVI (MODULO DI INFORMATICA II) I thread Prof. Luca Gherardi Prof.ssa Patrizia Scandurra (anni precedenti) Università degli Studi di Bergamo a.a. 2012-13 Sommario Generalità: il concetto di

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

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: Concetti Introduttivi

Sistemi Operativi: Concetti Introduttivi Sistemi Operativi: Concetti Introduttivi 1.1 Principali funzioni di un Sistema Operativo 1.2 Cenni Storici 1.3 Classificazione dei Sistemi Operativi 1.4 Struttura dei Sistemi Operativi 1.5 Processi e gestione

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

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

La torta caprese. Ingredienti. Istruzioni: 5 uova 8 cucchiai di zucchero 1/8kg di burro ¼kg di mandorle dolci 100gr di cioccolato fondente I Thread Introduzione Parallelismo e concorrenza Thread a livello utente e nucleo I modelli multithread Aspetti sui thread Pthreads Solaris2 Threads Windows 2000 Threads Linux Threads Java Threads La torta

Dettagli

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

Sistemi Operativi. Processi GESTIONE DEI PROCESSI. Concetto di Processo. Scheduling di Processi. Operazioni su Processi. Processi Cooperanti 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

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 SO Solitamente, l esecuzione di un processo è sequenziale (le istruzioni vengono eseguite

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

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

Lezione 5. Processi e thread. Sistemi operativi. Marco Cesati System Programming Research Group Università degli Studi di Roma Tor Vergata Lezione 5 Sistemi operativi 24 marzo 2015 System Programming Research Group Università degli Studi di Roma Tor Vergata SO 15 5.1 Di cosa parliamo in questa lezione? Relazione tra processi e thread, e relative

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

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

Sistemi Operativi (modulo di Informatica II) I thread

Sistemi Operativi (modulo di Informatica II) I thread Sistemi Operativi (modulo di Informatica II) I thread Patrizia Scandurra Università degli Studi di Bergamo a.a. 2008-09 Sommario Generalità Modelli multithread Problematiche relative ai thread Pthread

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

Il Sistema Operativo

Il Sistema Operativo Il Sistema Operativo Il sistema operativo Con il termine sistema operativo si intende l insieme di programmi e librerie che opera direttamente sulla macchina fisica mascherandone le caratteristiche specifiche

Dettagli

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

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2014-15. Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2014-15 Pietro Frasca Lezione 5 Martedì 21-10-2014 Thread Come abbiamo detto, un processo è composto

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

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

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

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

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

Informatica II Sistemi Operativi DIGIP - a.a. 2015/16

Informatica II Sistemi Operativi DIGIP - a.a. 2015/16 DIPARTIMENTO DI INFORMATICA Alberto Ceselli (alberto.ceselli@unimi.it) Informatica II Sistemi Operativi DIGIP - a.a. 2015/16 Sistemi Operativi (modulo di Informatica II) I processi Patrizia Scandurra Università

Dettagli

Il Concetto di Processo

Il Concetto di Processo Processi e Thread 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

Dettagli

Il Concetto di Processo

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

Dettagli

Spazio di indirizzamento virtuale

Spazio di indirizzamento virtuale Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 016-01 Spazio di indirizzamento virtuale Pietro Di Lena - pietro.dilena@unibo.it // The function name says it all int stack_overflow (){

Dettagli

Sistemi Operativi (modulo di Informatica II) I processi

Sistemi Operativi (modulo di Informatica II) I processi Sistemi Operativi (modulo di Informatica II) I processi Patrizia Scandurra Università degli Studi di Bergamo a.a. 2008-09 Sommario Il concetto di processo Schedulazione dei processi Operazioni sui processi

Dettagli

Università degli Studi di Roma Tor Vergata Dipartimento di Ingegneria Civile e Ingegneria Informatica

Università degli Studi di Roma Tor Vergata Dipartimento di Ingegneria Civile e Ingegneria Informatica Università degli Studi di Roma Tor Vergata Dipartimento di Ingegneria Civile e Ingegneria Informatica Sistema distribuito: composto da un insieme di processi in esecuzione su più nodi del sistema I processi

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 5 Martedì 25-10-2016 Definizione di processo Esiste una distinzione concettuale

Dettagli

I SISTEMI OPERATIVI. Insieme di programmi che implementano funzioni essenziali per l uso di un sistema elaboratore.

I SISTEMI OPERATIVI. Insieme di programmi che implementano funzioni essenziali per l uso di un sistema elaboratore. I SISTEMI OPERATIVI Insieme di programmi che implementano funzioni essenziali per l uso di un sistema elaboratore. Le funzioni di un S.O. non sono definibili in modo esaustivo e puntuale così come non

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

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

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

Modello a scambio di messaggi

Modello a scambio di messaggi Modello a scambio di messaggi Aspetti caratterizzanti il modello Canali di comunicazione Primitive di comunicazione 1 Aspetti caratterizzanti il modello modello architetturale di macchina (virtuale) concorrente

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

Esame Laboratorio di Sistemi Operativi Cognome Nome Mat.

Esame Laboratorio di Sistemi Operativi Cognome Nome Mat. Il compito è costituito da domande chiuse, domande aperte ed esercizi. Non è consentito l uso di libri, manuali, appunti., etc. Tempo massimo 2 ore. Domande chiuse: ogni domanda corrisponde ad un punteggio

Dettagli

Processi. Descrittore di Processo (PCB) Context Switch Primitive per la creazione e terminazione dei processi. Il descrittore di processo (PCB)

Processi. Descrittore di Processo (PCB) Context Switch Primitive per la creazione e terminazione dei processi. Il descrittore di processo (PCB) Processi Descrittore di Processo (PCB) Context Switch Primitive per la creazione e terminazione dei processi 1 Il descrittore di processo (PCB) Il S.O. gestisce i processi associando a ciascuno di essi

Dettagli

Architetture Applicative Altri Esempi

Architetture Applicative Altri Esempi Architetture Applicative Altri Esempi Alessandro Martinelli alessandro.martinelli@unipv.it 15 Aprile 2014 Architetture Applicative Altri Esempi di Architetture Applicative Architetture con più Applicazioni

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

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

I Thread. Laboratorio Software 2008-2009 M. Grotto R. Farina

I Thread. Laboratorio Software 2008-2009 M. Grotto R. Farina I Thread M. Grotto R. Farina Sommario 1. I Thread Introduzione 2. Creazione e terminazione Utilizzo Scheduling dei processi 3. Comunicazione 4. Attributi Passaggio di parametri Funzioni utili Descrizione

Dettagli

LABORATORIO di Reti di Calcolatori

LABORATORIO di Reti di Calcolatori LABORATORIO di Reti di Calcolatori Architetture client-server 1 of 12 v slide della docente Bibliografia v testo di supporto: D. Maggiorini, Introduzione alla programmazione client-server, Pearson Ed.,

Dettagli

Struttura interna del sistema operativo Linux

Struttura interna del sistema operativo Linux Struttura interna del sistema operativo Linux 5. I device driver A cura di: Anna Antola Giuseppe Pozzi DEI, Politecnico di Milano anna.antola/giuseppe.pozzi@polimi.it -versione del 30 marzo 2004-1-04.-04

Dettagli

5. I device driver. Device driver - gestori delle periferiche. Struttura interna del sistema operativo Linux. Tipi di periferiche. Tipi di periferiche

5. I device driver. Device driver - gestori delle periferiche. Struttura interna del sistema operativo Linux. Tipi di periferiche. Tipi di periferiche Device driver - gestori delle periferiche Struttura interna del sistema operativo Linux Sono moduli software che realizzano l interfacciamento e la gestione dei dispositivi periferici Interagiscono con

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

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

Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova.

Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova. Programmi applicativi Un programma applicativo (o applicativo) è un eseguibile che può essere utilizzato dall utente e che ha funzionalità di alto livello (word processor, spreadsheet, DBMS) Univ. Milano-Bicocca

Dettagli

eseguire comandi dati dall'utente, utilizzando una macchina reale, di livello inferiore,

eseguire comandi dati dall'utente, utilizzando una macchina reale, di livello inferiore, La programmazione di sistema Introduzione ai sistemi operativi multiprocesso Primitive per la gestione dei processi http://home.dei.polimi.it/silvano/acso.htm Il sistema ste operativo Il Sistema Operativo

Dettagli

Processi e thread. Concetto di processo

Processi e thread. Concetto di processo Processi e thread Concetto di processo Il processo è un programma in esecuzione È l unità di esecuzione all interno del SO Solitamente, l esecuzione l di un processo è sequenziale (le istruzioni vengono

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

1. Le componenti principali di un sistema operativo sono: interfaccia con l utente (interprete dei comandi e/o interfaccia

1. Le componenti principali di un sistema operativo sono: interfaccia con l utente (interprete dei comandi e/o interfaccia 1. Quali sono le componenti principali dei sistemi operativi? 2. Si descriva il meccanismo attraverso cui i programmi in esecuzione richiamano i servizi dei sistemi operativi. 1. Le componenti principali

Dettagli

Architettura dei calcolatori e sistemi operativi. M2 Organizzazione della memoria virtuale Struttura dello spazio virtuale kernel e utente

Architettura dei calcolatori e sistemi operativi. M2 Organizzazione della memoria virtuale Struttura dello spazio virtuale kernel e utente Architettura dei calcolatori e sistemi operativi M2 Organizzazione della memoria virtuale Struttura dello spazio virtuale kernel e utente 18.01.2015 Architettura Intel x64 Lo spazio di indirizzamento virtuale

Dettagli

Funzioni, Stack e Visibilità delle Variabili in C

Funzioni, Stack e Visibilità delle Variabili in C Funzioni, Stack e Visibilità delle Variabili in C Programmazione I e Laboratorio Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7

Dettagli

Perché il linguaggio C?

Perché il linguaggio C? Il linguaggio C 7 Perché il linguaggio C? Larga diffusione nel software applicativo Standard di fatto per lo sviluppo di software di sistema Visione a basso livello della memoria Capacità di manipolare

Dettagli

GESTIONE DELLE PERIFERICHE D INGRESSO/USCITA ARGOMENTI

GESTIONE DELLE PERIFERICHE D INGRESSO/USCITA ARGOMENTI GESTIONE DELLE PERIFERICHE D INGRESSO/USCITA ARGOMENTI Compiti del sottosistema di I/O Architettura del sottosistema di I/O Gestore di un dispositivo di I/O COMPITI DEL SOTTOSISTEMA DI I/O 1. Nascondere

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

Struttura Logica del S.O:

Struttura Logica del S.O: Avvertenza Quanto segue NON è un libro, ma è una copia dei lucidi usati a lezione che NON sostituisce i libri di testo adottati e consigliati per l insegnamento di Informatica Generale. Questa copia è

Dettagli

GESTIONE DELLE PERIFERICHE D INGRESSO/USCITA ARGOMENTI

GESTIONE DELLE PERIFERICHE D INGRESSO/USCITA ARGOMENTI GESTIONE DELLE PERIFERICHE D INGRESSO/USCITA ARGOMENTI Compiti del sottosistema di I/O Architettura del sottosistema di I/O Gestore di un dispositivo di I/O Gestione e organizzazione dei dischi COMPITI

Dettagli

Introduzione ai sistemi operativi

Introduzione ai sistemi operativi Corso di laurea in Ingegneria dell Informazione Indirizzo Informatica Reti e sistemi operativi Introduzione ai sistemi operativi Contatti Docente: Alberto Pretto Ricevimento pretto@dis.uniroma1.it Appuntamento

Dettagli

Capitolo 4: Processi

Capitolo 4: Processi Capitolo 4: Processi Concetto di processo Scheduling dei processi Operazioni sui processi Processi cooperanti Comunicazione tra processi Comunicazione nei sistemi client-server 4.1 Concetto di processo

Dettagli

Descrizione generale dell architettura del sistema e dell interazione tra i suoi componenti. Descrizione del sottosistema di sicurezza locale.

Descrizione generale dell architettura del sistema e dell interazione tra i suoi componenti. Descrizione del sottosistema di sicurezza locale. Descrizione generale dell architettura del e dell interazione tra i suoi componenti. Descrizione del di sicurezza locale. Descrizione delle tecniche supportate dal per l organizzazione e la protezione

Dettagli

Sistemi Operativi. Sistemi I/O SISTEMI DI INPUT/OUTPUT. Hardware di I/O. Interfaccia di I/O per le applicazioni. Sottosistema per l I/O del kernel

Sistemi Operativi. Sistemi I/O SISTEMI DI INPUT/OUTPUT. Hardware di I/O. Interfaccia di I/O per le applicazioni. Sottosistema per l I/O del kernel SISTEMI DI INPUT/OUTPUT 10.1 Sistemi I/O Hardware di I/O Interfaccia di I/O per le applicazioni Sottosistema per l I/O del kernel Trasformazione delle richieste di I/O Stream Prestazioni 10.2 I/O Hardware

Dettagli

Sistemi Operativi. La gestione delle risorse

Sistemi Operativi. La gestione delle risorse Sistemi Operativi La gestione delle risorse Introduzione Il sistema operativo ha il compito di fornire la gestione dell hardware ai programmi dell utente. Utente utilizza i programmi applicativi Programmi

Dettagli

Il Sistema Operativo. Informatica Sistema Operativo 1

Il Sistema Operativo. Informatica Sistema Operativo 1 Il Sistema Operativo Informatica Sistema Operativo 1 O.S.:.: un intermediario SW Applicativo Sistema Operativo HW Informatica Sistema Operativo 2 O.S. vs applicativi Applicativi accesso a un insieme ridotto

Dettagli

Sistemi Operativi. Lezione 4 I processi: implementazioni

Sistemi Operativi. Lezione 4 I processi: implementazioni Lezione 4 I processi: implementazioni UNIX Creazione di un processo Assegna al processo un identificatore univoco Alloca spazio per il processo Inizializza il PCB Predisponi gli opportuni agganci con strutture

Dettagli

Organizzazione di un SO monolitico

Organizzazione di un SO monolitico Organizzazione di un SO monolitico Applicazioni Interprete di comandi (shell) Interfaccia grafica (desktop) Gestore del Gestore delle processore / Gestore della periferiche/ Scheduler(s) memoria dispositivi

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

Addendum alle chiamate di sistema per la gestione processi. E Mumolo

Addendum alle chiamate di sistema per la gestione processi. E Mumolo Addendum alle chiamate di sistema per la gestione processi E Mumolo Definiamo un processo proc.c che scrive l'argomento passato in linea: void main(int argc, char *argv[]){ printf("sono il processo %s\n",

Dettagli

Chiamata di procedura remota

Chiamata di procedura remota Con gli strumenti gia` visti, si puo` realizzare come segue: lato chiamante: send asincrona immediatamente seguita da una receive lato chiamato: una receive seguita, al termine dell azione richiesta, da

Dettagli

Java Virtual Machine. Indipendenza di java dalla macchina ospite. I threads in Java

Java Virtual Machine. Indipendenza di java dalla macchina ospite. I threads in Java programmi sorgente: files.java compilatore Indipendenza di java dalla macchina ospite Programmi java Programmi java Programmi java files.class bytecode linker/loader bytecode bytecode Java API files.class

Dettagli

Sistemi Operativi SISTEMI DI INPUT/OUTPUT. D. Talia - UNICAL. Sistemi Operativi 10.1

Sistemi Operativi SISTEMI DI INPUT/OUTPUT. D. Talia - UNICAL. Sistemi Operativi 10.1 SISTEMI DI INPUT/OUTPUT 10.1 Sistemi I/O Hardware di I/O Interfaccia di I/O per le applicazioni Sottosistema per l I/O del kernel Trasformazione delle richieste di I/O Stream Prestazioni 10.2 I/O Hardware

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

Processi Concetti di base. Esecuzione parallela e sequenziale Il concetto di processo Gestione dei processi

Processi Concetti di base. Esecuzione parallela e sequenziale Il concetto di processo Gestione dei processi Processi Concetti di base Esecuzione parallela e sequenziale Il concetto di processo Gestione dei processi Esecuzione sequenziale I sistemi di calcolo più semplici consentono unicamente l'esecuzione sequenziale

Dettagli

Il file È un insieme di informazioni: programmi. Il File System. Il file system

Il file È un insieme di informazioni: programmi. Il File System. Il file system Il File System Il file È un insieme di informazioni: programmi d a t i testi rappresentati come insieme di record logici (bit, byte, linee, record, etc.) Ogni file è individuato da (almeno) un nome simbolico

Dettagli

interoperabilità fra dispositivi forniti da diversi produttori; superare i problemi legati alla limitazione del numero di risorse.

interoperabilità fra dispositivi forniti da diversi produttori; superare i problemi legati alla limitazione del numero di risorse. Capitolo 7 Le infrastrutture SoftWare Funzioni del sistema operativo Rendere utilizzabili le risorse fisiche presenti nel sistema informatico: correttezza e precision; anywhere, anytime; affidabilità,

Dettagli

1. Che cos è un sistema multiprogrammato? Si può realizzare la multiprogrammazione

1. Che cos è un sistema multiprogrammato? Si può realizzare la multiprogrammazione 1. Che cos è un sistema multiprogrammato? Si può realizzare la multiprogrammazione su un sistema con una sola CPU? 2. Qual è la differenza tra un interruzione e una trap? Si faccia qualche esempio. 1.

Dettagli

Input/output da file I/O ANSI e I/O UNIX FLUSSI E FILE FLUSSI FLUSSI di TESTO FLUSSI BINARI FILE

Input/output da file I/O ANSI e I/O UNIX FLUSSI E FILE FLUSSI FLUSSI di TESTO FLUSSI BINARI FILE Input/output da file Il linguaggio C non contiene istruzioni di I/O, in quanto tali operazioni vengono eseguite tramite funzioni di libreria standard. Questo approccio rende estremamente flessibile e potente

Dettagli

Il file system. Le caratteristiche di file, direttorio e partizione sono del tutto indipendenti dalla natura e dal tipo di dispositivo utilizzato.

Il file system. Le caratteristiche di file, direttorio e partizione sono del tutto indipendenti dalla natura e dal tipo di dispositivo utilizzato. Il File System Il file system È quella parte del Sistema Operativo che fornisce i meccanismi di accesso e memorizzazione delle informazioni (programmi e dati) allocate in memoria di massa. Realizza i concetti

Dettagli

SISTEMI OPERATIVI. Nucleo di un SO. Il Nucleo. Il nucleo di un SO Gestione delle interruzioni Sincronizzazione tra processi Dispatcher. 06.

SISTEMI OPERATIVI. Nucleo di un SO. Il Nucleo. Il nucleo di un SO Gestione delle interruzioni Sincronizzazione tra processi Dispatcher. 06. SISTEMI OPERATIVI 06.a Il Nucleo Nucleo di un SO Il nucleo di un SO Gestione delle interruzioni Sincronizzazione tra processi Dispatcher 1 Architettura di base dei SO Due le strutture di riferimento: a

Dettagli

Modelli di interazione tra processi

Modelli di interazione tra processi Modelli di interazione tra processi Modelli di interazione Modello a memoria comune (ambiente globale) Modello a scambio di messaggi (ambiente locale, message passing) Modello a memoria comune Il sistema

Dettagli

Programmazione multi threaded in Python. Linguaggi dinamici A.A. 2010/2011 1

Programmazione multi threaded in Python. Linguaggi dinamici A.A. 2010/2011 1 Programmazione multi threaded in Python 1 Motivazione all'uso dei thread Pro Scrittura di applicazioni con molteplici eventi asincroni (GUI) Riduzione della latenza di servizio mediante l'uso di un pool

Dettagli

Livelli del sottosistema di I/O

Livelli del sottosistema di I/O Input/Output 1 Livelli del sottosistema di I/O Software di I/O di livello utente Software di sistema indipendente dal dispositivo Driver dei dispositivi Gestori delle interruzioni Hardware Modo utente

Dettagli

Sistema Operativo. (hardware e software) della della macchina

Sistema Operativo. (hardware e software) della della macchina Sistema Operativo Senza Sistema Operativo (SO) un computer è solo un macchinario inutile... Il SO rende possibile la gestione, elaborazione e immagazinamento dell informazione. Il Il SO SO è il il software

Dettagli

Gestione periferiche I/O

Gestione periferiche I/O Gestione periferiche I/O Compiti del sottosistema IO Nascondere al programmatore i dettagli delle interfacce hw e dei dispositivi (utilizzo di controllori) Omogeneizzare la gestione di dispositivi diversi

Dettagli

2. I THREAD. 2.1 Introduzione

2. I THREAD. 2.1 Introduzione 2. I THREAD 2.1 Introduzione Il tipo di parallelismo che è opportuno avere a disposizione nelle applicazioni varia in base al grado di cooperazione necessaria tra le diverse attività svolte in parallelo:

Dettagli