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

Slides:



Advertisements
Presentazioni simili
Linguaggio C e C++.
Advertisements

Java base V: La gestione delle Eccezioni
Requisiti precedenti Contenuti Verifiche Bibliografia Maura Zini.
PROGRAMMARE IN PASCAL (le basi)
Type Checking (1° parte)
Linguaggi a memoria condivisa Lidea è di aggiungere ad un linguaggio imperativo dei costrutti per rappresentare lesecuzione parallela di statements. Supponiamo.
Algoritmi e Programmazione
Time Sharing Il termine “Time Sharing” proviene dall'inglese e significa letteralmente “partizione di tempo”. Questa è una tecnica sviluppatasi negli.
1 Istruzioni, algoritmi, linguaggi. 2 Algoritmo per il calcolo delle radici reali di unequazione di 2 o grado Data lequazione ax 2 +bx+c=0, quali sono.
1 12. Progettare Sistemi Real-Time Progettare sistemi software il cui comportamento è condizionato da vincoli di tempo Mostreremo perché i sistemi real-time.
1 9: Progettazione Architetturale Obiettivo: stabilire la struttura globale di un sistema software Descriveremo diversi tipi di modello di architettura,
Il Software: Obiettivi Programmare direttamente la macchina hardware è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica del computer.
Gestione dei dati e della conoscenza (agenti intelligenti) M.T. PAZIENZA a.a
Introduzione ai circuiti sequenziali
Algoritmi Paralleli e Distribuiti a.a. 2008/09
Algoritmi Paralleli e Distribuiti a.a. 2008/09
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 10/03/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
Informatica 2. Concetti fondamentali di programmazione Programmare vuol dire scrivere un algoritmo in un linguaggio che faccia funzionare un calcolatore.
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Corso di Informatica (Programmazione)
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Introduzione alla programmazione lll
Struttura dei sistemi operativi (panoramica)
DAL PROBLEMA ALL'ALGORITMO Problemi e Programmi Paolo Amico
Fondamentidi Programmazione Corso: Fondamenti di Programmazione Classe: PARI-DISPARI Docente: Prof. Luisa Gargano Testo: Aho, Ulman, Foundations of Computer.
nome: sequenza di caratteri usata per denotare un oggetto
3. Architettura Vengono descritte le principali componenti hardware di un calcolatore.
Sistemi Operativi GESTIONE DEI PROCESSI.
Strutture dei sistemi di calcolo Funzionamento di un sistema di calcolo Struttura di I/O Struttura della memoria Gerarchia delle memorie Architetture di.
Il sistema operativo Vito Perrone
Strutture di controllo in C -- Flow Chart --
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
Lezione 2 Programmare in ASP
La macchina di von Neumann
La macchina di von Neumann
Corso di PHP.
Progetto di una architettura per lesecuzione distribuita e coordinata di azioni Progetto per lesame di Reti di Calcolatori L-S Prof. Antonio Corradi Finistauri.
Elementi di Informatica
Requisiti precedenti Contenuti Verifiche Bibliografia Maura Zini.
INTRODUZIONE l sistema operativo è il primo software che lutente utilizza quando accende il computer; 1)Viene caricato nella memoria RAM con loperazione.
Dimitri Caruso Classe 2^ Beat ISIS G. Meroni Anno Scolastico 2007/08
Il modello di riferimento OSI
1 Lucidi delle esercitazioni di Sistemi di Elaborazione in Rete Università degli Studi della Calabria Corso di Laurea in Ingegneria Gestionale A.A. 2003/2004.
Unità centrale di processo
Informatica Lezione 4 Scienze e tecniche psicologiche dello sviluppo e dell'educazione Anno accademico:
Prima di iniziare… Durata attività: due lezioni frontali + una lezione laboratorio + compiti per casa Prerequisiti: elementi base architettura dei calcolatori.
Il ciclo while.  Permette di ripetere un blocco di istruzioni fino a quando non si verifica un determinato evento  Il ciclo while può essere realizzato.
Informatica Lezione 5 Scienze e tecniche psicologiche dello sviluppo e dell'educazione (laurea triennale) Anno accademico:
Gestione del processore (Scheduler)
Tipo Documento: unità didattica 3 Modulo 7 Compilatore: Supervisore: Data emissione: Release: Indice: A.Scheda informativa B.Introduzione C.Corpo D.Riepilogo.
Tecnologie Informatiche ed Elettroniche per le Produzioni Animali
Università degli Studi di Bergamo Facoltà di Lingue e Letterature Straniere Facoltà di Lettere e Filosofia A.A Informatica generale 1 Appunti.
Sistemi operativi di rete Ing. A. Stile – Ing. L. Marchesano – 1/18.
Il calcolatore Stefano Cagnoni e Monica Mordonini
1 SYNCHRONOUS/ REACTIVE PROGRAMMING In Sistemi Software Concorrenti.
Automi temporizzati.
Informatica e Informatica di Base
I primi elaboratori Anni ‘50 Rigidamente sequenziali
Hardware Struttura fisica (architettura) del calcolatore formata da parti meccaniche, elettriche, elettroniche.
Tipo Documento: unità didattica 3 Modulo 7 Compilatore: Supervisore: Data emissione: Release: Indice: A.Scheda informativa B.Introduzione C.Corpo D.Riepilogo.
1 Metodo I metodi sono uno strumento che i programmatori usano per strutturare i programmi, sia per renderli più facili da capire che per permettere il.
Gli interrupt Richiesta di attenzione alla cpu. Viene generato un segnale detto di interrupt diretto alla cpu.
Il modello di Von Neumann
UNIMORE University of Modena and Reggio Emilia Scratch Simone Calderara
Dal problema al programma – ciclo di sviluppo del software La scrittura del programma è solo una delle fasi del processo di sviluppo di un'applicazione.
© 2016 Giorgio Porcu - Aggiornamennto 18/03/2016 I STITUTO T ECNICO SECONDO BIENNIO T ECNOLOGIE E P ROGETTAZIONE Il Sistema Operativo Concorrenza e Grafi.
1 Informatica di Base Facoltà di Lingue e Letterature Straniere Corso di laurea in Relazioni Pubbliche.
Hardware Struttura fisica (architettura) del calcolatore formata da parti meccaniche, elettriche, elettroniche.
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi Algoritmi distribuiti Lezione n°9.
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi Interconnessione tramite reti Lezione n°6.
Transcript della presentazione:

SISTEMI REATTIVI: INTRODUZIONE

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

Ambiente Esterno Coda di eventi Programma

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

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

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.

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

Struttura di massima di un sistema reattivo

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à

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

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

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

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

ESTEREL

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

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

Le idee di base Reactivity Atomicity of reaction Istantaneous broadcast Determinism

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

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.

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

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)

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

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

… 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

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.

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

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”

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

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

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)

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

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

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

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

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.

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

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.

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

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

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)

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!!!

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

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

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

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

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

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)

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

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

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.)

Confronto fra Reactive C ed Estrel

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

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

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

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

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

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

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

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

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.

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