La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

SISTEMI REATTIVI: INTRODUZIONE. Event driven programming La tecnica usata per gestire eventi è detta event-based o event-driven programming Nella programmazione.

Presentazioni simili


Presentazione sul tema: "SISTEMI REATTIVI: INTRODUZIONE. Event driven programming La tecnica usata per gestire eventi è detta event-based o event-driven programming Nella programmazione."— Transcript della presentazione:

1 SISTEMI REATTIVI: INTRODUZIONE

2 Event driven programming La tecnica usata per gestire eventi è detta event-based o event-driven programming Nella programmazione event-driven non si ha un flusso di controllo normale perché questo viene pilotato da eventi esterni

3 Ambiente Esterno Coda di eventi Programma

4 Event driven programming (2) I programmi event-driven sono composti da piccole porzioni di codice dette: –event handlers –event dispatcher –event queue

5 Sistemi SW concorrenti I sistemi software sono costituiti da componenti che reagiscono a richieste esterne di servizio; ogni componente è in grado di servire più richieste concorrentemente. La concorrenza può essere vista in modi diversi –Competitive –Cooperative –Internal –external

6 Sistema Reattivo E’ un sistema event-driven che interagisce continuamente con l’ambiente esterno reagendo agli stimoli che da esso pervengono Un sistema è detto reattivo quando il suo comportamento è influenzato da eventi che hanno luogo nel mondo reale, al di fuori dei computer che governano il sistema stesso.

7 Sistema Reattivo Un sistema real-time è un sistema reattivo che deve rispettare vincoli temporali nella gestione degli eventi. Soft real-time Hard real-time Sistema a stimolo/risposta

8 Struttura di massima di un sistema reattivo

9 Caratteristiche Flessibilità nell'interfacciamento con il controllo dispositivi e controllo di produzione Semplicità di estensione ed adattamento a situazioni diverse. Adattabilità nel processing dei dati di produzione. Testabilità High Availability Prestazioni soft real-time. Scalabilità

10 Architetture SW sincrone Introdotte per la programmazione sistemi reattivi L’ ipotesi di sincronia (synchrony hypothesis) assume che tutte le computazioni avvengano in passi atomici discreti durante i quali il tempo viene ignorato

11 Determinismo Il programma a partire dalla stesse condizioni iniziali deve produrre gli stessi risultati finali. S0S1 A

12 Esempio di non determinismo S0 S1 S2 S3 S4 A A B ε C D

13 Esempio di determinismo S0 S1 S2 S3 S4 A B C E D

14 ESTEREL

15 Informazioni principali Sviluppato da Grard Berry a partire dal 1983 E’ nato per applicazioni per robot E’ un linguaggio testuale e impertivo É definito formalmente tramite la semantica matematica

16 Gli usi Orologi da polso (hanno un microprocessore a 4 o 8 bit. Gli eventi a cui sono soggetti sono il clock che ha priorità maggiore rispetto a quelli generati dall’utente premendo sui oulsanti) Componenti per processori, per esempio cache controller Controllers, per esempio per protocolli di comunicazione Areonautica, per esempio controllo carburante, carrello, ecc

17 Le idee di base Reactivity Atomicity of reaction Istantaneous broadcast Determinism

18 Reactivity i sistemi comunicano continuamente con l’ambiente quando arriva un evento il sistema reagisce producendo un evento di output. Reactive Model

19 Atomicity of reaction Esterel si basa su Perfect Synchrony hypothesis le reazioni sono istantanee come se i programmi fossero eseguiti da una macchina infinitamente veloce. le reazioni sono istantanee come se i programmi fossero eseguiti da una macchina infinitamente veloce.

20 Istante Esterel è un linguaggio sincrono T out – T in  0

21 le reazioni sono atomiche realtà una reazione non puo’ interferire con un’altra l’ipotesi di Perfect Synchrony è ideale l’ipotesi di Perfect Synchrony è ideale Atomicity of reaction (2)

22 Esempio di esecuzione 4.produce altri stimoli, cioè un insieme di segnali di output. Alla fine dell'istante avrà un altro stato che gli permetterà di reagire ad altri stimoli e così via…. S1 S2 S3 S4 1.Il programma inizia con uno stato iniziale. tempo 2.Se riceve degli stimoli, cioè un insieme di segnali di input 3.reagisce

