Principles of Concurrent Programming

Documenti analoghi
Principles of Concurrent Programming

il tipo di parallelismo dipende dal grado di cooperazione

ACSO Programmazione di Sistema e Concorrente

PROCESSI NON SEQUENZIALI E TIPI DI INTERAZIONE

Esercitazione n.1 24 Ottobre Obiettivi:

I THREAD. thread 2. thread 1

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

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

System call per la gestione di processi

Introduzione alla Programmazione Concorrente

Processi parte IV. Processi parte IV

Sistemi Operativi T. Esercizi

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

Thread. Introduzione Creazione, distruzione Sincronizzazione

Introduzione al Multithreading

Programmazione Concorrente: insieme delle tecniche, metodologie e strumenti per il supporto all'esecuzione di sistemi software composti da insiemi di

Lab. di Sistemi Operativi - Esercitazione n 9- -Thread-

Sistemi Operativi Teledidattico

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

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

La Comunicazione tra Processi in Unix

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

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

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

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

Corso di Laboratorio di Sistemi Operativi

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

Il comando make. Per produrre un eseguibile da un programma C sono necessari tre passi compiuti dai seguenti moduli:

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

Modelli di interazione tra processi

istruzioni eseguite in ordine predeterminabile in base al codice del programma e dei valori dei dati in ingresso

Esercitazione n.1 13 Ottobre Obiettivi:

Cosa sono i semafori?

Controllo dei Processi 1

I processi: creazione, terminazione, IPC. Introduzione al multithreading.

2. I THREAD. 2.1 Introduzione

Il processo figlio : utilizza lo stesso codice che sta eseguendo il padre ;

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

Programmazione Concorrente: insieme delle tecniche, metodologie e strumenti per il supporto all'esecuzione di sistemi software composti da insiemi di

Relazione tra thread e processi

GENERAZIONE PROCESSO FIGLIO (padre attende terminazione del figlio)

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

1. PARALLELISMO E PROCESSI. 1.1 La necessità del parallelismo

Chiamate di sistema. Pipe Flussi di I/O

Modelli di interazione tra processi

Corso di Programmazione Concorrente Produttori / Consumatori. Valter Crescenzi

I Processi. Il Concetto di Processo

Corso di Programmazione Concorrente Processi. Valter Crescenzi

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

Il Sistema Operativo Concorrenza e Grafi di precedenza

Precedenza e associatività. Complementi sul C - 2. Esempi. Esempi

Modelli di interazione tra processi

Laboratorio di Sistemi Operativi Marzo-Giugno 2008 matricole congrue 0 mod 3

I Processi nel SO UNIX

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

Corso di Sistemi Operativi A.A CHIAMATE DI SISTEMA PER IL CONTROLLO DEI PROCESSI. Fabio Buttussi

Istruzioni semplici e strutturate

Puntatori. Un puntatore contiene un numero che indica la locazione di memoria dove è presente la variabile puntata

Chiamate di sistema per la Gestione dei processi in POSIX. E.Mumolo, DEEI

Cosa e un processo? Stato del processo

Modello a scambio di messaggi

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

Primi passi col linguaggio C

Programmazione modulare

Esercitazione sui grafi di precedenza, fork/join, cobegin/coend.

INTRODUZIONE. ALLA PROGRAMMAZIONEColonna 1. in linguaggio C

Sistemi Operativi. Marzo-Giugno 2011 matricole congrue 0 mod 3. Controllo dei processi - I

1 PANORAMICA SUL LINGUAGGIO C

Comunicazione tra processi: pipe Le pipe sono un meccanismo UNIX di Inter Process Communication (IPC)

Sistemi Operativi L-A. Esercizi 14 Giugno Esercizio monitor

Sincronizzazione Le sezioni scritiche

Sistemi Operativi. Lezione 5 Threads e Concorrenza. Corso: Sistemi Operativi Danilo Bruschi A.A. 2014/2015

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

I Processi nel Sistema Operativo Unix

Sincronizzazione. I semafori Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino

System Calls per la Gestione dei Processi

Modelli di programmazione parallela

Sistemi Operativi (M. Cesati)

AXO. Operativo. Architetture dei Calcolatori e Sistema. programmazione di sistema

I thread. Operating System Concepts 9 th Edition

Complementi. - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system -

Politecnico di Torino Sede di Alessandria Corso di informatica Programmazione in c: introduzione. e mail: sito: users.iol.

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

Elementi di Architettura e Sistemi Operativi

ESERCIZI DI PROGRAMMAZIONE C IN AMBIENTE UNIX

Sistemi operativi. Fondamenti di Informatica

Sistemi in tempo reale: applicazioni alla robotica. Sistemi in tempo reale: applicazioni alla robotica p.1/15

