Introduzione al Multithreading

Documenti analoghi
I THREAD O PROCESSI LEGGERI

Corso di Laboratorio di Sistemi Operativi

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

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

ACSO Programmazione di Sistema e Concorrente

Lab 1: Java Multithreading

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

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

Capitolo 5: I thread

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

Il Concetto di Processo

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

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

Modelli di programmazione parallela

System call per la gestione di processi

I THREAD. thread 2. thread 1

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

Sistemi Operativi. Lezione 3 Processi e Thread

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

Sistemi Operativi: Concetti Introduttivi

2. Nucleo del sistema operativo (la gestione dei processi)

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

Capitolo 3 -- Silberschatz

Principles of Concurrent Programming

I Processi. Il Concetto di Processo

Concetto di processo. Processi. Immagine in memoria di un processo. Stati di un processo. Un SO esegue una varietà di attività:

Posix Threads: l evoluzione dei processi UNIX

2. Nucleo del sistema operativo (la gestione dei processi)

Esame Laboratorio di Sistemi Operativi Cognome Nome Mat.

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

Java Virtual Machine

Sistemi Operativi (modulo di Informatica II) I processi

SISTEMI OPERATIVI. Struttura dei. Sistemi Operativi. Giorgio Giacinto 2015

Esercitazione 2: Java Thread. Java Thread. Java Thread. Un thread:

Processi e thread. Concetto di processo

Il Sistema Operativo

Processi programma processo processo Stati di un processo Attesa di caricamento new Pronto ( ready ) Esecuzione running Waiting ( in Attesa )

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

2. I THREAD. 2.1 Introduzione

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

T 1. Per un processo con più thread di controllo, lo stato di avanzamento della computazione di ogni thread è dato da:

GESTIONE DEI PROCESSI

I Processi nel Sistema Operativo Unix

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

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

Spazio di indirizzamento virtuale

Semafori. Semafori classici con i thread POSIX 2

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. I processi. Prof. Luca Gherardi Prof.ssa Patrizia Scandurra (anni precedenti) (MODULO DI INFORMATICA II)

Architettura dei calcolatori e sistemi operativi. Il Nucleo del Sistema Operativo. N4 I servizi di Sistema

Sistema Operativo. (hardware e software) della della macchina

CREAZIONE PROCESSI IN UNIX 20

Perche le CPU multicore

CAP. 6: Nucleo del sistema operativo (La gestione dei processi)

Processi. Laboratorio Software C. Brandolese

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

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

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

Processore Danilo Dessì. Architettura degli Elaboratori.

I thread nel sistema operativo LINUX: Linuxthreads

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

Transcript:

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 processi Threads a livello Utente e a livello Kernel

Multitasking Ad un istante. S.O. Multitasking processi threads

Che cosa è un thread è una singolo flusso di istruzioni eseguibili all interno di un contesto di un programma

Tradizionale Processo UNIX possiede uno spazio degli indirizzi unico consente di isolare le esecuzioni dei programmi Processo Thread Program hello.c #include <stdio.h> main() { printf( hello world\n ); }

Processo kernel stack codice variabili globali val. registri e progr. counter stack utente struttura del processo spazio indir. virtuali heap memoria condivisa area utente

Thread Istruzioni memoria privata struttura utente e cont. dei regist. Attributi Struttura del thread Stack del thread

Relazione tra processo e thread Processo Dati Codice Stato del kernel Insieme dei registri della CPU Thread Include: Mappa memoria virt. Descritt. File Id utente. Program counter Registri generali Stack pointer.

Proprietà di threads di uno stesso processo threads in un processo condividono Stato del processo Spazio della memoria Codice Area dati Condivisione delle istruzioni Se un thread altera una variabile non locale al thread la modifica é visibile a tutti gli altri threads Se un thread apre un file, allora gli altri threads possono operare su questo file

threads e processi Processo può comunicare con un altro processo può condividere variabili può condividere risorse può essere schedulato Thread può comunicare con un altro thread può condividere variabili può condividere risorse può essere schedulato

Operazioni sui threads Create Join Detach Binding Exit

Threads-processi : funzioni create( ) detach( ) join( ) exit( ) fork( ) none wait( ) exit( )

Attributi di un thread Scope Detach state Stack size Scheduling policy

Esempio di creazione di un thread int pthread_create ( pthread_t *thread_id, pthread_attr_t *attr, void *(*start_routine)(void *), void *arg );

Stati di un processo (1) Creation: stato di creazione, il kernel crea il contesto per il child. Parent é nel running state e child é nel creation state Runnable: stato in cui il processo é pronto per partire Running: il processo é nello stato di esecuzione. Può essere eseguito in modalità utente o kernel

Stati di un processo (2) Sleeping: il processo é in attesa, sta attendendo oppure é bloccato stopped: il processo é nello stato di stop, attende un signal per poter continuare terminated: il processo é terminato, a causa di una chiamata a exit()

Stato di un thread Active: Runnable: Sleeping: Stopped: Zombie:

