Esempio. chan request = [0] of { byte }; active proctype Server() { byte client; end: do :: request? client -> printf("client %d\n", client); od }

Save this PDF as:
 WORD  PNG  TXT  JPG

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Esempio. chan request = [0] of { byte }; active proctype Server() { byte client; end: do :: request? client -> printf("client %d\n", client); od }"

Transcript

1 Canali in Promela

2 Sistemi distribuiti un sistema distribuito è costituito da un insieme di processi e un insieme di canali di comunicazione ogni processo rappresenta un nodo di computazione del sistema distribuito e la rete di comunicazione è modellata dai canali in Promela: un canale non è riservato solo ad una coppia di processi un processo può inviare e ricevere messaggi sullo stesso canale Sintassi: chan ch = [capacity] of {typename,,typename un array non è un typename lecito nella definizione di un canale, un typedef si

3 Esempio chan request = [0] of { byte ; active proctype Server() { byte client; end: do :: request? client -> printf("client %d\n", client); od active proctype Client0() { request! 0; active proctype Client1() { request! 1;

4 Uso canali Messaggio ha il tipo dichiarato nella dichiarazione Es: chan c = [1] of {byte,byte Primitive su c possono essere inviati/ricevuti coppie di byte send: invio messaggio su canale Es: c! 3,10 receive: ricezione messaggio su canale Es: c? x,y (x,y variabili assegnate con le componenti del messaggio nell'ordine in cui sono scritte)

5 Uso canali una variabile di tipo chan può essere passata come parametro con inline e proctype: Es: proctype P(chan c) { c!5,7 Es: inline P(chan c) { c? x,y canali possono essere dichiarati localmente ad un processo cessano di esistere quando il processo termina canali possono essere di due tipologie: rendez-vous: la capacità è 0 (non usano spazio per memorizzazione messaggi) buffered: la capacità è >0

6 Canali rendez-vous mtype { red, yellow, green ; chan ch = [0] of { mtype, byte, bool ; active proctype Sender() { ch! red, 20, false; printf("sent message\n") active proctype Receiver() { mtype color; byte time; bool flash; ch? color, time, flash; printf("received message %e, %d, %d\n", color, time, flash) eseguibilità a coppie (matching send/receive): un send è blocking per un processo fino a quando un matching receive può essere eseguito in un altro processo (e vice-versa) matching send/receive sono atomici

7 Reply channels chan request = [0] of { byte ; chan reply = [0] of { bool ; active proctype Server() { end: byte client; do :: request? client -> od printf("client %d\n", client); reply! true active proctype Client0() { request! 0; reply? _ active proctype Client1() { request! 1; reply? _ simbolo "_" denota che non ci interessa il campo corrispondente del messaggio (anonymous variable) nei reply channels è importante solo informazione di ricezione messaggio non il messaggio stesso (acknowledgement)

8 Esempio con due server chan request = [0] of { byte ; chan reply = [0] of { byte, byte ; active [2] proctype Client() { byte server, whichclient; request! _pid; reply? server, whichclient; printf("reply received from server %d by client %d\n", server, _pid); assert(whichclient == _pid) active [2] proctype Server() { end: byte client; do :: request? client -> printf("client %d processed by server %d\n", client, _pid); od reply! _pid, client; _pid usato per tracciare matching server/client nei rendez-vous asserzione usata per verificare che client riceve effettivamente la risposta dal server che ha dato seguito alla sua richiesta

9 Errore Output generato da una traccia d'errore: Client 0 processed by server 2 Client 1 processed by server 3 Reply received from server 2 by client 1 Reply received from server 3 by clent 0 Possiamo correggerlo assegnando un reply channel differente ad ogni client usiamo un array globale di chan, oppure chan locali

10 Soluzione con array di chan chan request = [0] of { byte, chan ; chan reply [2] = [0] of { byte, byte ; active [2] proctype Client() { byte server; byte whichclient; request! _pid, reply[_pid]; reply[_pid]? server, whichclient; printf("reply received from server %d by client %d\n", server, _pid); assert(whichclient == _pid) active [2] proctype Server() { byte client; chan replychannel; end: do :: request? client, replychannel -> printf("client %d processed by server %d\n", client, _pid); od replychannel! _pid, client;

11 Soluzione con chan locali chan request = [0] of { byte, chan ; active [2] proctype Client() { byte server; byte whichclient; chan reply = [0] of { byte, byte ; request! _pid, reply; reply? server, whichclient; printf("reply received from server %d by client %d\n", server, _pid); assert(whichclient == _pid) active [2] proctype Server() { byte client; chan replychannel; end: do :: request? client, replychannel -> printf("client %d processed by server %d\n", client, _pid); od replychannel! _pid, client;

12 Buffered channels Messaggi inviati sono memorizzati in una coda FIFO mtype { red, yellow, green ; chan ch = [3] of { mtype, byte, bool ;

13 Semantica buffered channel Invio e ricezione avvengono in due momenti differenti in una computazione coda dei messaggi di un canale entra a far parte dello stato del sistema send è blocking solo se canale pieno (coda piena) possibile avere send non blocking (con perdita di messaggi in caso di coda piena) in SPIN specificando parametro -m

14 Primitive per testare stato buffered channel empty(chan): testa se canale è vuoto nempty(chan): testa se canale non è vuoto (! empty(chan) non è consentito) full(chan): testa se canale è pieno nfull(chan): testa se canale non è pieno len(chan): restituisce numero di messaggi nel canale Importante: non usare else in blocchi if-fi e do-od se si usano espressioni con canali (usare invece le coppie empty/nempty e full/nfull) preferire empty/nempty/full/nfull a len in quanto facilitano ottimizzazioni di SPIN

15 Programma con channel expressions chan request = [2] of { byte, chan; chan reply[2] = [2] of { byte ; active [2] proctype Client() { byte server; do :: full(request) -> printf("client %d w. for non-full chan\n", _pid) :: request! _pid, reply[_pid] -> reply[_pid]? server; printf("reply received from server %d by client %d\n", server, _pid) od active [2] proctype Server() { byte client; chan replychannel; do :: empty(request) -> printf("no requests for server %d\n", _pid) :: request? client, replychannel -> printf("client %d processed by server %d\n", client, _pid); od replychannel! _pid

16 Random receive ricezione messaggio non in posizione front nella coda operatore di ricezione random (??) reply?? server, 3 significa: ricevi il primo messaggio con valore 3 nel secondo campo e assegna il primo campo a variabile server Se abbiamo bisogno di usare il valore di _pid, per la ricezione random possiamo usare eval(_pid)

17 Programma con random receive chan request = [4] of { byte ; chan reply = [4] of { byte, byte ; active [4] proctype Client() { byte server; request! _pid; reply?? server, eval(_pid); printf("reply received from server %d by client %d\n", server, _pid) active [2] proctype Server() { byte client; end: do :: request? client -> printf("client %d processed by server %d\n", client, _pid); od reply! _pid, client

18 Invio ordinato (sorted send) invio messaggio con posizionamento nella coda in ordine chan!! message inserisce message nella posizione che precede il primo messaggio che lo segue nell'ordinamento ai fini dell'ordinamento i campi del messaggio sono visti come interi, e in caso di più campi si usa l'ordinamento lessicografico

19 Programma che stampa tre numeri generati nondeterministicamente in ordine non decrescente chan ch = [3] of { byte ; inline getvalue() { if :: n = 1 :: n = 2 :: n = 3 fi active proctype Sort() { byte n; getvalue(); ch!! n; getvalue(); ch!! n; getvalue(); ch!! n; ch? n; printf("%d\n", n); ch? n; printf("%d\n", n); ch? n; printf("%d\n", n)

20 Altre operazioni con canali copia senza rimozione messaggio da coda: ch? <color,time,flash> ch?? <color,time,flash> polling receive: verifica se un messaggio con determinate caratteristiche (valori) è nella coda senza copiarlo ch?? [green, time, false] non ha effetti collaterali rispetto a receive con copia adeguato per scrivere guardie in istruzioni if/do si può usare in espressioni booleane

21 Buffered vs. rendez-vous channels rendez-vous channel: non usa spazio aggiuntivo sincronizzano processi (un processo resta in attesa di un altro processo) send e receive di un messaggio eseguite atomicamente come un'unica istruzione buffered channel: contribuisce alla complessità dello spazio degli stati maggiore versatilità d'uso consente di modellare computazioni asincrone

Sistemi Operativi. Lez. 13: primitive per la concorrenza monitor e messaggi

Sistemi Operativi. Lez. 13: primitive per la concorrenza monitor e messaggi Sistemi Operativi Lez. 13: primitive per la concorrenza monitor e messaggi Osservazioni I semafori sono strumenti particolarmente potenti poiché consentono di risolvere ogni problema di sincronizzazione

Dettagli

MODELLO AD AMBIENTE GLOBALE

MODELLO AD AMBIENTE GLOBALE MODELLI DI INTERAZIONE TRA PROCESSI Modello ad ambiente globale ( global environment ) Modello a scambio di messaggi ( message passing ) MODELLO AD AMBIENTE GLOBALE Il sistema è visto come un insieme di

Dettagli

Modello a scambio di messaggi

Modello a scambio di messaggi PRIMITIVE PER LO SCAMBIO DI MESSAGGI Un messaggio si può considerare costituito da: origine, destinazione e contenuto Modello a scambio di messaggi type messaggio = record origine: ; destinazione: ; contenuto:

Dettagli

Esempio produttori consumatori. Primitive asincrone

Esempio produttori consumatori. Primitive asincrone Primitive asincrone Send non bloccante: il processo mittente, non appena inviato il messaggio, prosegue la sua esecuzione. Il supporto a tempo di esecuzione deve fornire un meccanismo di accodamento dei

Dettagli

Comunicazione. La comunicazione point to point e' la funzionalita' di comunicazione fondamentale disponibile in MPI

Comunicazione. La comunicazione point to point e' la funzionalita' di comunicazione fondamentale disponibile in MPI Comunicazione La comunicazione point to point e' la funzionalita' di comunicazione fondamentale disponibile in MPI Concettualmente la comunicazione point to point e' molto semplice: Un processo invia un

Dettagli

Verifica di programmi C con SPIN

Verifica di programmi C con SPIN Verifica di programmi C con SPIN Importanza delle astrazioni Astrazione (perdita di dettaglio) è un concetto cruciale nella verifica Per individuare una buona astrazione bisogna tener conto sia della proprietà

Dettagli

I file di dati. Unità didattica D1 1

I file di dati. Unità didattica D1 1 I file di dati Unità didattica D1 1 1) I file sequenziali Utili per la memorizzazione di informazioni testuali Si tratta di strutture organizzate per righe e non per record Non sono adatte per grandi quantità

Dettagli

Middleware Laboratory. Dai sistemi concorrenti ai sistemi distribuiti

Middleware Laboratory. Dai sistemi concorrenti ai sistemi distribuiti Dai sistemi concorrenti ai sistemi distribuiti Problemi nei sistemi concorrenti e distribuiti I sistemi concorrenti e distribuiti hanno in comune l ovvio problema di coordinare le varie attività dei differenti

Dettagli

Sincronizzazione e coordinamento nel distribuito

Sincronizzazione e coordinamento nel distribuito Sincronizzazione e coordinamento nel distribuito Sincronizzazione in sistemi centralizzati uso di primitive basate implicitamente sull esistenza della memoria condivisa Sincronizzazione in sistemi distribuiti

Dettagli

Sistemi Operativi (modulo di Informatica II)

Sistemi Operativi (modulo di Informatica II) Sistemi Operativi (modulo di Informatica II) La comunicazione tra processi Patrizia Scandurra Università degli Studi di Bergamo a.a. 2008-09 Sommario Processi cooperanti La comunicazione tra processi Necessità

Dettagli

Inter Process Communication. Laboratorio Software 2008-2009 C. Brandolese

Inter Process Communication. Laboratorio Software 2008-2009 C. Brandolese Inter Process Communication Laboratorio Software 2008-2009 C. Brandolese Introduzione Più processi o thread Concorrono alla relaizzazione di una funzione applicativa Devono poter realizzare Sincronizzazione

Dettagli

CAPITOLO 27 SCAMBIO DI MESSAGGI

CAPITOLO 27 SCAMBIO DI MESSAGGI CAPITOLO 27 SCAMBIO DI MESSAGGI SCAMBIO DI MESSAGGI Sia che si guardi al microkernel, sia a SMP, sia ai sistemi distribuiti, Quando i processi interagiscono fra loro, devono soddisfare due requisiti fondamentali:

Dettagli

Sommario. G. Piscitelli

Sommario. G. Piscitelli Sommario Interprocess Communication Processi (e thread) cooperanti Il paradigma produttore-consumatore Shared Memory e Inter Process Communication (IPC) facility Proprietà caratteristiche della comunicazione

Dettagli

Sottoprogrammi: astrazione procedurale

Sottoprogrammi: astrazione procedurale Sottoprogrammi: astrazione procedurale Incapsulamento di un segmento di programma presente = false; j = 0; while ( (j

Dettagli

SISTEMI OPERATIVI. Sincronizzazione dei processi. Domande di verifica. Luca Orrù Centro Multimediale Montiferru 30/05/2007

SISTEMI OPERATIVI. Sincronizzazione dei processi. Domande di verifica. Luca Orrù Centro Multimediale Montiferru 30/05/2007 2007 SISTEMI OPERATIVI Sincronizzazione dei processi Domande di verifica Luca Orrù Centro Multimediale Montiferru 30/05/2007 Sincronizzazione dei processi 1. Si descrivano i tipi di interazione tra processi?

Dettagli

Corso di Linguaggi di Programmazione

Corso di Linguaggi di Programmazione Corso di Linguaggi di Programmazione Lezione 19 Alberto Ceselli alberto.ceselli@unimi.it Dipartimento di Tecnologie dell Informazione Università degli Studi di Milano 18 Maggio 2010 idea: sfruttare i

Dettagli

SOMMARIO Coda (queue): QUEUE. QUEUE : specifica QUEUE

SOMMARIO Coda (queue): QUEUE. QUEUE : specifica QUEUE SOMMARIO Coda (queue): Specifica: interfaccia. Implementazione: Strutture indicizzate (array): Array di dimensione variabile. Array circolari. Strutture collegate (nodi). Prestazioni. Strutture Software

Dettagli

Descrizione di un algoritmo

Descrizione di un algoritmo Descrizione di un algoritmo Un algoritmo descrive due tipi fondamentali di oper: calcoli ottenibili tramite le oper primitive su tipi di dato (valutazione di espressioni) che consistono nella modifica

Dettagli

B alberi. dizionari in memoria secondaria

B alberi. dizionari in memoria secondaria B alberi dizionari in memoria secondaria dizionari su memoria secondaria la memorizzazione su memoria secondaria risponde a due esigenze permanenza dell informazione la RAM è volatile grande quantità di

Dettagli

Semantica dei programmi. La semantica dei programmi è la caratterizzazione matematica dei possibili comportamenti di un programma.

Semantica dei programmi. La semantica dei programmi è la caratterizzazione matematica dei possibili comportamenti di un programma. Semantica dei programmi La semantica dei programmi è la caratterizzazione matematica dei possibili comportamenti di un programma. Semantica operazionale: associa ad ogni programma la sequenza delle sue

Dettagli

Elementi di semantica denotazionale ed operazionale

Elementi di semantica denotazionale ed operazionale Elementi di semantica denotazionale ed operazionale 1 Contenuti! sintassi astratta e domini sintattici " un frammento di linguaggio imperativo! semantica denotazionale " domini semantici: valori e stato

Dettagli

Sistemi Operativi. ugoerr+so@dia.unisa.it 3 LEZIONE PROCESSI CORSO DI LAUREA TRIENNALE IN INFORMATICA. Sistemi Operativi 2007/08

Sistemi Operativi. ugoerr+so@dia.unisa.it 3 LEZIONE PROCESSI CORSO DI LAUREA TRIENNALE IN INFORMATICA. Sistemi Operativi 2007/08 Sistemi Operativi Docente: Ugo Erra ugoerr+so@dia.unisa.it 3 LEZIONE PROCESSI CORSO DI LAUREA TRIENNALE IN INFORMATICA UNIVERSITA DEGLI STUDI DELLA BASILICATA Sommario della lezione Concetto di processo

Dettagli

Programmazione in Java (I modulo) Lezione 3: Prime nozioni

Programmazione in Java (I modulo) Lezione 3: Prime nozioni Programmazione in Java (I modulo) Lezione 3: Prime nozioni La volta scorsa Abbiamo avuto un primo assaggio! Abbiamo visto come usare l editor per scrivere un programma Java. Abbiamo analizzato riga per

Dettagli

CAPITOLO 7 - SCAMBIO DI MESSAGGI

CAPITOLO 7 - SCAMBIO DI MESSAGGI CAPITOLO 7 - SCAMBIO DI MESSAGGI Lo scambio di messaggi è una forma di comunicazione nel quale un processo richiede al sistema operativo di mandare dei dati direttamente ad un altro processo. In alcuni

Dettagli

10.1. Un indirizzo IP viene rappresentato in Java come un'istanza della classe InetAddress.

10.1. Un indirizzo IP viene rappresentato in Java come un'istanza della classe InetAddress. ESERCIZIARIO Risposte ai quesiti: 10.1. Un indirizzo IP viene rappresentato in Java come un'istanza della classe InetAddress. 10.2. Un numero intero in Java è compreso nell'intervallo ( 2 31 ) e (2 31

Dettagli

Elementi di semantica operazionale

Elementi di semantica operazionale Elementi di semantica operazionale 1 Contenuti sintassi astratta e domini sintattici un frammento di linguaggio imperativo semantica operazionale domini semantici: valori e stato relazioni di transizione

Dettagli

Sistemi Operativi. Lezione 7 Comunicazione tra processi

Sistemi Operativi. Lezione 7 Comunicazione tra processi Lezione 7 Comunicazione tra processi Introduzione La soluzione sw al problema della mutua esclusione è abbastanza complessa Algoritmo di Peterson La soluzione hw mediante disabilitazione degli interrupt

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Dispensa E08 Soluzione Esercizi F. Gasparetti, C. Limongelli Marzo 2008 http://www.dia.uniroma3.it/~java/fondinf1/ Soluzione Esercizi

Dettagli

SAPIENZA Università di Roma Facoltà di Ingegneria

SAPIENZA Università di Roma Facoltà di Ingegneria SAPIENZA Università di Roma Facoltà di Ingegneria Tesina di Metodi formali nell ingegneria del software Autori: Piacentini Vanda - Rocco Germano Anno accademico 2006/2007 MODELLAZIONE DEL SISTEMA DI COMUNICAZIONE

Dettagli

La selezione binaria

La selezione binaria Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Introduzione L esecuzione di tutte le istruzioni in sequenza può non è sufficiente per

Dettagli

Il costrutto monitor [Hoare 74]

Il costrutto monitor [Hoare 74] Il monitor 1 Il costrutto monitor [Hoare 74] Definizione: Costrutto sintattico che associa un insieme di operazioni (entry, o public) ad una struttura dati comune a più processi, tale che: Le operazioni

Dettagli

Send/receive sincrona, assumendo che la condivisione avvenga mediante riferimenti logici coincidenti, invece che con capability.

Send/receive sincrona, assumendo che la condivisione avvenga mediante riferimenti logici coincidenti, invece che con capability. Implementazione delle primitive di comunicazione Send/receive sincrona, assumendo che la condivisione avvenga mediante riferimenti logici coincidenti, invece che con capability. Struttura dati canale {

Dettagli

Algebra Booleana 1 ALGEBRA BOOLEANA: VARIABILI E FUNZIONI LOGICHE

Algebra Booleana 1 ALGEBRA BOOLEANA: VARIABILI E FUNZIONI LOGICHE Algebra Booleana 1 ALGEBRA BOOLEANA: VARIABILI E FUNZIONI LOGICHE Andrea Bobbio Anno Accademico 2000-2001 Algebra Booleana 2 Calcolatore come rete logica Il calcolatore può essere visto come una rete logica

Dettagli

10 - Programmare con gli Array

10 - Programmare con gli Array 10 - Programmare con gli Array Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it

Dettagli

Le espressioni regolari.

Le espressioni regolari. Lezione 8 Le espressioni regolari. Le espressioni regolari. Corrispondenze e classi di caratteri. Le regular expressions (espressioni regolari) servono per descrivere dei modelli di stringa. E possibile

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E01 Esempi di programmi A. Miola Ottobre 2011 1 Contenuti Vediamo in questa lezione alcuni primi semplici esempi di applicazioni

Dettagli

Richiesta pagina PHP (es: index.php)

Richiesta pagina PHP (es: index.php) PHP PHP = personal home page SERVER Richiesta pagina PHP (es: index.php) Server Web (Apache) in ascolto sulla porta 80, si accorge che la pagina richiesta è una pagina PHP in base all'estensione o con

Dettagli

GESTIONE INFORMATICA DEI DATI AZIENDALI

GESTIONE INFORMATICA DEI DATI AZIENDALI GESTIONE INFORMATICA DEI DATI AZIENDALI Alberto ZANONI Centro Vito Volterra Università Tor Vergata Via Columbia 2, 00133 Roma, Italy zanoni@volterra.uniroma2.it Rudimenti di programmazione Programming

Dettagli

Linguaggio C - Funzioni

Linguaggio C - Funzioni Linguaggio C - Funzioni Funzioni: Il linguaggio C è di tipo procedurale; ogni programma viene suddiviso in sottoprogrammi, ognuno dei quali svolge un determinato compito. I sottoprogrammi si usano anche

Dettagli

Sincronizzazione e comunicazione tra processi in Unix. usati per trasferire ad un processo l indicazione che un determinato evento si è verificato.

Sincronizzazione e comunicazione tra processi in Unix. usati per trasferire ad un processo l indicazione che un determinato evento si è verificato. Processi parte III Sincronizzazione e comunicazione tra processi in Unix Segnali: usati per trasferire ad un processo l indicazione che un determinato evento si è verificato. Pipe: struttura dinamica,

Dettagli

Algebra Booleana ed Espressioni Booleane

Algebra Booleana ed Espressioni Booleane Algebra Booleana ed Espressioni Booleane Che cosa è un Algebra? Dato un insieme E di elementi (qualsiasi, non necessariamente numerico) ed una o più operazioni definite sugli elementi appartenenti a tale

Dettagli

JavaScript. crash course. by Stefano Burigat

JavaScript. crash course. by Stefano Burigat JavaScript crash course by Stefano Burigat Introduzione ECMAScript (no DOM e BOM, no ) Sintassi simile a Java Variabili definite tramite var, loosely typed, operatore comma (,) per separare definizioni

Dettagli

Internet Control Message Protocol ICMP. Struttura di un Messaggio ICMP. Segnalazione degli Errori

Internet Control Message Protocol ICMP. Struttura di un Messaggio ICMP. Segnalazione degli Errori I semestre 03/04 Internet Control Message Protocol ICMP Comunica messaggi di errore o altre situazioni che richiedono intervento Errore di indirizzo o di istradamento Congestione in un router Richiesta

Dettagli

IP Internet Protocol

IP Internet Protocol IP Internet Protocol Vittorio Maniezzo Università di Bologna Vittorio Maniezzo Università di Bologna 13 IP - 1/20 IP IP è un protocollo a datagrammi In spedizione: Riceve i dati dal livello trasporto e

Dettagli

Esercitazione. Formato di compitini e compiti: domande ed esercizi "closed book" G. Ferrari - Reti di calcolatori.

Esercitazione. Formato di compitini e compiti: domande ed esercizi closed book G. Ferrari - Reti di calcolatori. Esercitazione Formato di compitini e compiti: domande ed esercizi "closed book" Esercitazione - 1 Domanda 1 In una comunicazione di rete tra due host, quale è il client e quale è il server. Necessario:

Dettagli

I tipi di dato astratti

I tipi di dato astratti I tipi di dato astratti.0 I tipi di dato astratti c Diego Calvanese Fondamenti di Informatica Corso di Laurea in Ingegneria Elettronica A.A. 001/00.0 0 I tipi di dato astratti La nozione di tipo di dato

Dettagli

Il costrutto monitor [Hoare 74]

Il costrutto monitor [Hoare 74] Il monitor 1 Il costrutto monitor [Hoare 74] Definizione: Costrutto sintattico che associa un insieme di operazioni (entry o public) ad una struttura dati comune a più processi, tale che: Le operazioni

Dettagli

Blocchi funzione: FbModbusAsciiMs

Blocchi funzione: FbModbusAsciiMs Pagina 1 di 6 ELSIST Srl, www.elsist.it Blocchi funzione MNL041Q000 FbModbusAsciiMs Questo blocco funzione permette lo scambio di dati tra due sistemi, uno master ed uno slave, utilizzando una connessione

Dettagli

Algoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente.

Algoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente. Algoritmo Formalmente, per algoritmo si intende una successione finita di passi o istruzioni che definiscono le operazioni da eseguire su dei dati (=istanza del problema): in generale un algoritmo è definito

Dettagli

Laboratorio di Algoritmi e Strutture Dati

Laboratorio di Algoritmi e Strutture Dati Laboratorio di Algoritmi e Strutture Dati Docente: Camillo Fiorentini 18 dicembre 2007 Esercizio 1: rappresentazione di una tabella di occorrenze L obiettivo è quello di rappresentare in modo efficiente

Dettagli

Comunicazione tra Processi

Comunicazione tra Processi Comunicazione tra Processi Comunicazioni in un Sistema Distribuito Un sistema software distribuito è realizzato tramite un insieme di processi che comunicano, si sincronizzano, cooperano. Il meccanismo

Dettagli

Comunicazione tra Processi

Comunicazione tra Processi Comunicazione tra Processi Comunicazioni in un Sistema Distribuito Un sistema software distribuito è realizzato tramite un insieme di processi che comunicano, si sincronizzano, cooperano. Il meccanismo

Dettagli

www.mtcube.com Manuale di ASP

www.mtcube.com Manuale di ASP Manuale di ASP Sommario degli argomenti Che cosa sono le Active Server Pages... 3 Struttura, creazione ed esecuzione della pagina Asp... 3 Variabili e tipi di dati... 4 Numero Intero... 4 Numeri in virgola

Dettagli

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati Condizione di sincronizzazione Qualora si voglia realizzare una determinata politica di gestione delle risorse,la decisione se ad

Dettagli

Introduzione ai Metodi Formali

Introduzione ai Metodi Formali Intruzione ai Meti Formali Sistemi software anche molto complessi regolano la vita quotidiana, anche in situazioni life-critical (e.g. avionica) e business-critical (e.g. operazioni bancarie). Esempi di

Dettagli

SMS IN. Rules SMS IN. Rules. Geodrop. Geodrop

SMS IN. Rules SMS IN. Rules. Geodrop. Geodrop SMS IN Rules SMS IN Rules } Geodrop Geodrop SMS In 2.3 Regole per la manipolazione dei messaggi Guida alla scrittura di condizioni complesse Guida alle condizioni complesse v1.0-it, 7 Dicembre 2012 Indice

Dettagli

Tipicamente un elaboratore è capace di trattare domini di dati di tipi primitivi

Tipicamente un elaboratore è capace di trattare domini di dati di tipi primitivi TIPI DI DATO Tipicamente un elaboratore è capace di trattare domini di dati di tipi primitivi numeri naturali, interi, reali caratteri e stringhe di caratteri e quasi sempre anche collezioni di oggetti,

Dettagli

JAVASCRIPT. Tale file è associato alla pagina web mediante il tag