La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

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

Presentazioni simili


Presentazione sul tema: "Concurrency: introduction1 ©Magee/Kramer Modulo sulla concorrenza Gabriella Pasi e Carla Simone (dai lucidi tratti dal sito del libro di Jeff Magee e Jeff."— Transcript della presentazione:

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

2 Concurrency: introduction2 ©Magee/Kramer Libro di testo Concurrency: State Models & Java Programs Jeff Magee & Jeff Kramer WILEY

3 Concurrency: introduction3 ©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

4 Concurrency: introduction4 ©Magee/Kramer Programma Modelli Costrutti grafici notazione algebrica Concetti si 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)

5 Concurrency: introduction5 ©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.

6 Concurrency: introduction6 ©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 lesecuzione contemporanea di più thread [2] In un newsgroup Usenet (in Internet) identifica i messaggi con un medesimo argomento.

7 Concurrency: introduction7 ©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 lambiente, controllo di attività multiple e gestione di eventi multipli.

8 Concurrency: introduction8 ©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)

9 Concurrency: introduction9 ©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

10 Concurrency: introduction10 ©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à.

11 Concurrency: introduction11 ©Magee/Kramer Capitolo 2 Processi & Thread

12 Concurrency: introduction12 ©Magee/Kramer Processi concorrenti Un approccio rigoroso è essenziale 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 rigoroso è essenziale Modellazione di processi come macchine a stati finiti A livello di programmazione: thread in Java. Processo come sequenza di azioni

13 Concurrency: introduction13 ©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è

14 Concurrency: introduction14 ©Magee/Kramer Modellazione di Processi Un processo è lesecuzione di un programma sequenziale. E modellato come una macchina a stati finiti che transita da stato a stato per mezzo dellesecuzione di azioni atomiche. Un interruttore on off on off on off ………. Una sequenza di azioni o trace comportamento LTS Reti di Petri on off

15 Concurrency: introduction15 ©Magee/Kramer FSP - azioni e processi Se x è unazione e P un processo (x-> P) descrive un processo che inizialmente esegue lazione x e poi si comporta esattamente come P. ATTIVAZIONEUNICA = (unavolta -> STOP). Convenzione: le azioni hanno lettera iniziale minuscola i PROCESSI hanno lettera iniziale maiuscola

16 Concurrency: introduction16 ©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).

17 Concurrency: introduction17 ©Magee/Kramer Animazione per mezzo del tool LTSA Nella rappresentazione LTS associata, lultima azione è evidenziata in rosso. Il programma LTSA può essere usato per produrre una trace.

18 Concurrency: introduction18 ©Magee/Kramer FSP - action prefix SEMAFORO = (rosso->giallo->verde->giallo->SEMAFORO). LTS : Trace: modello FSP di un semaforo : rossogialloverde giallo Reti di Petri rosso giallo verde giallo rosso giallo verde giallo rosso giallo verde …

19 Concurrency: introduction19 ©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 lesecuzione 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?

20 Concurrency: introduction20 ©Magee/Kramer FSP - scelta DISTRIBUTORE = (rosso->caffè->DISTRIBUTORE |blu-> thè-> DISTRIBUTORE). LTS Modello FSP di una macchina distributrice di bevande: rosso blu caffè thè rossoblu caffèthè Reti di Petri

21 Concurrency: introduction21 ©Magee/Kramer Scelta non deterministica Il processo (x-> P | x -> Q) descrive unazione 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

22 Concurrency: introduction22 ©Magee/Kramer Scelta non deterministica Lanciare una moneta lancio viscroce vistesta lancio vistestaviscroce A) lancio vistestaviscroce lancio B) LTS : Reti di Petri

23 Concurrency: introduction23 ©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 errorout LTS : Reti di Petri

24 Concurrency: introduction24 ©Magee/Kramer Buffer che prende in input un valore nellintervallo 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).

25 Concurrency: introduction25 ©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 lazione x sia lazione y, altrimenti se B non è verificata lazione x non può essere scelta. COUNT (N=3) = COUNT[0], COUNT[i:0..N] = (when(i COUNT[i+1] |when(i>0) dec->COUNT[i-1] ).

26 Concurrency: introduction26 ©Magee/Kramer FSP - selezione su condizione decinc dec inc Valore 0 Valore 1 Valore 2 Valore 3 dec


Scaricare ppt "Concurrency: introduction1 ©Magee/Kramer Modulo sulla concorrenza Gabriella Pasi e Carla Simone (dai lucidi tratti dal sito del libro di Jeff Magee e Jeff."

Presentazioni simili


Annunci Google