Corso di Linguaggi di Programmazione



Documenti analoghi
Corso di Linguaggi di Programmazione

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

Il costrutto monitor [Hoare 74]

Il problema del produttore e del consumatore. Cooperazione tra processi

Modello a scambio di messaggi

CAPITOLO 24 I MONITOR

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati

MODELLO AD AMBIENTE GLOBALE

Il costrutto monitor [Hoare 74]

Corso di Linguaggi di Programmazione

Il descrittore di processo (PCB)

Monitor. Introduzione. Struttura di un TDA Monitor

Informatica 3. Informatica 3. LEZIONE 6: Il controllo dell esecuzione. Lezione 6 - Modulo 1. Errori durante l esecuzione. Il controllo dell esecuzione

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

Riferimenti ed Oggetti

GESTIONE INFORMATICA DEI DATI AZIENDALI

Introduzione ai Metodi Formali

Java Virtual Machine

FONDAMENTI di INFORMATICA L. Mezzalira

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

I THREAD O PROCESSI LEGGERI Generalità

La Gestione delle risorse Renato Agati

Capitolo 7: Sincronizzazione

CAPITOLO 27 SCAMBIO DI MESSAGGI

LA SINCRONIZZAZIONE TRA PROCESSI

Pronto Esecuzione Attesa Terminazione

Lezione 8. La macchina universale

Computazione multi-processo. Condivisione, Comunicazione e Sincronizzazione dei Processi. Segnali. Processi e Threads Pt. 2

dall argomento argomento della malloc()

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione.

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

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Coordinazione Distribuita

Operazioni di Comunicazione di base. Cap.4

Algebra Booleana ed Espressioni Booleane

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a prof.

Scheduling della CPU. Sistemi multiprocessori e real time Metodi di valutazione Esempi: Solaris 2 Windows 2000 Linux

10 - Programmare con gli Array

GESTIONE DEI PROCESSI

Architetture software

SISTEMI OPERATIVI. Sincronizzazione in Java (Monitor e variabili condizione in Java)

LINGUAGGI DI PROGRAMMAZIONE

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Corso Analista Programmatore Web PHP Corso Online Analista Programmatore Web PHP

Funzioni in C. Violetta Lonati

Sistemi Operativi. Lezione 7 Comunicazione tra processi

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

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

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

Inizializzazione, Assegnamento e Distruzione di Classi

Programmazione concorrente in Java. Dr. Paolo Casoto, Ph.D

A. Carullo Introduzione a Visual Basic. Introduzione a

PRINCIPI DI SISTEMI OPERATIVI

Visual Basic.NET La Gestione degli Errori di Federico BARBATI

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Lezione 1 Introduzione

2.5. L'indirizzo IP identifica il computer di origine, il numero di porta invece identifica il processo di origine.

I file di dati. Unità didattica D1 1

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.

INFORMATICA GENERALE Prof. Alberto Postiglione Dipartimento Scienze della Comunicazione Università degli Studi di Salerno

Informatica 3. Informatica 3. LEZIONE 10: Introduzione agli algoritmi e alle strutture dati. Lezione 10 - Modulo 1. Importanza delle strutture dati

ESERCITAZIONE 5!! 7 dicembre 2016!! Programmazione concorrente in ADA!!

Variabili e tipi di dato

Oggetti Lezione 3. aspetti generali e definizione di classi I

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

DI D AGRA R MM M I M A BLOCC C H C I TEORI R A E D D E SERC R I C ZI 1 1

Corso di Sistemi Operativi Ingegneria Elettronica e Informatica prof. Rocco Aversa. Raccolta prove scritte. Prova scritta

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

Introduzione. Coordinazione Distribuita. Ordinamento degli eventi. Realizzazione di. Mutua Esclusione Distribuita (DME)

Sequence Diagram. Catia Trubiani. Laboratorio di Ingegneria del Software a.a

T E O R I A D I P R O G E T T A Z I O N E D E L S O F T W A R E