23 Atomicity of reaction (3) Esterel prevede parallelism operator ( || ) il programma dirige entità parallele (in Ada tali entità si chiamano task)

24 … e la concorrenza ?? Se c’è concorrenza  il sistema non è deterministico, ovvero che il suo comportamento è imprevedibile perché esso non dipende solo dagli input. Avendo però il concetto di reazioni atomiche non si ha più la concorrenza, in quanto una azione non può interferire con un’altra, ovvero non cè sovrapposizione tra le due azioni  il sistema è deterministico

25 Istantaneous broadcast Per sincronizzre le varie entità che lavorano in parallelo esse devono comunicare. La comunicazione avviene tramite i segnali e usando il meccanismo chiamato “broadcast” In Esterel ci sono due tipi di comunicazioni: –Esterna: tra programma e mondo esterno –Interna: tra moduli costituenti il programma stesso.

26 I segnali Un segnale ha due possibili stati: – assente –presente In un istante esso può essere in un solo stato I segnali possono essere emessi È possibile verificare la presenza di un segnale Un segnale può avere in valore

27 Istantaneous broadcast Il broadcast e’ legato al concetto di istante: l’emissione di un segnale in un determinato istante e’ recepito nello stesso istante da tutte le altre entita’ Questa caratteristica permette al programma di chiamarsi “istantaneous decision”

28 Esempio Present S then emit T end || emit S || present S then emit U end

29 Riassumendo… Le reazioni sono istanatee  sincrono Più entità lavorano in parallelo Non c’è concorrenza Determinismo Le entità si possono sincronizzare tramite segnali e opportune istruzioni

30 I comandi – le istruzioni Sono di due tipi: 1)Combinational statements: usano “zero time” di eseguzione, cioe’ vengono eseguite e terminano nello stesso istante (es: emit) 2)Sequential statements: usano uno o piu’ istanti (es: await)

31 Esempio 1 - pausa module Example1: output A, B, C; emit A; present A then emit B end; pause; emit C; end module A B C Ferma l’esecuzione per questo istante e la riattiva nel prossimo

32 Esempio 2 -attesa [ emit A ; pause ; pause; emit A || await A; emit B ] A B A

33 Esempio 2-bis [ emit A ; pause ; pause; emit A || await immediate A; emit B ] A B A

34 Esempio 3 - interruzione Abort emit A; pause; emit B; when C; emit D; Esegue il suo corpo finchè: non compare il segnale d'interruzione e termina quando il corpo stesso termina L'attesa sul segnale di interruzione si fa non subito ma all'istante successivo a quello in cui l'interruzione è stata attivata. AD B C C

35 Esempio cronometro Un cronometro base ha solo un pulsante START_STOP che permette alternativamente di lanciare e fermare il tempo. Il controllore si basa su un segnale HS (1/100 di secondi) per calcolare il suo tempo TIME.

36 cronometro module BASIC_STOPWATCH: input START_STOP, HS; output TIME: integer; var TIME := 0 : integer in loop emit TIME(TIME); await START_STOP; abort every HS do TIME := TIME +1; emit TIME(TIME); end every when START_STOP end loop end var end module Aspetta finchè non è stato premutoto lo start Finchè non viene premuto lo stop While (true) Segnale con valore Dichiarazione variabile e assegnazione Non è possibile assegnare in parallelo alla stessa variabile 2 valori diversi: X := 0 || X := 1 Perché esterel è deterministico

37 REACTIVE C Il Reactive C è un'estensione del linguaggio C creata per adattarlo alla programmazione reattiva. Una caratteristica importante dei sistemi reattivi è il concetto di tempo. Mentre nei linguaggi tradizionali il tempo è assoluto, qui diventa relativo. Il tempo è diviso in istanti, e in ciascuno di essi vengono eseguiti da uno o più statement. Uno statement è un'insieme di istruzioni.

38 REACTIVE C REACTIVE PROCEDURES rproc CiaoBambini() { printf("Ciao Bambini"); } (Dichiarazione di una procedura in RC)

39 REACTIVE C EXEC rproc Saluta() { exec CiaoBambini(); } (Richiama una procedura)

