26
Concurrency: introduction 1 ©Magee/ Kramer Modulo sulla concorrenza Gabriella Pasi e Carla Simone (dai lucidi tratti dal sito del libro di Jeff Magee e Jeff Kramer)

Modulo sulla concorrenza

  • Upload
    ady

  • View
    67

  • Download
    0

Embed Size (px)

DESCRIPTION

Modulo sulla concorrenza. Gabriella Pasi e Carla Simone (dai lucidi tratti dal sito del libro di Jeff Magee e Jeff Kramer). Libro di testo. Concurrency: State Models & Java Programs Jeff Magee & Jeff Kramer WILEY. Obbiettivi di questo modulo. - PowerPoint PPT Presentation

Citation preview

Page 1: Modulo sulla concorrenza

Concurrency: introduction 1©Magee/Kramer

Modulo sulla concorrenza

Gabriella Pasi e Carla Simone (dai lucidi tratti dal sito del

libro di Jeff Magee e Jeff Kramer)

Page 2: Modulo sulla concorrenza

Concurrency: introduction 2©Magee/Kramer

Libro di testo

Concurrency:State Models &Java Programs

Jeff Magee &Jeff Kramer

WILEY

Page 3: Modulo sulla concorrenza

Concurrency: introduction 3©Magee/Kramer

Obbiettivi di questo modulo

In questo modulo di lezioni sono presentano i concetti fondamentali relativi alla definizione di specifiche (modelli) di programmi concorrenti. NON sono presentati aspetti di programmazione concorrente in Java, che saranno affrontati nel corso di sistemi operativi.

Gli aspetti di modellazione sono di estrema importanza per una corretta comprensione e definizione di sistemi concorrenti, e per ragionare in termini di concorrenza

Page 4: Modulo sulla concorrenza

Concurrency: introduction 4©Magee/Kramer

Programma

Modelli

Costrutti grafici

notazione algebrica

Concettisi presenta un approccio modellistico alla specifica e

alla costruzione di programmi concorrenti

Esempi

Labelled Transition Systems (LTS)

Reti di Petri SA (ad automi sovrapposti)

Finite State Process (FSP)

Page 5: Modulo sulla concorrenza

Concurrency: introduction 5©Magee/Kramer

Cos’è un programma concorrente?

Un programma concorrente ha più “thread” di controllo che permettono sia la realizzazione di computazioni multiple sia il controllo di attività esterne che si presentano contemporaneamente.

Un programma sequenziale ha un singolo “thread” di controllo.

Page 6: Modulo sulla concorrenza

Concurrency: introduction 6©Magee/Kramer

Thread

Thread: filone, filo del discorso

