1 SYNCHRONOUS/ REACTIVE PROGRAMMING In Sistemi Software Concorrenti.

Slides:



Advertisements
Presentazioni simili
Linguaggio C e C++.
Advertisements

L’informatica oggi: una panoramica
Meccanismi di IPC Problemi classici di IPC
Java base V: La gestione delle Eccezioni
CONCLUSIONE - Nucleo (o Kernel) Interagisce direttamente con lhardware Interagisce direttamente con lhardware Si occupa dellesecuzione.
Il Software.
Il Sistema Operativo Il Sistema Operativo fa parte del software di base; e` costituito da un insieme di programmi che interagiscono e cooperano per: gestire.
Requisiti precedenti Contenuti Verifiche Bibliografia Maura Zini.
La struttura fisica e logica di un elaboratore
Il Sistema Operativo.
1 CORBA 3.0 Nuove Caratteristiche. 2 Evoluzione di CORBA Introdotto nel 1991 come astrazione per la programmazione di oggetti distribuiti permette di.
Type Checking (1° parte)
1 Processi e Thread Meccanismi di IPC (1). 2 Comunicazioni fra processi/thread Processi/thread eseguiti concorrentemente hanno bisogno di interagire per.
MODULO 1 Linguaggi di Programmazione (Complementi) 1 IMPLEMENTAZIONE DEL SISTEMA MULTI-AGENTE ABACO CON LA PIATTAFORMA RTP.
Operating System Concepts
5.1 Sistemi operativi Scheduling della CPU Concetti di base Criteri di scheduling Algoritmi di scheduling Scheduling in sistemi con più processori Valutazione.
Scheduling della CPU Concetti fondamentali Criteri di scheduling
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.
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Corso di Informatica (Programmazione)
Struttura dei sistemi operativi (panoramica)
Software di base Il sistema operativo è un insieme di programmi che opera sul livello macchina e offre funzionalità di alto livello Es.organizzazione dei.
Assumptions The Systems Librarian should be a mangerial role This role should be recognized in the organization structure of the library The person assuming.
FACOLTÁ DI INGEGNERIA CORSO DI LAUREA INGEGNERIA INFORMATICA Progetto e Sviluppo di un Algoritmo di Scheduling per il Sistema RTAI Candidato: Luca Marzario.
Sistemi Operativi SCHEDULING DELLA CPU.
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.
Fondamenti di Informatica1 Software di base Tra il linguaggio macchina (basso livello) e i linguaggi evoluti (alto livello) esiste uno strato di software.
SOFTWARE I componenti fisici del calcolatore (unità centrale e periferiche) costituiscono il cosiddetto Hardware (alla lettera, ferramenta). La struttura.
La macchina di von Neumann
INPUT / OUTPUT. Connessione tra componenti CPU RAM DischiMonitor StampanteTastieraMouse BUS = Interfacce o Controller.
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.
TECNICHE DI INPUT/OUTPUT
L' ARCHITETTURA DI VON NEUMANN
Architettura degli elaboratori
La schedulazione dei processi
Lo sviluppo del progetto informatico
Il Sistema Operativo (1)
Sincronizzazione dei processi
Threads.
1 Il Sistema Operativo: Esempio n Le operazioni effettuate sembrano abbastanza semplici ma … n Provocano una serie di eventi in cui vengono coinvolte sia.
Prima di iniziare… Durata attività: due lezioni frontali + una lezione laboratorio + compiti per casa Prerequisiti: elementi base architettura dei calcolatori.
Distributed System ( )7 TCP/IP four-layer model.
1 Progettazione Architetturale. 2 Obiettivo: stabilire la struttura globale di un sistema software Descriveremo diversi tipi di modello di architettura,
I processi.
Architettura di una CPU
Sistemi e Tecnologie Informatiche Verifica di correttezza di un programma.
Task Structuring COMET TASK STRUCTURING - Prima parte -
INTERFACCE Schede elettroniche che permettono al calcolatore di comunicare con le periferiche, che possono essere progettate e costruite in modo molto.
Vettori (a una dimensione)
Robotica Lezione 4. 2 Attributi dell’Intelligenza Pensiero Capacita’ a risolvere problemi Apprendimento e Memoria Linguaggio Intuizione e Creativita’
Informatica Lezione 5 Scienze e tecniche psicologiche dello sviluppo e dell'educazione (laurea triennale) Anno accademico:
Gestione dei dispositivi di I/O:
Calcolatori Elettronici Valutazione delle Prestazioni Francesco Lo Presti Rielaborate da Salvatore Tucci.
MCSA Mobile Code System Architecture Infrastruttura a supporto della code mobility Pierfrancesco Felicioni Reti di Calcolatori L.S. 2005/2006.
4/26/20151 Metodi formali nello sviluppo software a.a.2013/2014 Prof.Anna Labella.
Università degli Studi di Bergamo Facoltà di Lingue e Letterature Straniere Facoltà di Lettere e Filosofia A.A Informatica generale 1 Appunti.
SISTEMI REATTIVI: INTRODUZIONE. Event driven programming La tecnica usata per gestire eventi è detta event-based o event-driven programming Nella programmazione.
Sistemi operativi di rete Ing. A. Stile – Ing. L. Marchesano – 1/18.
Automi temporizzati.
Informatica e Informatica di Base
I primi elaboratori Anni ‘50 Rigidamente sequenziali
Cloud informatica V anno. Introduzione a PHP Lo scripting PHP PHP è un linguaggio di scripting lato server. Le caratteristiche di un linguaggio di scripting.
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.
Click to add text L’ Unità di Elaborazione. Struttura : Unità di controllo: coordina attività CPU ALU: unità aritmetico-logica, esegue operazioni tra.
Implementazioni di un analizzatore di protocollo Esistono quattro fondamentali tradeoff per la realizzazione di un analizzatore di protocollo:  Analisi.
1 Informatica di Base Facoltà di Lingue e Letterature Straniere Corso di laurea in Relazioni Pubbliche.
Transcript della presentazione:

1 SYNCHRONOUS/ REACTIVE PROGRAMMING In Sistemi Software Concorrenti

2 Systemi Software Concorrenti I sistemi software son 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: le richieste concorrenti competono su una risorsa per la propria esecuzione Cooperative: esse collaborano per soddisfare una singola richiesta di livello più alto

3 Systemi Software Concorrenti Competitive concurrency: mantiene l’illusione del time sharing permettendo che una singola richiesta di servizio resti invisibile ad altre richieste da essa scorrelate ed attive simultaneamente. Si verifica quando una componente può eseguire due o più servizi scorrelati e generati all’esterno della componente stessa

4 Systemi Software Concorrenti Cooperative concurrency: eaumenta le performance nel soddisfare una rchiesta o semplifica il coordinamento di più eventi che concorrono al completamento della stessa. Opera all’interno di una stessa componente e riduce la latenza della richiesta stessa

5 Systemi Software Concorrenti Internal concurrency: la concorrenza controllata esplicitamente da una singola componente External concurrency: ogni altro tipo di concorrenza

6 Software Architecture “The structure of the components of a program/ system, their interrelationships, and principles and guidelines governing their design and evolution over time [D. Garlan D. E. Perry]” Composta da a shared repertory of methods, techniques, patterns and idioms for structuring complex software systems

7 Event-Driven programming Evento come un’eccezione un evento è una condizione (hardware) segnalata al contrario di un eccezione un evento rappresenta una condizione normale La tecnica usata per per gestire eventi è detta event- based o event-driven programming, Nella programmazione event-driven (ad eventi) non si ha un flusso di controllo normale ma sostanzialmente solo event handlers

8 Event-Driven programming L’idea base è quella di gestire una coda di eventi in modo tale che quando l’ambiente (mondo esterno al programma) è operativo genera eventi che vengono inseriti nella coda Il programma cicla all’interno di un outermost (switch) statement (o usa tecniche equivalenti) in cui si chiede se vi sono eventi in coda, in caso affermativo li preleva e li gestisce.

9 Event-Driven programming Event-driven programming è quindi uno stile di programmazione in cui il programma è pilotato (driven) da eventi esterni. I programmi Event-driven sono composti da piccole porzioni di codice dette: event handlers, attivati in risposta a eventi esterni e da un event dispatcher, che attiva gli event handlers, tramite l’uso di event queue che memorizzano gli eventi non ancora processati.

10 Event-Driven programming cont. Ne consegue che, al contrario dei programmi tradizionali che seguono un proprio flusso di controllo (own control flow pattern) e solo raramente cambiano direzione ai punti di salto (branch points), il flusso di controllo dei programmi a eventi (event-driven) è sostanzialmente pilotato dagli eventi esterni. Un event handler è una porzione di codice eseguita quando si verifica un evento.

11 Event-Driven programming cont. In molti casi gli event handlers possono attivare (trigger) a loro volta nuovi eventi, provocando una cascata di eventi. Event-driven programming rinforza flessibilità e asincronia e tende ad essere praticamente modeless. Le graphical user interface sono solitamente programmate in stile event-driven. Gli Operating Systems costituiscono un altro esempio di event-driven programs.

12 Interrupt-Driven programming The style of programming where the program is not in control all the time but rather responds to interrupts or signals in order to get started. At the lowest level, interrupt handlers act as direct event handlers for hardware events, with the CPU hardware performing the role of the dispatcher.

13 Interrupt-Driven programming Lo stile di programmazione in cui il programma non ha il controllo in modo continuo ma responde ad interrupts, cioè a segnali che ne risvegliano l’esecuzione. Al livello più basso, gli interrupt handlers agiscono come gestori diretti di eventi hardware, mentre la CPU gioca il ruolo del dispatcher.

14 Sistemi Reattivi (Reactive Systems) Un sistema reattivo è un sistema event-driven che interagisce continuamente con l’ ambiente (environment) reagendo agli stimoli che da esso gli pervengono. Si assume che i sistemi reattivi: eseguano con una velocità mai sopraffatta da quella dell’ambiente. usualmente non terminino mai e quindi non siano facilmente caratterizzabili da semplici funzioni che partendo da uno stato iniziale li portino ad uno stato finale.

15 Sistemi Reattivi (Cont.) Un sistema real-time è un sistema reattivo che deve rispettare vincoli temporali (timing constraints) nella gestione degli eventi. Il termine reactive è più specifico di event- driven (piuttosto overloaded in letteratura) ma è più generale di soft real-time e near real- time: poiché esso non si riferisce a vincoli temporali da rispettare in real-time. I sistemi reattivi più semplici vengono spesso programmati come macchine a stati finiti (automi).

16 Event-Driven Reactive systems Un reactive system è anche event-driven inoltre un sistema interrupt-driven è anche event-driven reactive | interrupt-driven | ==> event-driven systems o anche | signal-driven | system |

17 Sistemi Reattivi (Cont.) Un sistema real-time è un sistema reattivo che deve rispettare vincoli temporali (timing constraints). Il termine reactive è più specifico di event- driven (piuttosto overloaded in letteratura) ma è più generale di soft real-time e near real- time: poiché esso non si riferisce a vincoli temporali da rispettare in real-time. I sistemi reattivi più semplici vengono spesso programmati come macchine a stati finiti (automi).

18 Sistemi Reattivi (Cont.) Le architetture software sincrone sono state esplicitamente introdotte per la programmazione dei sistemi reattivi. I sistemi risultanti includono architetture data-flow e dichiarative ed anche quelle derivate dai tradizionali linguaggi imperativi.

19 Sistemi Reattivi (Cont.) L’ ipotesi di sincronia (synchrony hypothesis) assume che tutte le computazioni avvengano in passi atomici discreti durante i quali il tempo viene ignorato (eseguono in tempo nullo) Il tempo avanza solo quando non vi è codice eligible for execution. Durante un singolo step tutti gli output avvengono allo stesso istante come tutti gli input dello step:cioè output e input sono mutuamente sincroni il concetto di tempo continuo è sostituito da una serie ordinata di passi (step) discreti tra i quali avvengono canbi discreti nello stato globale. Il codice eseguito in ogni passo è detto una reazione (reaction)

20 Ipotesi di sincronia (Cont.) L’ ipotesi di sincronia permette di gestire la concorrenza interna di tipo cooperativo in modo deterministico. Gli eventi concorrenti asincroni si manifestano solo nell’ambito di global state ‘shapshots’ Nessuna sezione critica esplicita occorre nel codice sorgente né in forma di monitor od oggetti concorrenti tutto il codice può essere pensato interno a sezioni critiche implicite eseguite con lo stile di programmazione dei guarded command

21 Linguaggi sincroni I linguaggi syncroni/reattivi si focalizzano sulla concorrenza interna di tipo cooperativo comunemente presente in driver e controller essi incapsulano nella compilazione tutta la concorrenza interna cooperativa producendo una singola macchina a stati finiti che gestisce tutte le attività I principali sono Meta/NPL di ISIS [Marzullo & Wood] Estrel e Reactive C