Il modello a thread : motivazioni

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

RELAZIONE DELLA PROVA DI LABORATORIO DI INFORMATICA

Processi in Linux. Stru/ura file eseguibili

Sistemi Operativi (M. Cesati)

Lab. di Sistemi Operativi - Esercitazione n 7- -Gestione dei processi Unix-

Espressioni logiche. Espressioni logiche. Operatori logici. Operatori logici. Operatori logici. Espressioni Logiche e Istruzione di Test

IL CONCETTO DI FILE. È illecito operare oltre la fine del file.

PROGRAMMAZIONE: Le strutture di controllo

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

Interazione tra Processi. Sistemi Operativi T AA

INTERPROCESS COMMUNICATION 27

Semafori. Semafori classici con i thread POSIX 2

Transcript:

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 Modelli di cooperazione Specifica della concorrenza 2

Obiettivi Introdurre i concetti basilari della programmazione concorrente Presentare le varie modalità di interazione fra i processi Introdurre i modelli secondo cui può avvenire la cooperazione Presentare alcuni costrutti per la specifica della concorrenza 3

Overview Concetti preliminari Interazione fra processi Modelli di cooperazione Specifica della concorrenza 4

Grafo di precedenza Rappresenta graficamente l evoluzione di un processo Nodi del grafo Eventi generati dal processore - cambiamenti di stato prodotti dalle azioni del processore Archi Specificano precedenze temporali fra gli eventi 5

Problema Grafo a ordinamento totale inizio Calcolo di r1=e*f (a-b)*(c+d)+(e*f) Algoritmo sequenziale r1=(e*f) r2=(a-b) r3=(c+d) r4=r2*r3 ris=r4+r1 r2=a-b r3=c+d r4=r2*r3 ris=r4+r1 fine 6

Problema Grafo a ordinamento parziale Calcolo di (a-b)*(c+d)+(e*f) inizio r1=e*f r2=a-b r3=c+d r4=r2*r3 ris=r4+r1 fine 7

Letture/scritture su file sequenziali Lettura, Elaborazione e Scrittura di N dati da/su file sequenziale. T buffer;. for(int i=0; i<n; i++) { }... leggi(buffer); elabora(buffer): scrivi(buffer); Grafo di precedenza a ordinamento totale inizio L 1 E 1 S 1 L N E N S N fine 8

Letture/scritture su file sequenziali inizio inizio inizio L 1 E 1 S 1 L 2 E 2 S 2 L 3 E 3 S 3 L N fine E N fine S N fine 9

Letture/scritture su file sequenziali inizio L 1 L 2 L 3 L N inizio E 1 E 2 E 3 inizio S 1 S 2 S 3 fine E N fine Grafo di precedenza a ordinamento parziale S N fine 10

Vincoli di sincronizzazione Gli archi nel grafo denotano vincoli di sincronizzazione I processi per la lettura, elaborazione e scrittura NON sono indipendenti Fra i processi avviene uno scambio di dati In una esecuzione concorrente i processi, per interagire, devono sincronizzare le loro velocità 11

Alcune conclusioni Elaborazione concorrente I processi sono asincroni le velocità di esecuzione non sono uguali e non sono note a priori) I processi sono interagenti Devono perciò sincronizzare le loro esecuzioni per poter interagire Necessità di un linguaggio concorrente Per descrivere il programma come più sequenze da eseguire concorrentemente Necessità di macchina concorrente Macchina in grado di eseguire più processi sequenziali contemporaneamente. Deve disporre di più processori (reali o virtuali) 12

Overview Concetti preliminari Interazione fra processi Modelli di cooperazione Specifica della concorrenza 13

Cooperazione Competizione Interferenza Interazione fra processi 14

Cooperazione Interazione prevedibile e desiderata La loro presenza è necessaria perché insita nella logica del programma Esempi: Un processo P non può eseguire un azione B prima che il processo Q abbia eseguito A (scambio di un segnale di sincronizzazione) il processo P invia dati al processo Q perche li elabori (scambio di dati fra due processi) Vincoli di sincronizzazione Meccanismi di comunicazione fra processi Linguaggio Macchina concorrente 15

Competizione Interazione prevedibile e necessaria, ma non desiderata Esempio: Accesso contemporaneo di più processi a una risorsa (fisica o logica) Vincoli di sincronizzazione Il vincolo di sincronizzazione non è più fisso (cooperazione) ma si possono 2 diverse forme A aspetta che B abbia finito di utilizzare la risorsa per poterla utilizzare a sua volta B aspetta che A abbia finito di utilizzare la risorsa per poterla utilizzare a sua volta 16