Thread: [1] Una delle parti di un processo (applicazione in fase di esecuzione). Ogni thread dispone di una parte di memoria e di un gruppo di registri della CPU. Quando il thread termina (quando cioè termina la singola fase all'interno dell'esecuzione dell'applicazione) la memoria e gli oggetti di sistema che utilizzava vengono liberati. Quando termina l'ultimo thread di un processo, termina anche il processo, e quindi l'applicazione. Il termine multithreading denota l’esecuzione contemporanea di più thread

[2] In un newsgroup Usenet (in Internet) identifica i messaggi con un medesimo argomento.

Page 7: Modulo sulla concorrenza

Concurrency: introduction 7©Magee/Kramer

Perché la Programmazione Concorrente?

Applicazioni distribuite

Migliori prestazioni in caso di hardware multiprocessore

parallelismo

Incremento velocità di trasferimento dati

(throughput) tra applicazioni

Incremento dei tempi di risposta delle applicazioni

thread di alta priorità per le richieste utenti.

Strutturazione

nel caso di programmi che interagiscono con l’ambiente,

controllo di attività multiple e gestione di eventi multipli.

Page 8: Modulo sulla concorrenza

Concurrency: introduction 8©Magee/Kramer

modelli

Un modello è una rappresentazione semplificata della realtà.

focalizzazione su un aspetto di interesse - concorrenza animazione dei modelli per verificare un comportamento verifica di proprietà (ad esempio sicurezza & vivezza)

Page 9: Modulo sulla concorrenza

Concurrency: introduction 9©Magee/Kramer

modelli

Da un punto di vista notazionale un processo è sempre ben distinto dal suo comportamento

Da un punto di vista notazionale in alcuni casi un processo non è ben distinto dal suo comportamento

Diversi metodi di rappresentazione grafica:

In questo contesto i modelli sono descritti per mezzo di automi a stati finiti.

•Labelled Transition Systems LTS.

Un modello grafico può essere descritto linguisticamente mediante il linguaggio FSP (finite state processes) e, se denotato mediante LTS, può essere visualizzato e analizzato per mezzo dello strumento di analisi LTSA.

•Reti di Petri

Page 10: Modulo sulla concorrenza

Concurrency: introduction 10©Magee/Kramer

Materiale su Web

esempi in Java

esempi di modelli a stati

Il tool “Labelled Transition System Analyser (LTSA)” per animare i modelli LTS e per verificarne le proprietà.

http://www-dse.doc.ic.ac.uk/concurrency/

Page 11: Modulo sulla concorrenza

Concurrency: introduction 11©Magee/Kramer

Capitolo 2

Processi & Thread

Page 12: Modulo sulla concorrenza

Concurrency: introduction 12©Magee/Kramer

Processi concorrenti

I sistemi complessi sono strutturati come insiemi di attività semplici ognuna rappresentata come processo sequenziale. I processi possono sovrapporsi o essere concorrenti. La concorrenza può essere intrinseca al mondo fisico, oppure introdotta per ottimizzare i tempi di esecuzione o per gestire comunicazioni. La programmazione concorrente è complessa e può facilmente introdurre errori. Un approccio Un approccio rigoroso è essenzialerigoroso è essenziale

Modellazione di processi come macchine a stati finiti

A livello di programmazione: thread in Java.

Processo come sequenza di azioni

Page 13: Modulo sulla concorrenza

Concurrency: introduction 13©Magee/Kramer

Modellazione di Processi

Modelli descritti mediante macchine a stati, quali Reti di Petri e Labelled Transition Systems LTS. Queste possono essere descritte linguisticamente per mezzo di una notazione algebrica, detta finite state processes (FSP)

LTS - Reti di Petri forma grafica

FSP - forma algebrica

Notazioni con espressività diversa!Vedremo perchè

Page 14: Modulo sulla concorrenza

Concurrency: introduction 14©Magee/Kramer

Modellazione di Processi

Un processo è l’esecuzione di un programma sequenziale. E’ modellato come una macchina a stati finiti che transita da stato a stato per mezzo dell’esecuzione di azioni atomiche.

Un interruttore

onoffonoffonoff ……….

Una sequenza di azioni o “trace” comportamento

on

off

0 1

LTS Reti di Petrion

off

Page 15: Modulo sulla concorrenza

Concurrency: introduction 15©Magee/Kramer

FSP - azioni e processi

Se x è un’azione e P un processo (x-> P) descrive un processo che inizialmente esegue l’azione x e poi si comporta esattamente come P.

ATTIVAZIONEUNICA = (unavolta -> STOP).

Convenzione: le azioni hanno lettera iniziale minuscola

i PROCESSI hanno lettera iniziale maiuscola

once

0 1

Page 16: Modulo sulla concorrenza

Concurrency: introduction 16©Magee/Kramer

FSP - ricorsione

ATTIVAZIONE = OFF,OFF = (on -> ON),ON = (off -> OFF).

Un comportamento ripetitivo si modella mediante ricorsione:

Definizione più sintetica:

ATTIVAZIONE = OFF,OFF = (on -> (off -> OFF)).

E ancora:

ATTIVAZIONE = (on -> off -> ATTIVAZIONE).

on

off

0 1

Page 17: Modulo sulla concorrenza

Concurrency: introduction 17©Magee/Kramer

Animazione per mezzo del “tool” LTSA

Nella rappresentazione LTS associata, l’ultima azione è evidenziata in rosso.

Il programma LTSA può essere usato per produrre una “trace”.

on

off

0 1

Page 18: Modulo sulla concorrenza

Concurrency: introduction 18©Magee/Kramer

FSP - action prefix

SEMAFORO = (rosso->giallo->verde->giallo->SEMAFORO).

LTS :

Trace:

modello FSP di un semaforo :

red orange green

orange

0 1 2 3

rosso giallo verde

giallo

Reti di Petri

rosso

giallo

verde

giallo

rossogialloverdegiallorossogialloverde …

Page 19: Modulo sulla concorrenza

Concurrency: introduction 19©Magee/Kramer

FSP - costrutto di selezione

Se x e y sono azioni, (x-> P | y-> Q) descrive un processo che inizialmente realizza una delle due azioni x o y. Dopo l’esecuzione della prima azione, il comportamento successivo è descritto da P se la prima azione è stata x, da Q se la prima azione è stata y.

Chi o che cosa compie la scelta?

C’è una differenza tra azioni di input e output?

Page 20: Modulo sulla concorrenza

Concurrency: introduction 20©Magee/Kramer

FSP - scelta

DISTRIBUTORE = (rosso->caffè->DISTRIBUTORE |blu-> thè-> DISTRIBUTORE).

LTS

Modello FSP di una macchina distributrice di bevande:

red

blue

coffee

tea

0 1 2

rosso

blu

caffè

thè

rosso blu

caffè thè

Reti di Petri

Page 21: Modulo sulla concorrenza

Concurrency: introduction 21©Magee/Kramer

Scelta non deterministica

Il processo (x-> P | x -> Q) descrive un’azione iniziale x e un comportamento successivo modellato da P o Q.

LANCIOMONETA = (lancio->TESTA|lancio->CROCE),TESTA = (vistesta->LANCIOMONETA),TAILS= (viscroce->LANCIOMONETA).

Lanciare una moneta

Page 22: Modulo sulla concorrenza

Concurrency: introduction 22©Magee/Kramer

Scelta non deterministica Lanciare una moneta

toss

toss

heads

tails

0 1 2

lancio

lancio

viscroce

vistesta

lancio

vistesta viscroce

A)