40 REACTIVE C STOP rproc CiaoBambini() { printf("Ciao Bambini"); stop; printf("Ho detto ciao."); } (Stop fa terminare l'istante corrente. Le istruzioni successive verranno eseguite nel prossimo istante)

41 REACTIVE C ATTENZIONE! rproc CiaoBambini() { printf("Ciao Bambini"); stop; printf("Ho detto ciao."); } LA PROCEDURA “CiaoBambini()” RICHIEDE 2 ISTANTI PER ESSERE ESEGUITA 1 VOLTA E 3 ISTANTI PER ESSERE ESEGUITA 2 VOLTE!!!

42 REACTIVE C LOOP loop exec CiaoBambini(); (Esegue all'infinito uno statement)

43 REACTIVE C EVERY every (CiSonoBambini==1) exec CiaoBambini(); (Esegue lo statement ogni volta che la condizione è vera)

44 REACTIVE C REPEAT repeat (10) exec CiaoBambini(); (Ripete X volte uno statement)

45 REACTIVE C WATCHING watching (CiSonoBambini==0) exec CercaBambini(); watching (CiSonoBambini==0) loop exec CercaBambini(); (Esegue lo statement finchè la condizione non è vera)

46 REACTIVE C AWAIT await (CiSonoBambini==1); (Attende che la condizione sia vera)

47 REACTIVE C WATCHING...TIMEOUT watching (CiSonoBambini==0) exec CercaBambini(); timeout exec AddioBambini(); (Se la condizione diventa vera prima della fine dell'esecuzione dello statement1 allora viene eseguito anche lo statement2)

48 REACTIVE C SELECT select (x = !x) exec p1(); exec p2(); (E' simile all'if)

49 REACTIVE C ECCEZIONI rproc CercaErrori() { raise errore; } catch errore exec CercaErrori(); handle exec GestisciErrori();

50 REACTIVE C PARALLELISMO close par { suspend; printf("1"); } printf("2"); (Il codice viene eseguito in un istante. I due statement vengono però eseguiti in microistanti divesi. Suspend equivale a stop ma si riferisce ai microistanti.)

51 Confronto fra Reactive C ed Estrel

52 Caratteristiche di Estrel Comunicazione di tipo broadcast Instantaneous Broadcast Compilatore basato su una semantica funzionale Rifiuta i programmi con “casuality cicles”

53 Casuality cicles Si possono verificare in presenza di: operazioni con contraddizioni present S else emit S operazioni tra loro sincrone ma che verrebbero eseguite in parallelo emit S || present S then emit T end programmi non deterministici present S1 else emit S2 end || present S2 else emit S1 end

54 Componenti importanti in Estrel 1.Divisione del tempo in istanti di tempo (parte reattiva) 2.Comunicazione broadcast 3.Ricezione di un segnale non blocca l’esecuzione dei processi

55 Caratteristiche di RC Estensione del C Parallelismo usato per descrivere la concorrenza logica dei processi Processi paralleli e deterministici generano un codice sequenziale

56 Ambienti di confronto STATEMENTS REATTIVI PARALLELISMO E COMUNICAZIONE TRATTAMENTO DEI DATI E DEI PROCESSI ESECUZIONE DEI PROGRAMMI

57 Statement reattivi Reactive C statement derivano da Estrel. Condizioni degli statement Statement stop e select di RC Microistanti solo in RC

58 Parallelismo e comunicazione Operatore parallelo non commutativo in RC par printf(“1”); printf(“2”); Metodi di sincronizzazione e variabili globali Dialoghi istantanei in Estrel present S1 then emit S2 end || emit S1; present S2 then emit S3 end Instantaneous broadcast in Estrel, ma broadcast e radio in RC

59 Trattamento dei dati e dei processi Estrel: Tipi di dato primitivi No processi dinamici RC: come il C

60 Esecuzione dei programmi L’eseguibile generato da Estrel può essere utilizzato per produrre codice in altri linguaggi di programmazione (in particolare C e ADA) o per produrre input per formule o sistemi di validazione. In RC no.

61 Bibliografia “Corso di informatica – Elementi di base” Renata Paola Dameri – Genzianella Foresti Jackson Libri “Reactive C: An Extension of C to Program Reactive Systems“ Frédéric Boussinot “Architetture di sistemi reattivi” Carlo Pescio “The SL Synchronous Language” Frédéric Boussinot, Roert de Simone “La Programmation par Objects Réactifs” Guillaume Doumenic, Frédéric Boussinot


Scaricare ppt "SISTEMI REATTIVI: INTRODUZIONE. Event driven programming La tecnica usata per gestire eventi è detta event-based o event-driven programming Nella programmazione."

Presentazioni simili


Annunci Google