Interferenza Interazione non prevista e non desiderata Tipologie Presenza di interazioni spurie, non richieste dalla natura del problema Interazioni necessarie per la corretta soluzione del problema, ma programmate erroneamente Si manifestano come errori dipendenti dal tempo 17

Esempi di Interferenza Accesso non previsto di un processo P h a una risorsa R privata di P k Pk accede a R senza precauzioni P h e P k si possono trovare a modificare insieme la risorsa R Controllo degli accessi Può eliminare le interferenze del primo tipo Inefficace sulle interferenze del secondo tipo 18

Macchina Concorrente Macchina dotata di tanti processori (virtuali) quante sono le attività concorrenti T1 T2 T3 T4 Nucleo del Sistema Operativo Multi-programmazione Sincronizzazione/Comunicazione Controllo degli accessi Macchina Fisica (risorse hardware) 19

Multi-programmazione Meccanismi primitivi Realizza il concetto di processore virtuale Sincronizzazione/Comunicazione Permette l interazione fra processi Controllo degli accessi Rileva e previene alcuni tipi di interferenza Meccanismi primitivi Forniscono delle funzionalità atomiche (come fossero istruzioni della macchina fisica) 20

Overview Concetti preliminari Interazione fra processi Modelli di cooperazione Specifica della concorrenza 21

Sincronizzazione e Comunicazione Modelli di Interazione Memoria Comune I processi condividono un area di memoria attraverso la quale possono comunicare Un processo scrive informazioni nella memoria comune e gli altri leggono le stesse informazioni Il SO mette a disposizione i meccanismi necessari per la sincronizzazione Scambio di messaggi L interazione avviene attraverso scambio di messaggi fra i processi Il meccanismo di comunicazione e supportato dal sistema operativo 22

Overview Concetti preliminari Interazione fra processi Modelli di cooperazione Specifica della concorrenza 23

Specifica della Concorrenza La programmazione concorrente necessita di costrutti linguistici per Dichiarare Creare Attivare Terminare Sincronizzare Far comunicare processi sequenziali concorrenti 24

Fork/Join Cobegin/Coend Process Libreria Pthread Costrutti linguistici 25

Process P;. A P=fork fun; B Istruzione Fork A fork Void fun() { C } B C 26

Istruzione Join Process P;. A P=fork fun; B join P; D A fork B C Void fun() { C } 27 join D

Costrutto Fork/Join in UNIX # include <iostream.h> void main(int argc, char* argv[]) { int pid; pid=fork(); /* genera un nuovo processo */ if(pid<0) { /* errore */ cout << Errore nella creazione del processo << "\n\n ; exit(-1); } else if(pid==0) { /* processo figlio */ execlp( /bin/ls, ls, NULL); } else { /* processo genitore */ wait(null); cout << Il processo figlio ha terminato << "\n\n ; exit(0); } } 28

Costrutto Cobegin/Coend Proposto da Dijkstra, obbliga il programmatore a seguire uno schema di strutturazione A; Cobegin A B1; B2; B1 B2 B3 B3; Coend C; C 29

Costrutto Process Dichiarazione simile a quella di una funzione Denota una parte di programma che verrà eseguita in concorrenza con le altre Process <identificatore> (<par formali>) { <dichirazioni var locali>; <corpo del processo>; } 30

Libreria Pthread Definita in ambito POSIX Portable Operating System Interface Consente lo sviluppo di applicazioni multithreaded in linguaggio C Offre primitive per Creazione di thread (pthread_create()) Attivazione dei thread Sincronizzazione/Comunicazione dei thread Terminazione dei thread (pthread_exit()) 31

Pthread Creation and Termination #include <pthread.h> #include <stdio.h> #include <stdlib.h> #define NUM_THREADS 5 void *PrintHello(void *threadid) { long tid; tid = (long) threadid; printf("hello World! It's me, thread #%ld!\n", tid); pthread_exit(null); } 32

Pthread Creation and Termination (Con d) int main(int argc, char *argv[]) { pthread_t threads[num_threads]; int rc; long t; for(t=0; t<num_threads; t++) { printf("in main: creating thread %ld\n", t); rc = pthread_create(&threads[t], NULL, PrintHello, (void *) t); if (rc) { printf("error; return code from pthread_create() is %d\n", rc); exit(-1); } } /* Last thing that main() should do */ pthread_exit(null); } 33

Pthread Creation and Termination (Con d) In main: creating thread 0 In main: creating thread 1 Hello World! It's me, thread #0! In main: creating thread 2 Hello World! It's me, thread #1! Hello World! It's me, thread #2! In main: creating thread 3 In main: creating thread 4 Hello World! It's me, thread #3! Hello World! It's me, thread #4! 34

Questions? 35