lancio

vistesta viscroce

lancioB)

LTS : Reti di Petri

Page 23: Modulo sulla concorrenza

Concurrency: introduction 23©Magee/Kramer

Modellare errori (eccezioni)

Come si può modellare un canale di comunicazione inaffidabile che accetta un input (in) e produce un output solo nel cas in cui non si presenti un errore?

Uso del non-determinismo ... CHAN = (in->CHAN |in->out->CHAN).

in

in

out

0 1

in

error out

LTS : Reti di Petri

Page 24: Modulo sulla concorrenza

Concurrency: introduction 24©Magee/Kramer

Buffer che prende in input un valore nell’intervallo 0 .. 3 e restituisce in output quel valore:

FSP - processi e azioni indicizzati

BUFF = (in[i:0..3]-> out[i]-> BUFF).equivalente a:

O, usando un parametro di processo con valore di default:

BUFF = (in[0]->out[0]->BUFF |in[1]->out[1]->BUFF |in[2]->out[2]->BUFF |in[3]->out[3]->BUFF ).

BUFF(N=3) = (in[i:0..N]->out[i]-> BUFF).

Page 25: Modulo sulla concorrenza

Concurrency: introduction 25©Magee/Kramer

FSP - selezione su condizione

La selezione (when B x -> P | y -> Q) significa che quando la condizione B è verificata allora è possibile scegliere sia l’azione x sia l’azione y, altrimenti se B non è verificata l’azione x non può essere scelta.

COUNT (N=3) = COUNT[0],COUNT[i:0..N] = (when(i<N) inc->COUNT[i+1] |when(i>0) dec->COUNT[i-1] ).

inc inc

dec

inc

dec dec

0 1 2 3

Page 26: Modulo sulla concorrenza

Concurrency: introduction 26©Magee/Kramer

FSP - selezione su condizione

dec inc

dec

inc

inc

Valore 0

Valore 1

Valore 2

Valore 3

dec