Corso di “Programmazione a oggetti” Programmazione concorrente

Slides:



Advertisements
Presentazioni simili
Meccanismi di IPC Problemi classici di IPC
Advertisements

Informatica Recupero debito quarto anno Terzo incontro.
Lez 4 (11/12)Elementi di Programmazione1 Istruzioni per il controllo del Flusso 2.
Linguaggi di programmazione
Java: programmazione concorrente con condivisione di memoria
Il problema dello stallo
Gestione del processore
1 Processi e Thread Meccanismi di IPC, Inter Process Communication (1)
1 Processi e Thread Meccanismi di IPC (1). 2 Comunicazioni fra processi/thread Processi/thread eseguiti concorrentemente hanno bisogno di interagire per.
1 Le gerarchie di tipi: implementazioni multiple e principio di sostituzione.
Lez. 31 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Programmazione.
I segnali.
Programmazione Concorrente
Sincronizzazione fra processi
Sincronizzazione di processi
Deadlock Modello del sistema Caratterizzazione dei deadlock
2 luglio 2006URM2 – ING- OOP0304 OL G. Cantone e A. Lomartire 1 Programmazione Orientata agli Oggetti Processi, task e thread Java (ed esempi) Università
Iterazione enumerativa (for)
Introduzione ai thread
Informatica B Allievi Elettrici AA La progettazione per raffinamenti successivi.
Introduzione ai thread
Alberi binari Definizione della struttura dati: struct tree { };
Risorse condivise e sovraccarichi nei sistemi in tempo reale E.Mumolo
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.
Risorse e Stallo.
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.
Lezione 4: Costrutti Condizionali Prof. Raffaele Montella.
Sincronizzazione dei Processi
Sistema Operativo Architettura degli elaboratori 1 - A. Memo La gestione dei processi stallo 9 soluzione corretta si utilizzano un semaforo per.
Esercizi su code Date due code in ingresso a valori interi in ordine crescente, scrivere una funzione che restituisca una terza coda che contenga i valori.
© CEFRIEL Concorrenza (cenni) Docente: Gabriele Lombardi
Sincronizzazione fra thread
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.
Duomo di Milano: lavori di restauro
Java concetti A.Natali Marzo Java Dai concetti ai costrutti.
Concorrenza e Sincronizzazione di Thread e Processi
La trasformata di Laplace
Interazione e sincronizzazione
Strutture di Controllo
1 Scheduling in Windows 2000 Un thread entra in modalità kernel e chiama lo scheduler quando: Si blocca su un oggetto di sincronizzazione (semaforo, mutex,
Alberi binari Definizione della struttura dati: struct tree { };
Sincronizzazione dei processi
Costruzione di una semplice Agenda telefonica Elettronica Esercizio sull'uso delle principali system call Unix.
Concorrenza 1 Conto corrente Nella famiglia Giambietti non ci sono grossi problemi economici. Infatti il padre, Enea, di professione artista free-lance,
Sessione live Testing. Esercizio Quesito 1 Soluzione 1.
1 I segnali. 2 Prima un po’ di teoria…... 3 Stati dei processi in UNIX Idle Sleeping Zombified Runnable Running Fork iniziata waitpid Fork terminata.
Consenso, Opposizione e il Processo di Comunicazione nel Modello Manageriale italiano Clicca qui per visualizzare la versione originale inglese.
Corso JAVA Lezione n° 03 Istituto Statale di Istruzione Superiore “F. Enriques”
1 Esercitazione finale per il corso di Sistemi Operativi (A.A. 2001/2002)
Programmazione Concorrente e Distribuita
Architettura dei Sistemi Operativi
1 Tipi di Dato §descrittori, tipi, controllo e inferenza dei tipi §specifica (semantica) e implementazione di tipi di dato l implementazioni “sequenziali”
Lez 4 (13/14)Elementi di Programmazione1 Strutture di controllo 2.
1 Fabio Scotti – Università degli Studi di Milano Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza Valentina Ciriani ( )
1 Processi e Thread Meccanismi di IPC (2) Problemi classici di IPC.
Ripasso su Java. Introduzione Per risolvere problemi complessi, i linguaggi di programmazione forniscono costrutti per realizzare nuove funzioni che trasformino.
Supporto per la replicazione attiva di servizi Progetto per il corso di Reti di Calcolatori LS Montanari Mirko Matr:
Processi e Thread Processi Thread
1 Processi e Thread Processi e thread in Windows 2000.
1 Elementi di programmazione concorrente in Java: i threads.
1 Processi e Thread Processi Thread Meccanismi di comunicazione fra processi (IPC) Problemi classici di IPC Scheduling Processi e thread in Unix Processi.
1 Risorse e Stallo 2 Risorse (1) Esempi di risorse –stampanti –nastri –tabelle I processi devono accedere alle risorse in un ordine ragionevole Supponiamo.
Refactoring e Test GBerio. Migliorare la codifica: il refactoring Metodo strutturato e disciplinato per riscrivere o modificare il codice prodotto Tali.
Priorità e Sincronizzazione tra Threads. Priorità e preemption Java non garantisce la preemption Lo scheduling avviene in base all’algortimo Highest Priority.
NUCLEO DI UN SISTEMA A PROCESSI Il modello a processi prevede l’esistenza di tante unità di elaborazione (macchine virtuali) quanti sono i processi; ogni.
1 Competizione e cooperazione pag. 88 Cap.3 - Esecuzione concorrente di processi 1.
Processi e Thread Meccanismi di IPC (1).
Transcript della presentazione:

Corso di “Programmazione a oggetti” Programmazione concorrente Costrutti e meccanismi di alto livello a supporto della programmazione concorrente in ambiente globale Tipi di Monitor 9.07.2006 2.2.3.2 G. Cantone

Monitor Regione enter ATTIVO P exit && P=m.look()!=NULL / P==m.get(); ATTESA MUTEX m (1) enter ATTIVO P exit && P=m.look()!=NULL / P==m.get(); exit m.cont==1 /m.cont=0; m.cont==0; exit && m.look() ==NULL /m.cont=1; Precondizione /Postcondizione 9.07.2006 2.2.3.2 G. Cantone

Regione Critica Condizionale Monitor Regione Critica Condizionale ATTESA SYNC s BLOCCATO COND c1 c1.signal/while (c1.cont>0 ) {m.put(c1.get()); c1.cont--;} cl.wait c1.signal m.cont==0; c1.wait ATTESA MUTEX m(1) ATTIVO P enter exit (exit || wait ) &&m.look() !=NULL/ P==m.get(); enter && m.cont==1; Molte postcondizioni non riportate 9.07.2006 2.2.3.2 G. Cantone

Regione Critica Condizionale Monitor tipo Regione Critica Condizionale Un processo già in attesa su condizione, una volta passato in esecuzione, dovrà valutare nuovamente la condizione di avanzamento (un altro processo, già in attesa sul semaforo di ingresso o ivi ricollocato, entrando per primo nel monitor, potrebbe alterare lo stato del monitor medesimo): while(!<B>) cond.wait; 9.07.2006 2.2.3.2 G. Cantone

Monitor Java: notifyAll() Corrisponde a un monitor tipo Regione Critica Condizionale con un solo stato di attesa. Vi è un’unica condizione di attesa, implicita. È una classe Java che include almeno un metodo synchronized. Tutti metodi synchronized operano in mutua esclusione. Con il segnalamento notifyAll(), TUTTI i processi in attesa vengono rimessi in ingresso del monitor. 9.07.2006 2.2.3.2 G. Cantone

Monitor Java notifyAll Monitor/Implementazione/Casi reali Monitor Java notifyAll BLOCCATO Attesa interna ai notifyAll/while (ai.cont>0 ) {m.put(ai.get()); ai.cont--;} wait m.cont==0; c.notifyAll ATTESA MUTEX m(1) ATTIVO P enter synchronized exit (exit || wait ) &&m.look() !=NULL/ P==m.get(); enter && m.cont==1; Molte postcondizioni non riportate 9.07.2006 2.2.3.2 G. Cantone

Monitor Java Con il segnalamento notify(), UN processo, scelto a caso fra quelli eventualmente in attesa, viene rimesso in ingresso del monitor. 9.07.2006 2.2.3.2 G. Cantone

Monitor Java: notify() BLOCCATO Attesa interna ai notify/ai.cont>0 => {m.put(ai.get()); ai.cont--;} wait m.cont==0; c.notify ATTESA MUTEX m(1) ATTIVO P enter synchronized exit (exit || wait ) &&m.look() !=NULL/ P==m.get(); enter && m.cont==1; Molte postcondizioni non riportate 9.07.2006 2.2.3.2 G. Cantone

Variante Monitor MRCC È una variante del precedente MRCC. Se il processo attivo si sospende, allora libera il monitor. Un processo attivo può risvegliare un qualunque numero di processi i quali però sono forzati ad abbandonare il monitor, il cui controllo resta al processo segnalante. L’uscita forzata potrebbe creare problemi, in quanto i processi forzati a uscire non potrebbero disporre dei giusti valori dei dati. 9.07.2006 2.2.3.2 G. Cantone

Variante Monitor RCC BLOCCATO C c.signal/if (c.cont>0 ) {m.put(c.get()); c.cont--;} wait m.cont==0; c.signal ATTESA MUTEX m(1) ATTIVO P enter synchronized exit (exit || wait ) &&m.look() !=NULL/ P==m.get(); enter && m.cont==1; Molte postcondizioni non riportate 9.07.2006 2.2.3.2 G. Cantone

Ulteriori tipi di monitor Aspetti comuni I processi in attesa su coda interna sono, in termini di risveglio, privilegiati rispetto a quelli in attesa all’esterno. 9.07.2006 2.2.3.2 G. Cantone

Monitor Monitore Modificata 9.07.2006 Come necessario per programma ATTESA COND c(0) Come necessario per programma BLOCCATO Cond c(0) ! a c.wait m.cont==0; c.signal &&c.cont>0; ATTESA MUTEX m(1) ATTIVO P enter c.signal || exit a: (exit || c.wait || (c.signal && c.cont==0)) &&m.look() !=NULL/ P==m.get(); enter && m.cont==1;/m.cont=0; Molte postcondizioni non riportate 9.07.2006 2.2.3.2 G. Cantone

Impiegano Condition e uniQueue rispettivamente Monitor/Casi reali Monitor di Hoare Monitor Hansen Simili al Monitore. Impiegano Condition e uniQueue rispettivamente 9.07.2006 2.2.3.2 G. Cantone

Monitor Concurrent Pascal Monitor/Implementazione/Casi reali Monitor Concurrent Pascal ATTESA QUEUE q(0) 0..MAXP-1 BLOCCATO QUEUE q(0) ! a q.delay m.cont==0; q.continue &&q.queue; ATTESA MUTEX m(1) ATTIVO P enter continue || exit a: (exit || delay || (q.continue && !q.queue)) &&m.look() !=NULL/ P==m.get(); enter && m.cont==1; Molte postcondizioni non riportate 9.07.2006 2.2.3.2 G. Cantone

Altri monitor/Aspetti Comuni Una C.signal() NON comporta l’abbandono dello stato ATTIVO. Ciò perché il processo segnalato potrebbe portare il monitor in uno stato diverso da quello lasciato dal processo che emette il segnale e, per questo, inconsistente per lo stesso. 9.07.2006 2.2.3.2 G. Cantone

Monitor Mediatore Come necessario per programma c.wait ATTESA COND c(0) BLOCCATO Cond c(0) Come necessario per programma c.wait c.signal && c.cont==0 m.cont==0; c.signal &&c.cont>0; ATTESA MUTEX m(1) (exit || c.wait) &&u.cont==0 && m.look() !=NULL /P==m.get(); ATTIVO P enter exit( exit c.signal && c.cont>0 PENDENTE URGENTE u(0) (exit || c.wait) && u.cont>0 enter && m.cont==1; Molte postcondizioni non riportate 9.07.2006 2.2.3.2 G. Cantone

Monitor/Implementazione/Avanzamento-sospensione Monitor Gladiatore ATTESA ELIGIBILI e Come necessario per programma ATTESA COND c c.signal && c.cont>0 BLOCCATO Cond c(0) c.wait c.signal ((exit || c.wait ) && e.cont>0) / P== e.get() m.cont==0; ATTESA MUTEX m ((exit || c.wait) &&e.cont==0) && m.look()!=NULL / P==m.get() ATTIVO P enter exit enter && m.cont==1;/m.cont=0; Molte postcondizioni non riportate 9.07.2006 2.2.3.2 G. Cantone

Monitor Mesa Monitor/ICasi reali Come necessario per programma ATTESA ELEGIBILI e(0) Come necessario per programma ATTESA COND c c.notify && c.cont>0 BLOCCATO Cond c(0) c.wait c.notify ((exit || c.wait ) && e.cont>0) / P== e.get() m.cont==0; ATTESA MUTEX m(1) ((exit || c.wait) &&e.cont==0) && m.look()!=NULL / P==m.get() ATTIVO P enter exit enter && m.cont==1; Molte postcondizioni non riportate 9.07.2006 2.2.3.2 G. Cantone