Esempio produttori consumatori. Primitive asincrone

Java:Struttura di Programma. Fabio Scanu a.s. 2014/2015

Il software di base comprende l insieme dei programmi predisposti per un uso efficace ed efficiente del computer.

Corso di Laurea in INFORMATICA

Tecnologie di Sviluppo per il Web

Corso di Informatica

Programmazione a Oggetti Lezione 10. Ereditarieta

Il Sistema Operativo

Allocazione dinamica della memoria - riepilogo

Informatica 3. LEZIONE 21: Ricerca su liste e tecniche di hashing. Modulo 1: Algoritmi sequenziali e basati su liste Modulo 2: Hashing

I Thread. I Thread. I due processi dovrebbero lavorare sullo stesso testo

INFORMATICA 1 L. Mezzalira

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

Progettazione di Basi di Dati

Utilizzo del linguaggio Basic utilizzando l interfaccia di Excel Silvia Patacchini

Replicazione. Requisisti di consistenza i clienti devono ricevere risposte consistenti e coerenti. Motivazioni

Informatica per la comunicazione" - lezione 13 -

Inter Process Communication. Laboratorio Software C. Brandolese

L API socket ed i daemon

13. Chain of Responsibility

Java: Compilatore e Interprete

Sistemi Operativi (modulo di Informatica II)

RMI Remote Method Invocation

Introduzione a Visual Basic Lezione 1 Concetti base e istruzioni condizionali

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Sequence Diagram e Collaboration Diagram

Transcript:

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 concetti di data abstraction anche in questo contesto incapsulare strutture dati (o ADT) condivisi. simili strutture ( ADT sincronizzati ) vengono detti monitor. in un monitor ci può essere al più un task attivo (ready o running)

Concurrent Pascal Concurrent Pascal: task process (che è un tipo) type process_name = process (formal parameters) -- local declarations -- -- process body -- end una variabile di tipo process può essere allocata staticamente o dinamicamente la dichiarazione crea semplicemente il codice, l allocazione avviene tramite l istruzione init init process_variable_name (actual parameters) ed il task diventa ready.

Concurrent Pascal monitor gestiti in modo simile ad ADT type monitor_name = monitor (parametri formali) -- dichiarazione variabili condivise -- -- definizione procedure locali (private) -- -- definizione procedure esportate (public) -- -- inizializzazione -- end procedure esportate sono identiche a quelle locali, ma marcate con la parola chiave entry

Synchronization Competition synchronization: safe ed automaticamente garantita dal monitor. Cooperation synchronization: deve essere gestita con costrutti a parte. Concurrent Pascal ha un tipo queue, che ammette due operazioni delay(queue): mette il chiamante in attesa sulla coda specificata e libera il monitor continue(queue): disconnette il chiamante dal monitor; se la coda specificata è non vuota, riattiva un processo della coda specificata (altrimenti non ha effetto) N.B. delay() e continue() hanno un comportamente diverso da P() e V().

Valutazione Meccanismo più rigido, ma più sicuro (meno parallelismo) Gestione safe di competition synchronization Stessi problemi di P() e V() per cooperation synchronization

Esercizio: Implementare un buffer condiviso, utilizzando monitor e garantendo cooperation e competition synchronization (pseudo-codice concurrent pascal ) codice monitor ( server ) codice produttore codice consumatore

Sincronizzazione in ambiente distribuito funzionano bene se ho memoria condivisa (code ecc.) In ambiente distribuito, i monitor si adattano male è invece naturale progettare un meccanismo basato su scambio di messaggi

Guarded commands Proposito storico (Dijkstra 75): programmazione che assicuri correttezza durante lo sviluppo anziché ricorrere a testing. Es: costrutto di selezione: if <espr. booleana> -> <istruzione> [] <espr. booleana> -> <istruzione> []... [] <espr. booleana> -> <istruzione> fi [] è detto fatbar e permette la concatenazione delle clausole semanticamente diverso dalla selezione multipla (case): tutte le espressioni booleane sono valutate simultaneamente durante l esecuzione se più di una è vera, ne viene scelta una in modo non-deterministico, se nessuna è vera, c è errore a runtime ed il programma è terminato