Stati di transizione dei processi running user mode process creation creation continue runnable stopped stop context switch return syscall running kernel mode terminated exit block/step sleeping interrupt wake up

Stati di transizione di un thread Stopped Runnable Sleeping stop continue wakeup sleep dispatch preempt Active exit Zombie

Threads a livello utente Che non eseguono chiamate a sistema, vengono eseguiti più velocemente Per la loro gestione non vengono effettuate chiamate a sistema. Il kernel ignora l esistenza degli user level threads, dunque ogni operazione su di essi è trasparente al kernel

Riepilogo abbiamo parlato di : che cosa é un thread in che cosa si differenzia da un processo principali operazioni sui threads e sui processi differenza tra threads a livello utente e a livello kernel

Vantaggi di utilizzo dei threads Concorrenza Aumento del throughput Struttura di un programma Sfruttamento migliore delle risorse di sistema Sorgente unico per diverse piattaforme

Concorrenza Possibilità di suddividere più flussi di controllo in più threads, e dunque esistenza di flussi di controllo multipli e contemporanei. Possibilità di eseguire più threads sulle molteplici CPU esistenti nel sistema.

Aumento del throughput Un programma che richiede un I/O sincrono, utilizzando un unico thread, deve sempre aspettare la richiesta del servizio dal sistema operativo. Su un sistema monoprocessore, per un I/O sincrono, il thread permette la sovrapposizione di un medesimo processo mentre sta utilizzando un servizio di livello più alto. Mentre si sta effettuando la richiesta si può eseguire un altro thread

Struttura di un Programma I programmi possono essere strutturati in modo più efficiente.

Risorse di Sistema Programmi che usano due o più processi che condividono dati hanno bisogno di più spazio e tempo rispetto ai threads : ogni processo deve mantenere sia lo spazio degli indirizzi che lo stato del sistema I threads usano parte delle risorse utilizzate dai processi

sorgente multipiattaforme I threads a livello utente, in particolare la versione POSIX, consentono di scrivere dei codici portabili su varie architetture. La libreria threads Solaris, permette di scrivere codice per diverse architetture SUN che supportano questo modello, indipendentemente se la macchina ha uno o più processori

Quando utilizzare i threads? Livello utente: programmi che richiedono individuano istruzioni da effettuare su una enorme quantità di dati in modo indipendente Livello kernel: Tasks indipendenti Operazioni da Server Tasks che debbono essere ripetuti

Tipi di scheduling Globale al sistema (kernel) Locale al livello di processo

Libreria e API cancellazione scheduling attributi di sincr. attributi dei thread join continue exit creazione di key suspend priorità vari. semafori dati spec. dei threads concorrenza variabili mutex Variabili read/ var. condizioni write kill thr. demoni

Bound e Unbound user level threads Bound thread : thread utente legato direttamente ad un kernel thread Unbound thread : thread utente eseguito sulla base di ogni kernel thread disponibile nei processi. Uno degli attributi del thread permette il binding di threads e livello utente a threads a livello kernel

Sincronizzazione Esistono tre meccanismi fondamentali: Mutex (mutual exclusion): sincronizzazione di oggetti condivisi - ad es. variabili globali Variabili di condizioni: sincronizzazione su verificarsi di una condizione (tra threads) Semafori: sincronizzazione ad un oggetto o a piu oggetti

Kernel threads scheduling molti threads -a- un processo un thread -a- uno processi molti threads -a- molti processi doppio livello : molti -a- uno e uno - a- uno

Molti a uno spazio utente spazio kernel

Vantaggi e svantaggi Mx1 Vantaggi Concorrenza Veloce gestione threads Programmazione strutturata Codice pronto sia per MxM che 1x1 Svantaggi No parallelismo fisico Blocking : Sleep per un thr. selezione di un altro thr. thr. esegue read() su dispositivo nonblocking wrapper trasforma blocking in noblocking e select() prende i dati Profiling

Uno a Uno spazio utente spazio kernel

Vantaggi e svantaggi 1x1 Vantaggi Esecuzione parallela Profiling Vantaggi di Mx1 Svantaggi Overhead di gestione maggiore (+ contesto da gestire) Utilizzo più risorse

Molti a Molti spazio utente spazio kernel

Vantaggi e svantaggi MxM Vantaggi Vantaggi del modello Mx1 e 1x1 Uso di bound e unbound threads Svantaggi Interazione di scheduling di livello kernel e utente Svantaggi di Mx1 e 1x1

Doppio livello spazio utente spazio kernel

Vantaggi e svantaggi Mx1 & MxM Vantaggi Vantaggi di tutti i modelli visti finora Svantaggi Svantaggi di tutti i modelli visti finora

Riepilogo Oggi abbiamo parlato di: Vantaggi di utilizzare sistemi multithreading Caratteristiche e proprietà dei therads a livello kernel ed a livello utente Sincronizzazione Binding Modelli di scheduling di threads a livello utente e threads a livello kernel