Programmazione Concorrente e Distribuita

Slides:



Advertisements
Presentazioni simili
Meccanismi di IPC Problemi classici di IPC
Advertisements

Tipi di dato astratti Lista, Pila, Coda, Albero.
Le funzioni UD. 8 – Lorganizzazione dei programmi p. 309 LS Tron 4TC 06/07.
PHP.
Type Checking (1° parte)
Java: programmazione concorrente con condivisione di memoria
Algoritmi e Programmazione
Classi ed Oggetti in Java (Cenni). Richiami Ruolo delle Classi in Java Oggetti.
LIP: 4 Aprile 2008 ECCEZIONI. Eccezioni Come si definiscono eccezioni Come si lanciano Come si gestiscono (gestione esplicita o di default)
Le gerarchie di tipi.
Esercitazione Frame. Argomento Realizzazione di un tipo di dato astratto Usare le eccezioni per segnalare situazioni particolari Invariante e funzione.
LIP: 19 Aprile Contenuto Soluzione Compitino Tipo di dato MultiSet, estensione con sottoclasse.
Fondamenti di Informatica
Programmazione Concorrente
Sincronizzazione fra processi
Sincronizzazione di processi
Tipi di dato e controllo del flusso Dott. Ing. Leonardo Rigutini Dipartimento Ingegneria dellInformazione Università di Siena Via Roma 56 – – SIENA.
Informatica 2. Concetti fondamentali di programmazione Programmare vuol dire scrivere un algoritmo in un linguaggio che faccia funzionare un calcolatore.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
1 Corso di Informatica (Programmazione) Lezione 11 (19 novembre 2008) Programmazione in Java: controllo del flusso (iterazione)
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Specifiche senza JML: uso delle asserzioni. 2 Asserzioni in Java Dal jdk 1.4 (da Febbraio 2002) cè meccanismo per gestire asserzioni Asserzione: espressione.
Gestione dei processi Un sistema operativo multitasking è in grado di gestire più processi Un processo corrisponde ad un programma in esecuzione. Un programma.
Progettazione dei Sistemi Interattivi (a.a. 2004/05) - Lezione 6 1 Programmi concorrenti: quanto è lungo un millisecondo? In un normale personal computer.
Sincronizzazione dei Processi
Oggetti e dati primitivi
Selezione (=scelta) con “if-else”
CAPITOLO 4 LINGUAGGIO JAVA: COSTRUTTI DI BASE. ALFABETO Java adotta la codifica standard Unicode della società Unicode, Inc. (ftp://ftp.unicode.org) definito.
© CEFRIEL Concorrenza (cenni) Docente: Gabriele Lombardi
nome: sequenza di caratteri usata per denotare un oggetto
Sincronizzazione fra thread
Java base II: Strutture di Controllo
AN FI Un denominatoe comune Comandi u notazioni che esprimono azioni che, una volta eseguite, comportano una modifica permanente dello stato interno.
Corso di PHP.
Distributed File System Service Dario Agostinone.
JAVA Franco Bombi 8 ottobre FB Introduzione Java è un linguaggio di impiego generale, basato su classi e orientato agli oggetti Java.
1 Lucidi delle esercitazioni di Sistemi di Elaborazione in Rete Università degli Studi della Calabria Corso di Laurea in Ingegneria Informatica A.A. 2003/2004.
Corso di “Programmazione a oggetti” Programmazione concorrente
I metodi F. Bombi Campi e metodi Abbiamo visto che una classe può contenere – Campi – Metodi stato I campi sono utilizzati per memorizzare.
Sincronizzazione dei processi
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
Concorrenza 1 Conto corrente Nella famiglia Giambietti non ci sono grossi problemi economici. Infatti il padre, Enea, di professione artista free-lance,
L’iterazione while La sintassi è la seguente: while (condizione) {
JavaScript Generalità Cos'è JavaScript?
Sintassi: Programma e classi Program::=prog {ClassDeclList {StatList}} ClassDeclList::=ClassDecl ClassDeclList |  ClassDecl::=class Ide c [StaticMetDefList]
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Corso JAVA Lezione n° 03 Istituto Statale di Istruzione Superiore “F. Enriques”
Introduzione a Javascript
Heap concetti ed applicazioni. maggio 2002ASD - Heap2 heap heap = catasta condizione di heap 1.albero binario perfettamente bilanciato 2.tutte le foglie.
Esercitazione su Vector. Permette di definire collezioni di dati generiche, che sono in grado di memorizzare elementi di ogni sottotipo di Object Definito.
Architettura dei Sistemi Operativi
1 Eccezioni in Java. 2 Ricordiamo che 4 una procedura può terminare –normalmente, ritornando un risultato –in modo eccezionale ci possono essere diverse.
Gestione dei thread in Java
1 Processi e Thread Meccanismi di IPC (2) Problemi classici di IPC.
1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
Nucleo di Java: Struttura e Semantica Espressioni Assegnamento Controllo di sequenza Dichiarazioni.
Processi e Thread Processi Thread
LIP: 22 Marzo 2005 Eccezioni. Eccezioni-Richiami Come si definiscono eccezioni Come si lanciano Come si gestiscono (gestione esplicita o di default)
1 Elementi di programmazione concorrente in Java: i threads.
Classi ed Oggetti in Java (Cenni). Richiami Cenni sull’ Implementazione, Macchine Astratte, Compilatore, Interprete Ruolo delle Classi in Java Oggetti.
LIP: 11 Maggio 2007 Classi Astratte. Cos’e’ una Classe Astratta una classe astratta e’ un particolare tipo di classe permette di fornire una implementazione.
Esercitazione 14 Marzo Esercizio dell’altra volta Definire un tipo di dato Abbonato i cui oggetti descrivono le informazioni relative ad un abbonato.
Introduzione a Java. Java Linguaggio Object-Oriented La maggior parte dei dati manipolati dai programmi e’ contenuta in oggetti La principale forma di.
LIP: 15 Marzo 2005 Vettori di interi. Esercizio proposto Definire una classe VectorInt i cui oggetti sono vettori omogenei di interi ordinati in modo.
Priorità e Sincronizzazione tra Threads. Priorità e preemption Java non garantisce la preemption Lo scheduling avviene in base all’algortimo Highest Priority.
Lezione 2 : Basi del linguaggio Variabili. Come visto nella lezione 1 le classi registrano il proprio stato nelle variabili  int cadenza = 0;  int velocita.
Basi di Java Strutture base di Java. Basi di java ▪Variabili ▪Operatori ▪Condizioni e Cicli ▪Array.
Introduzione alle Classi e agli Oggetti in Java 1.
13. Strutture dati dinamiche Ing. Simona Colucci Informatica - CDL in Ingegneria Industriale- A.A
1 MODULO STRUTTURE DATI FONDAMENTALI: Strutture dinamiche classe 4° INDUSTRIALE INFORMATICA Focus on.
Transcript della presentazione:

Programmazione Concorrente e Distribuita Linguaggi costrutti memoria comune

Programmazione Concorrente e Distribuita Concurrent Pascal (75-77) linguaggio soprattutto didattico tre tipi di moduli: processi classi monitor Modula e Modula 2 (77-82) linguaggio per applicazioni in tempo reale modulare creazione dinamica di processi monitor (interface module) coroutine PCD 2006-2007 Linguaggi e concorrenza

Programmazione Concorrente e Distribuita Mesa (77) linguaggio per pprogrammazione di sistemi creazione dinamica di processi (fork) coroutine monitor Edison (83) linguaggio per applicazioni in tempo reale processi (cobegin/coend) regioni critiche condizionali PCD 2006-2007 Linguaggi e concorrenza

Programmazione Concorrente e Distribuita Costrutti monitor in linguaggi di programmazione Ada La programmazione dei monitor e’ semplificata con l’uso di oggetti protetti Si puo’ accedere ad un oggetto protetto sono eseguite tramite entry e procedure . Tutte saranno garantite in M.E. in M.E. Non esistono condition ma barriere (del tipo when B) Le barriere si possono usare solo nelle entry Le barriere devono dipendere solo da variabili condivise I processi che si bloccano su una barriera vengono memorizzati in una coda FIFO (ricordando anche la condizione B) Il processo che lascia l’oggetto protetto testa la condizione dei processi bloccati PCD 2006-2007 Linguaggi e concorrenza

Problema Lettori Scrittori in Ada con oggetti protetti protected RW is entry StartRead; procedure EndRead; entry Startwrite; procedure EndWrite; private Readers: Natural :=0; Writing: Boolean := false; end RW; protected body RW is entry StartRead when not Writing is begin Readers := Readers + 1; end StartRead; procedure EndRead is begin Readers := Readers - 1; end EndRead; entry StartWrite when not Writing and Readers = 0 is Writing := true; end StartWrite; procedure EndWrite is Writing := false; end EndWrite; end RW; PCD 2006-2007 Linguaggi e concorrenza

Linguaggi e concorrenza Monitor in Java In Java non esiste un costrutto predefinito monitor ma e’ possibile costruire un oggetto analogo al costrutto monitor, utilizzando: metodi synchronized wait (blocca il processo rilasciando il lock) notify (analogo allo statement signal del monitor) notifyAll (sveglia tutti I processi bloccati sul monitor) PCD 2006-2007 Linguaggi e concorrenza

Linguaggi e concorrenza Monitor in Java class RWMonitor { volatile int readers = 0; volatile boolean writing = false; synchronized void StartRead() { while (writing) try { wait(); } catch(InterruptedException e) {} readers = readers + 1; notifyAll(); } synchronized void EndRead() { readers = readers - 1; if (readers == 0) notifyAll(); synchronized void StartWrite() { while(writing || (readers != 0)) try { wait(); }catch (InterruptedException e) {} writing = true; } synchronized void EndWrite() { writing = false; notifyAll(); PCD 2006-2007 Linguaggi e concorrenza