Nota in modo analogo, possono essere definiti cicli do <espr. booleana> -> <istruzione> [] <espr. booleana> -> <istruzione> []... [] <espr. booleana> -> <istruzione> od La verifica della correttezza di un programma è più semplice se si utilizzano solo cicli e selezione, oppure solo guarded commands.

Scambio di messaggi sincrono... tasks are often busy and, when busy, are unwilling to be interrupted by other units. (R. Sebesta) Ci sono due tipi di costrutti linguistici: costrutti per l invio di messaggi costrutti per specificare che il ricevente è in attesa di ricevere messaggi lo scambio effettivo di informazioni è detto rendezvous, e può avvenire anche bidirezionalmente.

Esempio: Tasks in ADA (main tasks.adb) Actor e Server in ADA (consumerpackage, producerpackage)

Accept con guardia Ogni accept può avere una clausola when associata (guardia). when not Full ( Buffer ) => accept Deposit ( New_Value ) do accept con when può essere aperta (se la condizione è vera) o chiusa (se la condizione è falsa)

Cooperation synchronization cooperation synchronization: può essere ottenuta combinando select e accept con guardia, ed utilizzando un task per la sincronizzazione: es put() e get() loop select when Filled < Bufsize => accept Put( v : in Integer) do... end Put; or when Filled > 0 => accept Get( v : out Integer) do... end Get; end select; end loop;

Competition synchronization competition synchronization:può essere ottenuta incapsulando le strutture dati a cui garantire l accesso esclusivo all interno di un task server : task Buffer_Server is entry Put( v : in Integer); entry Get( v : out Integer ); end Buffer_Server; task body Buffer_Server is size : constant Integer := 100; buffer : array (1.. size) of Integer; filled : Integer range 0.. size := 0; begin... end Buffer_Server;

Esempio Produttore e consumatore in ADA (Sebesta pagg. 520 521) ada prod cons

Valutazione In ambiente distribuito, i monitor non possono essere gestiti in modo naturale, lo scambio di messaggi sì In ambiente non distribuito, lo scambio di messaggi è a metà strada tra monitor e semafori: safe per competition synchronization unsafe per cooperation synchronization (ma meno dipendente dal corretto utilizzo)

Scambio di messaggi asincrono Buona programmazione concorrente significa anche sfruttare il parallelismo: Caso semplice di asincronia: accesso a procedure o funzioni non sincronizzate Altro caso di asincronia: un task lancia un altro task, che svolge un particolare calcolo indipendentemente Infine: l esecuzione di un task può essere interrotta da un evento: asynchronous select in ADA Esempio pag. 524 Sebesta

Semafori I task ADA possono essere utilizzati per implementare semafori... Esercizio: implementare i semafori in ADA

Oggetti protetti ADA ha un altro costrutto per gestire la concorrenza: gli oggetti protected ogni oggetto protected ha variabili, funzioni e procedure fornisce accesso mutuamente esclusivo alle procedure, che hanno la possibilità di effettuare letture e scritture sulle variabili dell oggetto fornisce accesso concorrente alle funzioni, che hanno la possibilità di accedere solo in lettura alle variabili dell oggetto Esempio: pag 523 Sebesta

Priorità e terminazione Un task è completato quando il suo thread di controllo ha raggiunto la fine del corpo del codice I task ADA terminano Quando sono completati, e tutti i sotto-task (i task dipendenti) sono terminati Aspettando ad una clausola terminate è possibile associare una priorità ad ogni task, utilizzando la direttiva pragma: pragma Priority(<espressione>); -- ad esempio pragma Priority(System.Priority Last);

Esercizi: Implementare un buffer condiviso, utilizzando monitor e garantendo cooperation e competition synchronization (pseudo-codice) codice monitor ( server ) codice produttore codice consumatore implementare i semafori in ADA