ESERCITAZIONE 6 12 dicembre Soluzione

Documenti analoghi
Corso di Linguaggi di Programmazione

SCD. Criteri di sincronizzazione. Criteri di sincronizzazione. Criteri di valutazione 2. Criteri di valutazione 1. Condizioni di sincronizzazione 1

progam ponteasensounicoalaternato ; type dir = ( nord, sud );

Esercizio di Sincronizzazione tra Processi: Ponte a Senso Unico Alternato con Capacità Limitata

Informatica 3 secondo recupero 13 Settembre 2002

Operazioni scatenanti. Nozione ed uso. Sintassi. Esempio

* Costrutto linguistico che incapsula la sincronizzazione di mutua esclusione all interno della definizione della risorsa (Brinch Hansen, Hoare)

Nozione ed uso. Operazioni eseguite automaticamente ogni volta che avviene un certo evento Uso:

SQL. Laboratorio di Progettazione di Basi di Dati (CdS in Informatica e TPS)

Basi di Dati: Corso di laboratorio

Esercitazione 3 Monitor. 22 Novembre 2012

Array in Fortran 90. Ing. Luca De Santis. Anno accademico 2006/2007. DIS - Dipartimento di informatica e sistemistica

DAL DIAGRAMMA AL CODICE

interfacciamento statico e dinamico analisi di interconnessioni, driver e receiver

Il sistema informativo deve essere di tipo centralizzato e accessibile mediante un computer server installato nella rete locale dell albergo.

ES IS ORIGINAL COMPRESSORSS

Un linguaggio per la descrizione dello hardware: il VHDL

Esercitazioni di Informatica 3

3. La sintassi di Java

SCD. Eratostene distribuito. Sistemi distribuiti: il modello di distribuzione in Ada. Architettura del sistema. Algoritmo distribuito 1

Costrutti condizionali e iterativi

LA REALIZZAZIONE DI APPLICAZIONI ALCUNE ARCHITETTURE

Permutazioni e Gioco del 15. Dott.ssa Giovanna Rosone

LA REALIZZAZIONE DI APPLICAZIONI. Quattro parti: Gestione dati. Business rules. Logica applicativa. Interfaccia utente. Molte possibili architetture

PRINCIPI DI SISTEMI OPERATIVI

Linee guida per la programmazione di transazioni in PL/SQL

Introduzione alla Programmazione e Applicazioni per la Finanza M2 (Prodotti Derivati) Lezione 10

2.1.1 Spuntini freschi dal gusto dolce

Corso di Laurea in INFORMATICA

Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software

Addizione tra numeri binari

Verifica parte IIA. Test (o analisi dinamica) Mancanza di continuità. Esempio

Procedure memorizzate SQL-2003/PSM. Forma base di PSM. Parametri in PSM

CAPITOLO 17 PROBLEMI DEL PRODUTTORE/CONSUMATORE v1

SQL non è solo un linguaggio di interrogazione (Query Language), ma. Un linguaggio per la definizione di basi di dati (Data-definition language (DDL))

SQL PER LA DEFINIZIONE DI BASI DI DATI

TELECAMERE IP SERIE EASY. Leggere questo manuale prima dell uso e conservarlo per consultazioni future

Basi di Dati. S Q L Lezione 5

VBA Principali Comandi

Calcolatori Elettronici M Modulo Linguaggio VHDL Parte 1/2

Anno scolastico INFORMATICA. 2. Conoscere e classificare il software

Introduzione. Dicom in Oracle 11g: gestione e vantaggi

PL/SQL PL/SQL. Ordine degli elementi dei triggers di Oracle. Differenze nei triggers. Versione dei trigger e PSM di Oracle

