Corso di Linguaggi di Programmazione
|
|
- Franco Antonucci
- 6 anni fa
- Visualizzazioni
Transcript
1 Corso di Linguaggi di Programmazione Lezione 20 Alberto Ceselli Dipartimento di Tecnologie dell Informazione Università degli Studi di Milano 20 Maggio 2010
2 Unità concorrenti in Java Thread Java Thread C# Le unità concorrenti in Java sono metodi chiamati run Le entità in cui girano i metodi run sono dei thread (a differenza dei task di ADA, che sono processi) Ci sono due modi per definire una classe con un metodo run: Estendere la classe Thread (predefinita) Implementare l interfaccia Runnable (predefinita)
3 Definizione di Threads in Java Thread Java Thread C# Esempio: java threads
4 Metodi della classe Thread Thread Java Thread C# sleep: il thread rimane in stato waiting per il tempo specificato (in millisecondi) (statico) yield: preemption volontaria, il thread passa in stato ready (statico) join: l esecuzione del thread è sospesa, in attesa del completamento dell esecuzione di un altro thread public void anythreadmethod() {... Thread myth = new Thread(); myth.start(); // computazione myth.join(); // myth.join(2000); // computazione } interrupt: setta un bit, che può essere controllato con isinterrupted() (e solleva l eccezione InterruptedException) setpriority().e getpriority() stop, suspend e resume sono deprecated.
5 Competition synchronization Thread Java Thread C# Simile a monitors Ciascun metodo può essere marcato come synchronized. Ci può essere al più un thread attivo (ready o running). Ogni oggetto con metodi synchronized conserva una coda di thread in attesa di ottenere l accesso. class BufferManager { private int shared_resource;... public synchronized void put(int item) {... } public synchronized int get() {... } }
6 Cooperation synchronization Thread Java Thread C# Gestita con metodi wait, notify e notifyall della classe Object. Questi metodi possono essere chiamati solo all interno di metodi synchronized (perchè sfruttano il lock sull oggetto) wait: da running a waiting notify: un thread tra quelli in coda (waiting) sull oggetto passa da waiting a ready (non-deterministico) notifyall: tutti i thread in coda (waiting) sull oggetto passano da waiting a ready. N.B. Utilizzando notifyall è spesso necessario ri-controllare le condizioni per cui il thread si era messo in attesa (attesa semi-attiva).
7 Valutazione Java e C# Thread Java Thread C# Semplice, ma efficace. Thread (lightweight) rispetto ai Task (heavyweight) di ADA: non adatti ad ambiente distribuito (librerie!) Si possono simulare monitor e semafori
8 Unità concorrenti in C# Thread Java Thread C# Le unità concorrenti in C# possono essere metodi qualsiasi Le entità in cui girano i metodi concorrenti sono dei thread Creazione di un thread: public void any_method() {... }... Thread mythread = new Thread( new ThreadStart( any_method ) ); // delegate... mythread.start(); ThreadStart è una classe delegate (funzione dei puntatori a procedure in C). non solleva nessuna eccezione (niente blocco try)
9 Sincronizzazione Java e C# Thread Java Thread C# Ci sono vari modi per sincronizzare thread C# classe Interlocked: operazioni atomiche Interlocked.Increment(ref value); Interlocked.Decrement(ref value); istruzione lock: mutua esclusione lock(<espressione>) { <sezione critica>... } classe Monitor: ha 4 metodi (Enter, Wait, Pulse, Exit) Monitor.Enter(<oggetto>): acquisisce i lock sull oggetto Monitor.Wait(): analogo a wait() Java Monitor.Pulse(<oggetto>): analogo a notifyall() Java Monitor.Exit(<oggetto>): rilascia il lock sull oggetto
10 Valutazione Java e C# Thread Java Thread C# Molto simile a Java. Ogni metodo può acquisire un thread di controllo più costrutti per la sincronizzazione
11 Il modulo threading Il supporto alla programmazione concorrente in è fornito nel modulo threading... import queue from threading import Thread... threading: Thread, Lock, Semaphore, Condition esistono classi già costruite per molti problemi fondamentali (Es. queue) NB: l interprete non è completamente thread-safe (esiste un Global Interpreter Lock GIL) che deve essere acquisito.
12 Thread Java e C#... estendono la classe Thread, sovrascrivendo il metodo run def main(): for i in range(3): my_thread = MyThread(i) my_thread.daemon = True my_thread.start() class MyThread(Thread): def init (self, i): Thread. init (self) self.i = i... def run(self): while True:
13 Lock Java e C# Simili a Queue in Concurrent Pascal: from threading import Thread, Lock class Buffer(Thread): def init (self, i): self.lock = Lock() self.storage = 0 def write(self, v): self.lock.acquire() self.storage = v self.lock.release()
14 Semaphore Java e C# acquire() equivale a P(), e release() equivale a V() semaphore = threading.boundedsemaphore(3) semaphore.acquire() # decrements the counter... access the shared resource semaphore.release() # increments the counter
15 Event Java e C# event gestisce un flag booleano, che può essere modificato con set() e get(). Se il flag è false, wait() interrompe il thread corrente, ponendolo in stato waiting; set() risveglia eventuali thread waiting. event = threading.event() # a client thread can wait for the flag to be set event.wait() # a server thread can set or reset it event.set() event.clear()
16 Condition Java e C# Simile a Event, ma supporta operazioni notify() e notifyall() condition = threading.condition()... generate item condition.acquire() if (full) condition.wait()... add item to resource condition.notify() # signal that a new item is available condition.release() e diverse condition possono condividere lo stesso lock lock = threading.lock() condition_1 = threading.condition(lock) condition_2 = threading.condition(lock)
17 High Performance Fortran High Performance Fortran Collezione di estensioni al Fortran 90 per permettere ai programmatori di fornire istruzioni al compilatore per generare codice ottimizzato su piattaforme multiprocessore Istruzioni di specifica, es. numero di processori o distribuzione dati ai processori!hpf$ PROCESSORS procs (<n>)!hph$ DISTRIBUTE (<tipo_distr>) ONTO procs :: <lista id_variabili> tipo distr può essere BLOCK oppure CYCLIC N.B.! introduce commenti in Fortran: facile da gestire per un compilatore / preprocessore.
18 High Performance Fortran High Performance Fortran Istruzioni di controllo, es. FORALL (index = 1:1000) list_1 (index) = list_2 (index) suggerisce di parallelizzare rispetto agli indici degli array Esistono anche librerie C / C++ che utilizzano la stessa filosofia: es. openmp.
19 Esercizi: Java e C# High Performance Fortran Implementare una simulazione della Cena dei Filosofi utilizzando: semafori monitor scambio di messaggi Java threads / C# threads
Java Virtual Machine. Indipendenza di java dalla macchina ospite. I threads in Java
programmi sorgente: files.java compilatore Indipendenza di java dalla macchina ospite Programmi java Programmi java Programmi java files.class bytecode linker/loader bytecode bytecode Java API files.class
DettagliConcorrenza e sincronizzazione
Concorrenza e sincronizzazione Ingegneria del software Ing. Jody Marca jody.marca@polimi.it Cosa faremo oggi 2 Concorrenza Sincronizzazione Concorrenza 3 Nei programmi Java fino ad ora sviluppati è presente
DettagliMultithreading in Java. Fondamenti di Sistemi Informativi 2014-2015
Multithreading in Java Fondamenti di Sistemi Informativi 2014-2015 Multithreading La programmazione concorrente consente di eseguire più processi o thread nello stesso momento. Nel secondo caso si parla
DettagliTHREAD. Programmazione in rete e laboratorio. Come si crea un thread
Programmazione in rete e laboratorio JAVA - Thread Alberto Martelli THREAD Thread: flusso sequenziale di controllo (esecuzione di istruzioni) in un programma. Nello stesso programma si possono far partire
DettagliProgrammazione concorrente con il linguaggio Java
Programmazione concorrente con il linguaggio Java Thread, Mutua Esclusione e Sincronizzazione Alcuni aspetti architetturali e di prestazioni Concetto di thread Un thread è un flusso di esecuzione indipendente
DettagliJava Virtual Machine
Java Virtual Machine programmi sorgente: files.java compilatore files.class bytecode linker/loader bytecode bytecode Java API files.class interprete macchina ospite Indipendenza di java dalla macchina
DettagliLaboratorio Reti di Calcolatori Laurea Triennale in Comunicazione Digitale. Anno Accademico 2012/2013
Laboratorio Reti di Calcolatori Laurea Triennale in Comunicazione Digitale Anno Accademico 2012/2013 Thread e processi Da software ci si attende la concorrenza. Java è stato progettato per supportare concorrenza
DettagliJava threads (2) Programmazione Concorrente
Java threads (2) emanuele lattanzi isti information science and technology institute 1/28 Programmazione Concorrente Utilizzo corretto dei thread in Java emanuele lattanzi isti information science and
DettagliProgrammazione concorrente in Java
Programmazione concorrente in Java Multithreading in Java Ogni thread e un oggetto, creato come istanza della classe java.lang.thread La classe Thread contiene tutti i metodi per gestire i threads L utente
DettagliT 1. Per un processo con più thread di controllo, lo stato di avanzamento della computazione di ogni thread è dato da:
Un thread (o processo leggero) è una attività, descritta da una sequenza di istruzioni, che esegue all'interno del contesto di esecuzione di un programma. Un thread procede nella sua esecuzione per portare
DettagliProgrammazione multi threaded in Python. Linguaggi dinamici A.A. 2010/2011 1
Programmazione multi threaded in Python 1 Motivazione all'uso dei thread Pro Scrittura di applicazioni con molteplici eventi asincroni (GUI) Riduzione della latenza di servizio mediante l'uso di un pool
DettagliTHREAD IN JAVA. Thread. Un thread (lightweight process) è un singolo flusso sequenziale di controllo all interno di un processo
THREAD IN JAVA Come si può realizzare il concetto di Thread in Java? NEL MODO PIU NATURALE! Sono oggetti particolari ai quali si richiede un servizio (chiamato start()) corrispondente al lancio di una
DettagliModelli di programmazione parallela
Modelli di programmazione parallela Oggi sono comunemente utilizzati diversi modelli di programmazione parallela: Shared Memory Multi Thread Message Passing Data Parallel Tali modelli non sono specifici
DettagliGestione dei thread in Java LSO 2008
Gestione dei thread in Java LSO 2008 Cos è un Thread? Si può avere la necessità di suddividere un programma in sottoattività separate da eseguire indipendentemente l una dall altra Queste sottoattività
DettagliCorso 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
DettagliIntroduzione. Meccanismi di sincronizzazione: Semafori e Monitor. Semafori - Definizione. Semafori - Descrizione informale
Introduzione Meccanismi di sincronizzazione: Nelle prossime lezioni vedremo alcuni meccanismi dei sistemi operativi e dei linguaggi di programmazione sviluppati per facilitare la scrittura di programmi
DettagliLinguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008. - lezione 14 - Thread in Java
Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008 Alessandro Longheu http://www.diit.unict.it/users/alongheu alessandro.longheu@diit.unict.it - lezione 14 - Thread in Java 1 Cos è un
DettagliDefinizione di thread Proprietà dei thread in Java Gestione delle priorità nei programmi multithreaded Gruppi di thread Accesso a variabili condivise
CEFRIEL Centro per la Formazione e la Ricerca in Ingegneria dell Informazione Politecnico di Milano Java Multithreading Programmazione concorrente in Java Docente: Diego Peroni peroni@cefriel.it Indice
DettagliProcessi e Thread. Walter Cazzola Dipartimento di Informatica e Comunicazione Università à degli Studi di Milano.
Processi e Thread Processi e Thread: Il Caso Java. Walter Cazzola Dipartimento di Informatica e Comunicazione Università à degli Studi di Milano. e-mail: cazzola@disi.unige.it Walter Cazzola Processi e
DettagliEsercitazioni 7 e 8. Bounded Buffer con sincronizzazione Java (1)
Università degli Studi della Calabria Corso di Laurea in Ingegneria Informatica A.A. 2001/2002 Corsi A e B Esercitazioni 7 e 8 Bounded Buffer con sincronizzazione Java (1) public class BoundedBuffer private
DettagliProgrammazione Orientata agli Oggetti in Linguaggio Java
Programmazione Orientata agli Oggetti in Linguaggio Java Tecniche di Programmazione: Thread Parte a versione 1.0 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi
DettagliCapitolo 7: Sincronizzazione
Capitolo 7: Sincronizzazione Il problema della sincronizzazione. Il problema della sezione critica. Hardware per la sincronizzazione. Semafori. Problemi classici di sincronizzazione. Monitor (cenni). 7.1
DettagliMeccanismi di sincronizzazione: Semafori e Monitor
Meccanismi di sincronizzazione: Semafori e Monitor 1 Introduzione Nelle prossime lezioni vedremo alcuni meccanismi dei sistemi operativi e dei linguaggi di programmazione sviluppati per facilitare la scrittura
DettagliThread e Task. L20_MultiThread 2
I Thread in Java Thread e Task Multitasking: capacità dei sistemi operativi di eseguire più programmi contemporaneamente. Ciascun programma ha il proprio insieme di variabili, costanti, ecc. Multithreading
DettagliI thread di uno stesso processo condividono dati e codice del processo, ma lo stack di esecuzione ed il program counter sono privati.
Un thread (o processo leggero) è una attività, descritta da una sequenza di istruzioni, che esegue all'interno del contesto di esecuzione di un programma. Un thread procede nella sua esecuzione per portare
DettagliSistemi Operativi GESTIONE DEI PROCESSI. D. Talia - UNICAL. Sistemi Operativi 4.1
GESTIONE DEI PROCESSI 4.1 Processi Concetto di Processo Scheduling di Processi Operazioni su Processi Processi Cooperanti Concetto di Thread Modelli Multithread I thread in diversi S.O. 4.2 Concetto di
DettagliSoluzioni ai problemi di Mutua Esclusione Primitive di sincronizzazione. Soluzioni ai problemi di Mutua EsclusionePrimitive di sincronizzazione
Soluzioni ai problemi di Mutua Esclusione Primitive di sincronizzazione Soluzioni basate su primitive di sincronizzazione Le primitive di sincronizzazione piú comuni sono: Lock (mutex) - realizzati in
Dettagli19. Introduzione al multi-threading
19. Introduzione al multi-threading Marco Faella Dip. Ing. Elettrica e Tecnologie dell'informazione Università di Napoli Federico II Corso di Linguaggi di Programmazione II I thread I thread, o processi
DettagliCorso di Laboratorio di Sistemi Operativi
Corso di Laboratorio di Sistemi Operativi Lezione 7 Alessandro Dal Palù email: alessandro.dalpalu@unipr.it web: www.unipr.it/~dalpalu Threads Un thread è l unità di base per l utilizzo della CPU. Composto
DettagliEsercizi sugli Oggetti Monitor
Esercizi sugli Oggetti Monitor Esercitazione di Laboratorio di Programmazione di Rete A Daniele Sgandurra Università di Pisa 29/10/2008 Wait e Notify Ogni oggetto in Java ha un lock implicito. Il lock
DettagliGESTIONE DEI PROCESSI
Sistemi Operativi GESTIONE DEI PROCESSI Processi Concetto di Processo Scheduling di Processi Operazioni su Processi Processi Cooperanti Concetto di Thread Modelli Multithread I thread in Java Concetto
DettagliGestione delle eccezioni in Java
Gestione delle eccezioni in Java Fondamenti di Informatica Ingegneria Gestionale Canale AL 1 Le eccezioni in Java Exception handling: insieme di costrutti e regole sintattiche e semantiche presenti nel
DettagliSISTEMI OPERATIVI. Sincronizzazione in Java (Monitor e variabili condizione in Java)
SISTEMI OPERATIVI (MODULO DI INFORMATICA II) LABORATORIO Sincronizzazione in Java (Monitor e variabili condizione in Java) Prof. Luca Gherardi Prof.ssa Patrizia Scandurra (anni precedenti) Università degli
DettagliSISTEMI OPERATIVI. Sincronizzazione in Java (Semafori e barriere) Patrizia Scandurra (MODULO DI INFORMATICA II) LABORATORIO
SISTEMI OPERATIVI (MODULO DI INFORMATICA II) LABORATORIO Sincronizzazione in Java (Semafori e barriere) Patrizia Scandurra Università degli Studi di Bergamo a.a. 2012-13 La gestione dei thread in Java
DettagliSISTEMI OPERATIVI. Nucleo di un SO. Il Nucleo. Il nucleo di un SO Gestione delle interruzioni Sincronizzazione tra processi Dispatcher. 06.
SISTEMI OPERATIVI 06.a Il Nucleo Nucleo di un SO Il nucleo di un SO Gestione delle interruzioni Sincronizzazione tra processi Dispatcher 1 Architettura di base dei SO Due le strutture di riferimento: a
DettagliDecima Esercitazione. Accesso a risorse condivise tramite Monitor Java
Decima Esercitazione Accesso a risorse condivise tramite Monitor Java 1 Agenda Esempio 1 La banca: gestione di una risorsa condivisa da più thread, con politica prioritaria Esercizio 2 da svolgere Accesso
DettagliLab 4: Locks, Condition Variables in Java
Dept. of Computer Science Lab 4: Locks, Condition Variables in Java Matteo Camilli matteo.camilli@unimi.it Laboratorio di Sistemi Operativi a.a. 2015/16 Università degli Studi di Bergamo 1 Esercizi Lab3
DettagliEsercitazione 15. Il problema dello Sleeping Barber
Università degli Studi della Calabria Corso di Laurea in Ingegneria Informatica A.A. 2001/2002 Sistemi Operativi Corsi A e B Esercitazione 15 Il problema dello Sleeping Barber E dato un salone di barbiere,
DettagliProgrammazione concorrente in Java. Dr. Paolo Casoto, Ph.D. - 2012 1
+ Programmazione concorrente in Java 1 + Introduzione al multithreading 2 La scomposizione in oggetti consente di separare un programma in sottosezioni indipendenti. Oggetto = metodi + attributi finalizzati
DettagliMonitor. Le procedure entry sono le sole operazioni che possono essere utilizzate dai processi per accedere alle variabili comuni.
Monitor Costrutto sintattico che associa un insieme di procedure ad una struttura dati comune a più processi. Il compilatore può verificare che esse siano le sole operazioni permesse su quella struttura.
DettagliGruppi di Thread. Java threads (3) Gruppi di thread e Timer. Operating Systems. Operating Systems. Java threads 3. Java threads 3
Java threads (3) Gruppi di thread e Timer emanuele lattanzi isti information science and technology institute 1/12 Gruppi di Thread emanuele lattanzi isti information science and technology institute 2/12
Dettagli24 - Possibili approfondimenti
24 - Possibili approfondimenti 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
DettagliSistemi operativi - Concetti ed esempi -Settima edizione
Capitolo 6: Sincronizzazione dei processi Capitolo 6: Sincronizzazione dei processi Introduzione Problema della sezione critica Soluzione di Peterson Hardware per la sincronizzazione Semafori Problemi
DettagliEsercitazioni Ingegneria del So2ware 8 Threads. Giordano Tamburrelli tamburrelli@elet.polimi.it h@p://giordano.webfacdonal.com
Esercitazioni Ingegneria del So2ware 8 Threads Giordano Tamburrelli tamburrelli@elet.polimi.it h@p://giordano.webfacdonal.com 1 Flusso (thread) di esecuzione In un programma sequenziale esiste un solo
DettagliSincronizzazione. Soluzioni hardware Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino
Sincronizzazione Soluzioni hardware Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino 2 Soluzioni hardware Le soluzioni hardware al problema della SC possono essere classificate
Dettagliprogam ponteasensounicoalaternato ; type dir = ( nord, sud );
Esercizio di Sincronizzazione Tra Processi: Ponte a Senso Unico Alternato Un ponte contiene una sola csia di traffico consentendo così l'accesso a macchine provenienti da una sola direzione per volta,
DettagliCorso di Linguaggi di Programmazione
Corso di Linguaggi di Programmazione Lezione 5 Alberto Ceselli alberto.ceselli@unimi.it Università degli Studi di Milano 12 Marzo 2013 Le funzioni sono oggetti di prima classe in Scheme In Scheme le funzioni
DettagliIntroduzione al Multithreading
Introduzione al Multithreading Claudia Calidonna Istituto di di Cibernetica C.N.R. Argomenti principali Parleremo di : Processi & Threads Operazioni sui threads ed eventuali confronti tra operazioni sui
DettagliSistemi 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
DettagliSupporto al Sistema Operativo
Supporto al Sistema Operativo Middleware di supporto al sistema operativo in sistemi distribuiti Funzione del nucleo Modelli architetturali di SO Decomposizione delle funzionalità Processi, thread, processi
DettagliCon il pulsante Start si introducono palline che rimbalzano in un area di disegno fino a che non è terminato il loro ciclo di vita (1000 movimenti).
Rimbalzi. import java.awt.*; import java.awt.event.*; import java.applet.applet; public class Bounce extends Applet implements ActionListener { private Canvas canvas; private Button b1; private Button
DettagliSistemi Operativi. Processi GESTIONE DEI PROCESSI. Concetto di Processo. Scheduling di Processi. Operazioni su Processi. Processi Cooperanti
GESTIONE DEI PROCESSI 4.1 Processi Concetto di Processo Scheduling di Processi Operazioni su Processi Processi Cooperanti Concetto di Thread Modelli Multithread I thread in diversi S.O. 4.2 Concetto di
DettagliProgrammazione Concorrente in Java
Programmazione Concorrente in Java Lorenzo Bettini Dip. Sistemi e Informatica, Univ. Firenze http://www.dsi.unifi.it/~bettini Ottobre 2005 Gestione dei Processi Un processo è un programma in esecuzione.
DettagliLaboratorio di Programmazione di Rete Corso A
Laboratorio di Programmazione di Rete Corso A Anno Accademico 2005-2006 Docente: Laura Ricci Assistente: Paolo Mori INFORMAZIONI UTILI Orario del Corso: Lunedì 9.00-11.00 Laboratorio Gruppo A 11.00-13.00
DettagliLezione 15 Programmazione multithreaded
Lezione 15 Programmazione multithreaded Tutti i sistemi operativi, al giorno d'oggi, permettono di svolgere più operazioni simultaneamente. In questo momento, ad esempio, sto usando un word processor per
DettagliIngegneria del Software
Ingegneria del Software Threads 2 Mauro Migliardi Ph. D. Sincronizzazione Start Programma per ATM Request Abbastanza grano? Deduci ammontare Stampa Ricevuta End Codice... public void withdraw(float amount)
DettagliProgrammazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014
Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 11 luglio 2014 TEMPO DISPONIBILE: 2 ore Negli esercizi
DettagliSincronizzazione con Java
Sincronizzazione con Java Corse critiche e sincronizzazione Java implementa un meccanismo simile al monitor per garantire la sincronizzazione fra thread Ogni oggetto ha un lock associato ad esso Nelle
DettagliMetodi di una Collection
Java Collections Introduzione Una java collection (a volte chiamata anche container) è un oggetto che raggruppa più elementi dello stesso tipo in una singola unità. Tipicamente è utilizzata per raggruppare
DettagliLaboratorio di Sistemi Thread Java
Premessa Fare più di una cosa contemporaneamente per noi è una cosa piuttosto comune. La vita quotidiana è piena di esempi che ci possono chiarire il significato dell'avverbio contemporaneamente. Ad esempio
DettagliFunzioni, Stack e Visibilità delle Variabili in C
Funzioni, Stack e Visibilità delle Variabili in C Programmazione I e Laboratorio Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7
DettagliEsercizio monitor. Sistemi Operativi T 1
Esercizio monitor Si consideri un piccolo Aereoporto, nel quale sia presente una sola pista, utilizzata sia per i decolli che per gli atterraggi. La pista puo` anche essere percorsa da mezzi di servizio:
DettagliSistemi operativi Sincronizzazione fra processi
Sistemi operativi 2003-2004 Sincronizzazione fra processi Introduzione I processi devono poter comunicare tra loro in modo strutturato e preciso Per passarsi informazioni Per non interferire con gli altri
DettagliLab 1: Java Multithreading
Dept. of Computer Science Lab 1: Java Multithreading Matteo Camilli matteo.camilli@unimi.it Laboratorio di Sistemi Operativi a.a. 2015/16 Università degli Studi di Bergamo 1 Outline Programmazione multithreading
DettagliSEMAFORI SEMAFORI. Sul semaforo sono ammesse solo due operazioni (primitive)
SEMAFORI 1 SEMAFORI Variabile intera non negativa con valore iniziale >= 0 Al semaforo è associata una lista di attesa Qs nella quale sono posti i descrittori dei processi che attono l autorizzazione a
DettagliMultithreading in Java
Multithreading in Java Un programma sequenziale (single thread) class ABC {. public void main(..) {.. begin body end 2 Un programmamultithreaded Main Thread start start start Thread A Thread B Thread C
DettagliIl costrutto monitor
Il Monitor 1 Monitor Definizione del monitor Esempi d uso Realizzazione del costrutto monitor Realizzazione di politiche di gestione delle risorse Chiamate innestate a procedure del monitor Realizzazione
DettagliInformatica 3. Informatica 3. LEZIONE 6: Il controllo dell esecuzione. Lezione 6 - Modulo 1. Errori durante l esecuzione. Il controllo dell esecuzione
Informatica 3 Informatica 3 LEZIONE 6: Il controllo dell esecuzione Modulo 1: La gestione delle eccezioni Modulo 2: Programmazione concorrente Lezione 6 - Modulo 1 La gestione delle eccezioni Politecnico
DettagliUn esercizio d esame. Flavio De Paoli
Un esercizio d esame e note sulla gestione dei dati Flavio De Paoli Il testo (Appello 22 ottobre 2001) Una stazione di servizio dispone di n distributori di benzina. I clienti si presentano a uno dei distributori
DettagliSommario. G. Piscitelli
Sommario Sincronizzazione Inconsistenza di dati condivisi: i rischi dell'interleaving nei processi concorrenti La race condition Il problema della "sezione critica" dei processi concorrenti e la soluzione
DettagliI THREAD O PROCESSI LEGGERI
I THREAD O PROCESSI Processi (pesanti): LEGGERI entità autonome con poche risorse condivise (si prestano poco alla scrittura di applicazioni fortemente cooperanti) Ogni processo può essere visto come Immagine
DettagliTerza Esercitazione. Unix - Esercizio 1. Unix System Call Exec Java Introduzione Thread
Terza Esercitazione Unix System Call Exec Java Introduzione Thread Stefano Monti smonti@deis.unibo.it Unix - Esercizio 1 Scrivere un programma C con la seguente interfaccia:./compilaedesegui
DettagliLe risorse. Alcune definizioni
Le risorse Dicesi risorsa un qualunque oggetto, fisico o logico, di cui un processo necessita per portare a termine la sua evoluzione. Poiché un processo evolve eseguendo istruzioni (procedure), una risorsa
DettagliTelematica II 17. Esercitazione/Laboratorio 6
Multitasking e Multithreading Telematica II 17. Esercitazione/Laboratorio 6 Multitasking si riferisce all abilità di un computer di eseguire processi (jobs) multipli in maniera concorrente si ricorda che
DettagliLa gestione dei processi in Minix
La gestione dei processi in Minix Sistemi Operativi Lez. 28 Scheduling Round robin su 16 code di priorità Quando un processo viene bloccato senza aver esaurito il suo quanto di tempo, una volta risvegliato,
DettagliLinguaggi di alto livello, compilatori e interpreti
Linguaggi di alto livello, compilatori e interpreti Percorso di Preparazione agli Studi di Ingegneria Università degli Studi di Brescia Docente: Massimiliano Giacomin Il punto della situazione STATO DATI
DettagliSistemi Operativi 1. Mattia Monga. 11 marzo Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia
1 Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia mattia.monga@unimi.it e 11 marzo 2008 1 c 2008 M. Monga. Creative Commons Attribuzione-Condividi allo stesso modo 2.5 Italia
DettagliOperazioni di I/O. Schema di collegamento fra dispositivi periferici e CPU
Operazioni di I/O 1 Schema di collegamento fra dispositivi periferici e CPU Memoria CPU buffer interfaccia Registro di controllo Registro Di stato Unità di controllo Dispositivo fisico 2 1 Unità di interfaccia
DettagliSystem Call per la gestione dei semafori in Linux. Semafori: modello concettuale. Creazione ed inizializzazione di un semaforo
System Call per la gestione dei semafori in Linux Domenico Cotroneo Dipartimento di Informatica e Sistemistica Semafori: modello concettuale Processore D C B (sq)coda proc.sospesi s.count=1 semaforo A
Dettagli18 - Vettori. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
18 - Vettori Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://pages.di.unipi.it/milazzo milazzo di.unipi.it Corso di
DettagliPolimorfismo parametrico vs polimorfismo per inclusione
Polimorfismo parametrico vs polimorfismo per inclusione Esercizio Definire il tipo di dato Stack con operazioni Push( element ) Pop() Non forzare una specifica implementazione Non forzare un tipo specifico
DettagliThread in Java CAPITOLO 18. 18.1 Richiami di gestione di processi
CAPITOLO 18 Thread in Java Usualmente l esecuzione di un programma è sostenuta da un processo. Nella terminologia Java i processi sono denominati thread. Un thread è dunque costituito da un flusso di esecuzione
DettagliMulti-threading. I programmi Java possono eseguire thread multipli in modalità di concorrenza logica. Come funziona il multi-threading?
Multi-threading I programmi Java possono eseguire thread multipli in modalità di concorrenza logica. Esecuzione di fatto simultanea, dati condivisi. Come funziona il multi-threading? Per l utente, più
DettagliCooperazione tra Processi
Cooperazione tra Processi Principi Il problema della sezione critica: le race condition Supporto hardware Semafori Monitor Scambio di messaggi Barriere Cos è la concorrenza? È un tema centrale nella progettazione
DettagliSAPIENZA Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica
SAPIENZA Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica Esercitazioni di PROGETTAZIONE DEL SOFTWARE (Corsi di Laurea in Ingegneria Informatica ed Automatica ed Ingegneria
DettagliIntroduzione a Java. Riferimenti
Introduzione a Java Si ringraziano Massimiliano Curcio e Matteo Giacalone 1: Introduction 1 Riferimenti! Java tutorial: http://java.sun.com/docs/books/tutorial/! Il Java tutorial è parte di una più ampia
DettagliProgrammazione ad Oggetti
Programmazione ad Oggetti Java Eccezioni Eccezioni in breve Un eccezione è un oggetto che descrive una situazione anomala o di errore L eccezioni vengono lanciate da una parte di un programma e possono
DettagliSistemi Operativi. Bruschi Monga Re. Dischi virtuali Esercizio. Concorrenza Semafori. Sincronizzazione con monitor pthreads. I-node.
1 Mattia Monga Dip. di Informatica Università degli Studi di Milano, Italia mattia.monga@unimi.it Lezione XV: Memoria di massa 2 a.a. 2015/16 1 cba 2008 16 M. Monga. Creative Commons Attribuzione Condividi
DettagliIntroduzione alla programmazione. Walter Didimo
Introduzione alla programmazione Walter Didimo Programmi Un programma è una frase (anche molto lunga) che descrive delle azioni che devono essere svolte da un calcolatore La frase deve essere dettagliata
DettagliUn programma concorrente è un programma nel quale diverse computazioni possono essere eseguite allo stesso tempo Alcuni sistemi sono implicitamente
Un programma concorrente è un programma nel quale diverse computazioni possono essere eseguite allo stesso tempo Alcuni sistemi sono implicitamente concorrenti: Concorrenza in database query caching delle
DettagliSynchronized (ancora)
Synchronized (ancora) Riscriviamo l esempio di prima. Usiamo una struttura modulare, con una classe Notificatore che ha opportuni metodi. La classe ha due campi privati, la lista buftext e un suo thread.
DettagliEsercizi sul Monitor in Java
Esercizi sul Monitor in Java 1 I filosofi a cena (E. Dijkstra, 1965) 5 filosofi sono seduti attorno a un tavolo circolare; ogni filosofo ha un piatto di spaghetti tanto scivolosi che necessitano di 2 forchette
DettagliLinguaggi di programmazione e astrazione
Linguaggi di programmazione e astrazione i linguaggi di programmazione ad alto livello moderni sono il più potente strumento di astrazione messo a disposizione dei programmatori che possono, con un solo
DettagliProgrammazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre 2014. Negli esercizi proposti si utilizzano le seguenti classi:
Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 22 settembre 2014 TEMPO DISPONIBILE: 2 ore Negli
DettagliMacchine astratte, linguaggi, interpretazione, compilazione
Macchine astratte, linguaggi, interpretazione, compilazione 1 Macchine astratte una collezione di strutture dati ed algoritmi in grado di memorizzare ed eseguire programmi componenti della macchina astratta
DettagliProgrammazione Orientata agli Oggetti in Linguaggio Java
Programmazione Orientata agli Oggetti in Linguaggio Java Classi e Oggetti: Metafora Parte a versione 2.2 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)
DettagliModello a scambio di messaggi
Modello a scambio di messaggi Aspetti caratterizzanti il modello Canali di comunicazione Primitive di comunicazione 1 Aspetti caratterizzanti il modello modello architetturale di macchina (virtuale) concorrente
DettagliThread. Thread. Creazione di nuovi processi. Applicazioni reali. La creazione di un nuovo processo costa I tempi di context switch sono elevati
Thread Thread Motivazioni Modelli Multithread Pthread, Threads in Win32, Thread in Java Problematiche relative ai Thread Thread Windows XP Thread Linux Applicazioni reali Creazione di nuovi processi Browser
DettagliProgrammazione concorrente e threads
Programmazione concorrente e threads Programmazione concorrente Un programma concorrente è un programma nel quale diverse computazioni possono essere eseguite allo stesso tempo Alcuni sistemi sono implicitamente
DettagliLezione n.2b. Threads: Callable & Future. 6/10/2008 Vincenzo Gervasi
Università degli Studi di Pisa Dipartimento di Informatica Lezione n.2b LPR-A-09 Threads: Callable & Future 6/10/2008 Vincenzo Gervasi Lezione U 2b: Callable & Future Vincenzo Gervasi 1 CALLABLE E FUTURE
Dettagli