Basi di dati (6) Docente: Andrea Bulgarelli. Università di Modena e Reggio Emilia. andrea.bulgarelli@gmail.com Argomento: T-SQL (1.

Fortran per Ingegneri

Esame Informatica Generale 13/04/2016 Tema A

1. ALLEGATO AL REGOLAMENTO COPPA DEL MONDO DELLA GELATERIA 2014

2.2 Atlante fotografico

Introduzione al VHDL. Alcuni concetti introduttivi

Facoltà di Ingegneria Corso di Studi in Ingegneria Informatica. Metodologie e strumenti per il reengineering del workflow management

Visual basic base Lezione 13. Ancora su ListBox e cicli

Prof. Giuseppe Chiumeo. Avete già studiato che qualsiasi algoritmo appropriato può essere scritto utilizzando soltanto tre strutture di base:

Lezione 5. La macchina universale

Selezioni di Istituto per le Olimpiadi dell Informatica

OGGETTO RANGE DI CELLE. Una cella o un gruppo di celle in un foglio di lavoro di Excel è un oggetto di tipo Range.

STUDIO. Esercizi proposti a lezione cap. 3 rev. dic da Ulmann, Widom Introduzione ai database. indirizzo. titolo. nome. recitain. attori.

CAPITOLO 22 PROBLEMA DEL PRODUTTORE/CONSUMATORE

Christian Pilato

Capitolo 7 I puntatori in C

29/02/2016. How to Access MyEconLab. Getting started: XL2A-41W1-901Z-4NT2. (included with your textbook) (Scienze e tecn. Ristorazione) 1.

Esercitazione 2 Classificazione dei Temi

APPUNTI SUL LINGUAGGIO DI PROGRAMMAZIONE PASCAL

TRIGGER Regole Attive (Trigger) OLD_TABLE NEW_TABLE old new

Fondamenti di Programmazione. Strutture di controllo

Linguaggio Macchina. Linguaggio Macchina. Linguaggio Macchina. Linguaggio Macchina ADD A,B ISTRUZIONE SUCCESSIVA

Argomenti Corso SAP Online ABAP Completo

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007

Progetto Lauree Scientifiche Liceo Classico L.Ariosto, Ferrara Dipartimento di Matematica Università di Ferrara 24 Gennaio 2012

Stored Procedures. Antonella Poggi, Claudio Corona. Dipartimento di informatica e Sistemistica SAPIENZA Università di Roma

Viene richiesto di MIN CARD(S,E) = 1 UPDATE DELETE MAX CARD(S,E) = 3 INSERT UPDATE

5 Array Cicli iterativi Contenuto di cella 28/02/2014 Copyright V. Moriggia 1

ITALIANO - WINDOWS XP

Modello a scambio di messaggi

Le Basi di Dati Attive

La gestione dei processi in Minix

Processi, Threads e Agenti

Problema 6 * * * x = numero di cassonetti di tipo A y = numero di cassonetti di tipo B f(x, y) = 500x + 600y da massimizzare Vincoli:

STRINGHE IN JAVA In Java, le stringhe non sono pezzi di memo-ria con dentro dei caratteri, come in C: sono oggetti appartenenti alla classe

Break del prezzo di un insieme di 4 candele.

Unità 2: Presentazione per "I giorni di scuola" Produce a multimedia rich presentation on school life in the United States and Italy.

Algoritmo basato su cancellazione di cicli

Fattoria didattica Il Giardino dei sapori

PROCEDURA DI INSTALLAZIONE E ATTIVAZIONE DI DARWEB PRO versione 1.0

28/02/2014 Copyright V. Moriggia

Elettronica dei Sistemi Programmabili A.A Microcontrollori. Introduzione allo sviluppo di progetti

SQL: Structured Query Language. T. Catarci, M. Scannapieco, Corso di Basi di Dati, A.A. 2008/2009, Sapienza Università di Roma

RICERCA OPERATIVA. Tema d esame del 04/03/2008 (Simulazione)

Stored Procedures. Massimo Mecella Dipartimento di Ingegneria informatica automatica e gestionale Antonio Ruberti Sapienza Università di Roma

Reti Logiche A. Introduzione al VHDL

Esempio: la Toilette Unisex

Installazione interfaccia e software di controllo mediante PC Installing the PC communication interface and control software

Comune di Molinella Provincia di Bologna DISCIPLINARE DI PRODUZIONE DEL PANONE DI MOLINELLA

VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole.

Suggerimenti per lo Sviluppo delle Applicazioni con PL/SQL. Simona Rotolo

Oracle PL/SQL. Motivazioni

Basi di Dati Esercitazione per la II prova intermedia 2013

Visual Basic For Application Guida Pratica per Esempi

Esame di Informatica Generale 25 giugno 2012 Professori: Carulli, Fiorino. Docente Risultati Scritto Fiorino Carulli

Esercitazione n.1 13 Ottobre Obiettivi:

Azioni. Select e join non consentono di modificare il contenuto del DB. Inserzione di nuovi dati. Azioni desiderate. Aggiornamento di dati

Transcript:

ESERCITAZIONE 6 12 dicembre 2013 Soluzione 1

Politiche basate su priorità: necessità di selezionare la richieste da servire Vettore delle operazioni di servizio: Family of entries Es. 2 livelli di priorità P1 e P2 Il gestore di una risorsa deve servire prima le richieste di priorità P1, poi P2, e per ultima, P3. type prio is(p1, P2); task type server is entry richiesta(prio) (<parametri formali>);.. end server; 2

Struttura server Primo metodo: usare il connettore else all interno di select (possibilità di innestare select): select accept richiesta(p1) else select accept richiesta(p2) else select accept richiesta(p3) or delay 1.0; end select; end select; end select; 3

Struttura server Secondo metodo (consigliato): usare l attributo COUNT (applicabile alle entries). Ad esempio: Richiesta(P1) COUNT Restituisce il numero di richieste pendenti relative alla entry Richiesta(P1). SCHEMA da seguire: select accept richiesta(p1) do.. end; or when richiesta(p1) COUNT=0 => accept richiesta(p2) do.. end; or when richiesta(p1) COUNT=0 and richiesta(p2) COUNT=0 => accept richiesta(p3) do.. end; end select; 4

Esercizio Si consideri il laboratorio di un azienda artigianale che produce dolci. L azienda è specializzata nella produzione di torte; in particolare, i tipi di torte prodotti sono 2: Torta al cioccolato, Crostata alla marmellata. Le torte vengono vendute in scatole pre-confezionate. L azienda commercializza 3 tipi di confezioni: confezione semplice Cioccolato, contenente 1 torta al cioccolato; confezione semplice Marmellata, contenente 1 crostata. Confezione multipla Famiglia, contenente 1 torta al cioccolato e 1 crostata. 5

Nel laboratorio dell azienda vi è un tavolo per il deposito delle torte in attesa di essere confezionate al quale accedono: gli operai dedicati alla produzione (OP), che accedono ciclicamente al tavolo per depositarvi ogni torta appena sfornata; ogni OP deposita sul tavolo 1 torta alla volta. gli operai dedicati alle confezioni (OC), ognuno dedicato alla confezione di scatole di un tipo predefinito dato (Cioccolato, Marmellata o Famiglia); essi accedono ciclicamente al tavolo per prelevare la/le torte necessaria/e a realizzare la confezione del tipo assegnato. Il tavolo ha una capacità massima pari a MaxC, costante che esprime il massimo numero di torte che possono stare contemporaneamente su di esso. 6

Si sviluppi un applicazione distribuita ADA, che rappresenti operai (clienti) e gestore del tavolo(server) con task concorrenti. L applicazione deve realizzare una politica di gestione del tavolo che soddisfi i vincoli dati e che, inoltre, soddisfi i seguenti vincoli di priorità: tra gli operai OP: i portatori di crostate siano favoriti rispetto ai portatori di torte al cioccolato; tra gli operai OC: gli operai dedicati alla confezione di scatole Famiglia siano favoriti rispetto a quelli dedicati alle scatole semplici (Cioccolato, Marmellata); inoltre, tra gli OC dedicati alle confezioni semplici, venga data priorità alle confezioni Marmellata. 7

Impostazione server: famiglie di entries type torta is (cioccolata, marmellata); type confezione is (cioc, marm, family); task type server is entry deposito(torta) (<par. formali>); entry prelievo(confezione) (<par. formali>); end server; S: server; 8

Impostazione clienti OP/OC type cliente_id is range 1..10; task type clienteop (ID: cliente_id; T:torta); task body clienteop is begin S. deposito(t)(id); end; task type clienteoc(id: cliente_id; C:confezione); task body clienteoc is begin S. prelievo(c)(id); end; 9

Politica E realizzata all interno del server: task body server is <variabili locali per rappr. Stato risorsa> begin <INIZIALIZZAZIONI> loop select <accettazione/definizione entries> end select: end loop; end server; 10

Soluzione Completa with Ada.Text_IO, Ada.Integer_Text_IO; use Ada.Text_IO, Ada.Integer_Text_IO; procedure torte is type clienteop_id is range 1..10; type clienteoc_id is range 1..4; type torta is (cioccolato, marmellata); type confezione is (cioc, marm, family); task type clienteop (ID: clienteop_id; T:torta); task type clienteoc (ID: clienteoc_id; C:confezione); type acop is access clienteop; type acoc is access clienteoc; task type server is entry deposito(torta) (ID:clienteOP_ID); entry prelievo(confezione) (ID:clienteOC_ID); end server; 11

S: server; -- definizione task server: task body server is MAX : constant INTEGER := 18; -- capacita' tavolo sultavolo: array(torta'range) of Integer; begin Put_Line ("SERVER iniziato"); --INIZIALIZZAZIONI: for i in torta'range loop sultavolo(i):=0; end loop; delay 2.0; -- continua.. 12

loop select -- deposito crostata: or when sultavolo(marmellata)+sultavolo(cioccolato)<max and sultavolo(marmellata) < MAX-1 => accept deposito(marmellata) (ID: in clienteop_id ) do sultavolo(marmellata):=sultavolo(marmellata)+1; end; -- deposito cioccolato: when sultavolo(marmellata)+sultavolo(cioccolato)<max and sultavolo(cioccolato) < MAX-1 and deposito(marmellata)'count=0 => accept deposito(cioccolato) (ID: in clienteop_id ) do sultavolo(cioccolato):=sultavolo(cioccolato)+1; end; -- CONTINUA.. 13

or -- prelievo family: when sultavolo(marmellata) >=1 and sultavolo(cioccolato) >=1 => accept prelievo(family) (ID: in clienteoc_id ) do sultavolo(marmellata):=sultavolo(marmellata)-1; sultavolo(cioccolato):=sultavolo(cioccolato)-1; end; or -- prelievo marmellata: when sultavolo(marmellata) >=1 and prelievo(family)'count=0 => accept prelievo(marm) (ID: in clienteoc_id ) do sultavolo(marmellata):=sultavolo(marmellata)-1; end; or -- prelievo cioccolato when sultavolo(cioccolato) >=1 and prelievo(family)'count=0 and prelievo(marm)'count=0=> accept prelievo(cioc) (ID: in clienteoc_id ) do sultavolo(cioccolato):=sultavolo(cioccolato)-1; end; end select; end loop; end; -- fine task server 14

-- definizione task clienti: task body clienteop is begin end; S. deposito(t)(id); task body clienteoc is begin S. prelievo(c)(id); end; 15

-- main : NewOP: acop; NewOC: acoc; begin -- equivale al main for I in clienteop_id'range loop -- ciclo creazione task OP NewOP := new clienteop (I, cioccolato); NewOP := new clienteop (I, marmellata); end loop; for I in clienteoc_id'range loop -- ciclo creazione task OC NewOC := new clienteoc (I, cioc); NewOC := new clienteoc (I, marm); NewOC := new clienteoc (I, family); end loop; end torte; -- fine programma 16