Thread e Task. L20_MultiThread 2

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Thread e Task. L20_MultiThread 2"

Transcript

1 I Thread in Java

2 Thread e Task Multitasking: capacità dei sistemi operativi di eseguire più programmi contemporaneamente. Ciascun programma ha il proprio insieme di variabili, costanti, ecc. Multithreading capacità dei programmi di eseguire, al loro interno, più task (thread) contemporaneamente. Un programma è multithread se il thread principale lancia almeno un thread secondario. I thread condividono le variabili, le classi del programma, lo spazio di indirizzamento, ha execution stack (stack delle chiamate) e program counter (indirizzo prox istruzione) privati. L20_MultiThread 2

3 Il multithreading è estremamente diffuso (es. browser che caricano più immagini contemporaneamente, o più pagine), la gestione delle richieste concorrenti da parte di un web service o un application server. Lo stesso meccanismo di garbage collecting è svolto tramite un thread Con JAVA 5 la gestione dei thread è stata completamente rivista ed arricchita, soprattutto dal punto di vista del sincronismo. Java offre degli strumenti che facilitano l'utilizzo dei thread, rispetto ad altri linguaggi di programmazione. L20_MultiThread 3

4 I thread sono caratterizzati dal loro stato ESECUZIONE PRONTO PER L'ESECUZIONE: in attesa di essere eseguito dalla CPU SOSPESO RIPRESO dal punto in cui era stato sospeso BLOCCATO quando attende una risorsa; TERMINATO L20_MultiThread 4

5 La priorità dei thread La priorità del thread stabilisce l importanza del trhead rispetto gli altri. La CPU privilegia il thread a maggiore priorità quando deve assegnare tempo di esecuzione ai vari thread. Un thread a priorità più alta può anche terminare un thread a priorità più bassa Il thread principale. Un programma Java possiede un thread di esecuzione, che è il thread principale. In esso si generano gli altri thread per i programmi multithread. Quando il thread thread principale termina, lo stesso programma termina. L20_MultiThread 5

6 Scheduling dei thread La JVM determina il tempo di esecuzione di ciascun thread con l'algoritmo FIXED PRIORITY SCHEDULING Un thread in esecuzione viene interrotto dallo scheduler quando: Un thread con priorità più alta diventa runnable; Il metodo run termina l esecuzione o il thread esegue un yield; Quando la porzione di tempo (quanto) di tempo assegnato dallo scheduler si è esaurito (non tutti i sistemi operativi - devono supportare il time slicing ) L20_MultiThread 6

7 Creazione di un thread in Java Java offre due possibilità di creazione di un thread: una istanza di un oggetto che estende l oggetto thread (package java.lang.*). una istanza di un oggetto che implementa l interfaccia runnable L20_MultiThread 7

8 Primo caso: sottoclasse di Thread Il codice del thread (il task del thread) deve essere inserito nel metodo run Nella classe Thread l implementazione del suo metodo run è vuota. Per attivare il thread si invoca il metodo start() che a sua volta invoca il metodo run() (che può essere chiamato solo attraverso start()) L20_MultiThread 8

9 class MyThread extends Thread { public MyThread(String str) { super(str); public void run() { for (int i=0;i<10;i++) { System.out.println(getName()+"it: "+i); try { sleep((int)(math.random() * 1000)); catch (InterruptedException e) { System.out.println(getName()+" finito!"); public class test { public static void main (String[] args) { MyThread t1=new MyThread("uno"); MyThread t2=new MyThread("due"); t1.start();//attivazione del thread t1 t2.start();//attivazione del thread t2 //= QUANTI THREAD CONCORRENTI COESISTONO in questo esempio? L20_MultiThread 9

10 Metodi della classe Thread resume run sleep(ms) start stop join suspend Riprende l esecuzione di un thread sospeso Contiene il codice eseguibile del tread Sospende il thread per un tempo definito di ms millesecondi Avvia il thread invocando il codice di esecuzione Forza la terminazione ell esecuzione di un thread. Tutte le risorse del thread vengono liberate (anche i lock), attraverso la propagazione dell eccezione ThreadDeath blocca il thread chiamante in attesa della terminazione del thread di cui si invoca il metodo. Sospente indefinatemente il thread L20_MultiThread 10

11 Interrompere un Thread Un thread termina quando il suo metodo run termina. Il metodo stop() per la terminazione forzata e stato deprecato, per scoraggiarne l'uso (evitare che il thread non rilasci risorse, ecc). Il metodo interrupt è usato per richedere la terminazione di un Thread, che viene messo nello stato interrupted I thread dovrebbero di tanto in tanto controllare se sono in uno stato interrupted. L20_MultiThread 11

12 Lo stato interrupted non è una richiesta mandatoria di terminazione, ma va interpretato caso per caso (verifica altre condizioni chiusura), ecc TIPICA IMPLEMENTAZIONE public void run() { try { //== while (!Thread.currentThread().isInterrupted() && more work to do) { do more work catch(interruptedexception e) { // thread was interrupted during sleep or wait finally { cleanup, if required // exiting the run method terminates the thread L20_MultiThread 12

13 Il metodo sleep solleva la InterruptedException se viene invocato quando è in uno strato interrupted. In questo caso non c'è bisogno di considerare lo stato Interrupted public void run() { try {... while (more work to do) { do more work Thread.sleep(delay); catch(interruptedexception e) { // thread was interrupted during sleep or wait finally { cleanup, if required // exiting the run method terminates the thread L20_MultiThread 13

14 Altri metodi interrupt() static boolean interrupted() boolean isinterrupted() currentthread() Mette il trhead nello stato booleano interrupt Verifica che il thread è stato messo in uno stato interrupted. L invocazione del metodo resetta lo stato interrupted a false Verifica che il thread è stato messo in uno stato interrupted. L invocazione del metodo NON resetta lo stato interrupted Restituisce il thread corrente (statico) L20_MultiThread 14

15 Il thread principale Il metodo currentthread restituisce il riferimento al thread corrente. Se lanciato all interno del programma principale da il riferimento al thread principale public class MainThread { public static void main(string args[]) { Thread t = Thread.currentThread(); t.setname( Main Thread"); t.setpriority(1); try { t.sleep(10000); catch (InterruptedException e) { System.out.println("Thread interrotto"); L20_MultiThread 15

16 L interfaccia runnable Con Interfaccia Runnable è possibile creare thread come sottoclasse di qualsiasi altra classe (non solo di Thread) Il codice eseguibile va inserito nel metodo run() nella classe che implementa l interfaccia Runnable Si deve creare un istanza della classe Si deve creare un istanza della classe Thread passando come parametro l istanza della classe che si è creata Per lanciare il thread si deve invocare il metodo start() sul thread creato producendo la chiamata al metodo run() L20_MultiThread 16

17 class MyRunnable extends MyClass implements Runnable { // MyClass è una classe qualsiasi (non sottoclasse di thread) public void run() { for (int i=1; i<=100; i++) System.out.println( CICLO + i); public class ExRunnable { public static void main(string args[]) { MyRunnable e = new MyRunnable(); Thread t = new Thread(e); t.start(); L20_MultiThread 17

18 Thread e priorità L assegnazione delle risorse da parte della JVM avviene secondo un schema preemptive, in base alla priorità dei thread. Ciascun thread eredita la priorità dei thread genitore. La priorità si può cambiare tramite il metodo setpriority La priorità varia tra MIN_PRIORITY o MAX_PRIORITY L20_MultiThread 18

19 La sincronizzazione In molte situazioni, i thread devono condividere risorse ed accedere agli stessi oggetti. Accedendo contemporaneamente agli stessi oggetti, due o più thread possono procurare effetti incontrollati sullo stato degli oggetti L20_MultiThread 19

20 Allo stesso modo i metodi stop() e suspend() dei thread possono generare situazioni iconsistenti o blocchi critici. I Thread possono, all atto della sospensione impegnare una risorsa in modo esclusivo, generando situazioni inconsistenti o di blocco critico (deadlock) L20_MultiThread 20

21 A partire dalla JDK vers. 1.4, i metodi stop(), suspend() e resume() sono diventati deprecated (sconsigliati), pur rimanendo presenti per retro compatibilità. Le azioni di controllo e sincronizzazione fra thread si devono più propriamente realizzare tramite i metodi wait(), notify(), notifyall() e gli object locks. L20_MultiThread 21

22 I thread condividono uno spazio comune di indirizzamento, e l interazione può avvenire tramite oggetti comuni, che sono: 1)Object locks -> i thread si autoescludono (interazione competitiva) 2)Variabili 3)Metodi di sincronizzazione -> interazione cooperativa L20_MultiThread 22

23 Lock I thread gestiscono le risorse comuni attraverso i lock assimilabili ai semafori del C. Si individuano alcune sezioni di codice che operano su un oggetto come sezioni critiche (la parola chiave synchronized). Il compilatore, in corrispondenza della sezione critica inserisce una intestazione (header), ed un epilogo (alla fine), in questo modo implementa il lock associato all oggetto riferito dalla sezione critica L20_MultiThread 23

24 Esempio: Object mutex_lock= new Object(); public void A( ) { ; synchronized (mutex_lock){ /* codice sezione critica */; ; Il codice della sezione critica viene eseguito se il lock è in stato libero, altrimenti il thread rimane in attesa. Gli oggetti che vogliono accede all oggetto, sono inseriti in una tabella dalla JVM, e via via accedono all oggetto non appena viene rilasciato dai vari thread L20_MultiThread 24

25 Il codice della blocco sincronizzato viene eseguito in maniera esclusiva da un thread Non ci possono essere altre esecuzioni dello stesso blocco Non ci possono essere esecuzione di altri blocchi sincronizzati sullo stesso oggetto L20_MultiThread 25

26 Metodi synchronized E possibile definire alcuni metodi sincronized, assicurandone la loro mutua esclusione public class intvar { private int i=0; public synchronized void incrementa() { i ++; public synchronized void decrementa() {i--; L esecuzione del metodo avviene in mutua esclusione utilizzando il lock dell oggetto. L20_MultiThread 26

27 I metodi wait e notify La sincronizzazione tra i thread puo avvenire anche con i metodi wait e notify I metodi wait interagiscono con il wait set, coda di thread associati ad un oggetto Gli oggetti entrano ed escono nel wait set con i metodi wait e notify, che possono essere invocati all interno di un blocco syncronized L20_MultiThread 27

28 wait rilascia il lock, sospende il e lo inserisce in wait set. notify Estrae il thread dal wait set e lo inserisce nel entry set. NON RILASCIA IL LOCK notifyall LIMITAZIONI Estrae tutti i thread dal wait set e li inserisce nell entry set NON rilascia il lock unica coda (wait set) per ogni oggetto sincronizzato non e` possibile sospendere thread su code differenti! L20_MultiThread 28

29 public class IntBox { private int[]contenuto; private int contatore, testa, coda; public IntBox(){ //==ctr contenuto = new int[10]; contatore = 0; testa = 0; coda = 0; public synchronized int preleva (){ int elemento; while (contatore == 0) wait(); elemento = contenuto[testa]; testa = (testa + 1)%10; --contatore; notifyall(); return elemento; public synchronized void deposita (int valore){ while (contatore == 10) wait(); contenuto[coda] = valore; coda = (coda + 1)%10; ++contatore; notifyall(); L20_MultiThread 29

30 Implementazione di un semaforo binario Java non prevede i semafori come nel C, ma possono essere implementati con i metodi di sincronizzazione public class Semaphore { private int value; public Semaphore (int initial){ value = initial; synchronized public void V()//signal sul semaforo { ++value; notify(); synchronized public void P() throws InterruptedException //wait { { while (value == 0) wait(); --value; L20_MultiThread 30

31 Interfaccia Condition In Java 5 sono state introdotte le interface condition e lock che permettono di estendere il meccanismo wait/notify e di esplicitare il lock public interface Condition{ void await ()throws InterruptedException; void signal(); void signalall(); public interface Lock{ //Public instance methods void lock(); void unlock(); Condition newcondition(); I metodi await, signal, e signalall sono equivalenti ai metodi wait, notify e notify_all, riferiti alla coda di processi associata alla condition sulla quale vengono invocati) L20_MultiThread 31

32 Ad ogni variabile condizione è associato un lock al momento della sospensione del thread mediante await viene liberato; al risveglio di un thread viene occupato. La creazione di una condition avviene col metodo newcondition del lock associato ad essa. Lock lockvar=new Mylock(); //Mylock è una classe che implementa //l interfaccia Lock Condition C=lockvar.newCondition(); L20_MultiThread 32

33 Equivalenza tra meccanismo lock e syncronized public void method() { implicitlock.lock(); try { //method body finally { implicitlock.unlock(); public synchronized void method() { //method body /*(es)*/ L20_MultiThread 33

34 DeadLock Possono verificarsi delle situazioni applicative in cui la concorrenza dei thread può bloccare l'elaborazione. E' il caso in cui un thread entra in una sezione critica di un metodo A, al cui interno c'è' l'invocazione di un metodo sincronizzato B, che a sua volta invoca il metodo A. Due thread che accedono al metodo A e B possono mutuamente bloccarsi, perché aspettano l'uscita dell'altro dalla sezione critica Non c'è un meccanismo effettivo per evitare i deadlock, né strumenti offerti da Java. Si devono escludere possibili situazioni di deadlock applicativamente L20_MultiThread 34

35 Blocking Queue Le blocking queue sono code tipo FIFO speciali con le due operazioni fondamentali (aggiungere un elemento in coda e rimuovere quello in testa), con la proprietà di bloccare i thread che vi accedono per aggiungere elementi quando la coda è piena, o quando cercano di rimuovere e la coda è vuota. In questo modo si dispone di un meccanismo di sincronizzazione dei thread e di bilanciamento del carico tra i therad L20_MultiThread 35

36 Metodi di blockqueue metodo Ok KO add Aggiunge un elemento alla lista Eccezione IllegalStateException se la coda è piena remove Rimuove e restituisce l'elemento top della lista Eccezione NoSuchElementException se la coda è vuota element Restituisce l'elemento top della lista Eccezione NoSuchElementException se la coda è vuota offer poll Aggiunge un elemento e restituisce true Rimuove e restituisce l'elemento top della lista Restituisce null se la coda è piena Restituisce null se la coda è vuota peek Restituisce l'elemento top della lista Restituisce null se la coda è vuota put Aggiunge un elemento alla lista Blocca la coda se è piena take Rimuve e restituisce l'elemento top Blocca la coda se è vuota della lista L20_MultiThread 36

37 Thread safe collection Quando due thread contemporaneamente accedono ad una collection, possono danneggiare la collection, produrre stati inconsistenti. E' possibile richiedere l'accesso esclusivo con dei meccanismi di sincronizzazione Il package java.util.concurrent offre delle efficienti implementazioni di collection che thread safe, che consentono a diversi thread di accedere contemporaneamente alla struttura (fino a 16) L20_MultiThread 37

38 L'effetto si ottiene attraverso sofisticati algoritmi che regolano l'accesso ed iteratori di tipo weak che possono non tenere conto delle ultime modifiche alla struttura Esempio: ConcurrentHashMap L20_MultiThread 38

39 Interfacce Callable e Future L'interfaccia callable è simile alla Runnable solo che prevede che venga restituito un valore public interface Callable<V> { V call() throws Exception; L'interfaccia Future puo' essere usata per lanciare una computazione (asincrona), ed ottenere il risultato successivamente public interface Future<V> { V get() throws...; V get(long timeout, TimeUnit unit) throws...; void cancel(boolean mayinterrupt); boolean iscancelled(); boolean isdone(); L20_MultiThread 39

40 Thread Pools Java fornisce dei meccanismi (classi Executors) per gestire thread pool. In questo modo il numero di thread creati è controllato (con minore dispendio di risorse) newfixedthreadpool Pool di thread fisso e mantenuti in idle indefinitamente. newcachedthreadpool I thread sono creati quando necessario, e mantenuti in idle per 60 sec. newsinglethreadexecutor Un pool costituito da un solo thread che svolge i supoi compiti sequenzialmente newscheduledthreadpool Pool fisso per esecuzioni schedulate newsinglethreadscheduledexecutor Single thread per l'esecuzione schedulata L20_MultiThread 40

41 Syncronizers Il package java.util.concurrent dispone di una serie di oggetti specializzati nella sincronizzazione classe Cosa fa Quando usarla CyclicBarrier CountDownLatch Exchanger SynchronousQueue Semaphore Fa in modo che un certo numero di thread aspettano il compimento delle azioni di tutti gli altri, quindi esegue una azione opzionale (barrier action) Mette in attesa un set di thread fino a che un contatore raggiunge il valore 0 Fa in modo che due thread si scambino un oggetto quando sono pronti per farlo Fare in modo che due thread possono scambiarsi degli oggetti, quando entrambi sono pronti per farlo. Quando un thread invoca put sulla coda, si blocca fino a che un altro thread invoca take Quando è necessario aspettare che i thread abbiamo finito la loro azione per passare alla successiva Quando è necessario che un tread aspetti un certo risultato per entrare in azione Quando due trhead devono condividere una istanza modificando i suoi valori A differenza di exchanger, lo scambio dati è unidirezionale Blocca i thread fino a che è possibile Agendo sul numero di permit, consente di procedere limitare l'accesso a risorse ad un numero di thread alla volta Se permit =1 l'accesso è consentito solo se un altro thread ad il L20_MultiThread permesso 41

Java Virtual Machine

Java 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

Dettagli

T 1. Per un processo con più thread di controllo, lo stato di avanzamento della computazione di ogni thread è dato da:

T 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

Dettagli

Programmazione concorrente in Java

Programmazione 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

Dettagli

Gestione dei thread in Java LSO 2008

Gestione 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à

Dettagli

19. Introduzione al multi-threading

19. 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

Dettagli

Multithreading in Java. Fondamenti di Sistemi Informativi 2014-2015

Multithreading 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

Dettagli

Definizione di thread Proprietà dei thread in Java Gestione delle priorità nei programmi multithreaded Gruppi di thread Accesso a variabili condivise

Definizione 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

Dettagli

Programmazione concorrente in Java. Dr. Paolo Casoto, Ph.D. - 2012 1

Programmazione 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

Dettagli

Esercitazioni 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 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

Dettagli

GESTIONE DEI PROCESSI

GESTIONE 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

Dettagli

Linguaggi 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. - 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

Dettagli

Multithreading in Java

Multithreading 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

Dettagli

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

SISTEMI 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

Dettagli

Java threads (2) Programmazione Concorrente

Java 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

Dettagli

SISTEMI OPERATIVI. Sincronizzazione in Java (Semafori e barriere) Patrizia Scandurra (MODULO DI INFORMATICA II) LABORATORIO

SISTEMI 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

Dettagli

Laboratorio di Sistemi Thread Java

Laboratorio 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

Dettagli

Programmazione Concorrente in Java

Programmazione 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.

Dettagli

Lezione 15 Programmazione multithreaded

Lezione 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

Dettagli

SAPIENZA Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica

SAPIENZA 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

Dettagli

Il costrutto monitor

Il 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

Dettagli

Telematica II 17. Esercitazione/Laboratorio 6

Telematica 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

Dettagli

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

progam 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,

Dettagli

Programmazione concorrente e threads

Programmazione 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

Dettagli

Con 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).

Con 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

Dettagli

Synchronized (ancora)

Synchronized (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.

Dettagli

PROCESSI ESEMPIO THREAD. RETI DI CALCOLATORI Linguaggio Java: i Thread CORSO DI. Università degli Studi di Modena e Reggio Emilia

PROCESSI ESEMPIO THREAD. RETI DI CALCOLATORI Linguaggio Java: i Thread CORSO DI. Università degli Studi di Modena e Reggio Emilia Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria CORSO DI RETI DI CALCOLATORI Linguaggio Java: i Thread Prof. Franco Zambonelli Lucidi realizzati in collaborazione con Ing. Enrico

Dettagli

Esercitazioni 7 e 8. Bounded Buffer con sincronizzazione Java (1)

Esercitazioni 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

Dettagli

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

SISTEMI OPERATIVI. Sincronizzazione dei processi. Domande di verifica. Luca Orrù Centro Multimediale Montiferru 30/05/2007 2007 SISTEMI OPERATIVI Sincronizzazione dei processi Domande di verifica Luca Orrù Centro Multimediale Montiferru 30/05/2007 Sincronizzazione dei processi 1. Si descrivano i tipi di interazione tra processi?

Dettagli

Sincronizzazione con Java

Sincronizzazione 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

Dettagli

Un 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 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

Dettagli

Un esercizio d esame. Flavio De Paoli

Un 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

Dettagli

La concorrenza in Java package java.util.concurrent Antonio Furone

La concorrenza in Java package java.util.concurrent Antonio Furone La concorrenza in Java package java.util.concurrent Antonio Furone Coda Bloccante La classe LinkedTransferQueue è stata esplicitamente disegnata per dare supporto a problemi di tipo produttore/consumatore.

Dettagli

Thread in Java CAPITOLO 18. 18.1 Richiami di gestione di processi

Thread 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

Dettagli

Meccanismi di sincronizzazione: Semafori e Monitor

Meccanismi 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

Dettagli

Il costrutto monitor [Hoare 74]

Il costrutto monitor [Hoare 74] Il monitor 1 Il costrutto monitor [Hoare 74] Definizione: Costrutto sintattico che associa un insieme di operazioni (entry o public) ad una struttura dati comune a più processi, tale che: Le operazioni

Dettagli

Ottava Esercitazione. introduzione ai thread java mutua esclusione

Ottava Esercitazione. introduzione ai thread java mutua esclusione Ottava Esercitazione introduzione ai thread java mutua esclusione Agenda Esempio 1 Concorrenza in Java: creazione ed attivazione di thread concorrenti. Esercizio 2 da svolgere Concorrenza in Java: sincronizzazione

Dettagli

Corso di Programmazione Concorrente. Java Thread. Valter Crescenzi http://crescenzi.dia.uniroma3.it

Corso di Programmazione Concorrente. Java Thread. Valter Crescenzi http://crescenzi.dia.uniroma3.it Corso di Programmazione Concorrente Java Thread Valter Crescenzi http://crescenzi.dia.uniroma3.it Sommario Java Thread e supporto alla PC della piattaforma Java Creazione di Thread con java.lang.thread

Dettagli

Il costrutto monitor [Hoare 74]

Il costrutto monitor [Hoare 74] Il monitor 1 Il costrutto monitor [Hoare 74] Definizione: Costrutto sintattico che associa un insieme di operazioni (entry, o public) ad una struttura dati comune a più processi, tale che: Le operazioni

Dettagli

Java RMI: Esempio Completo di un Applicazione Distribuita

Java RMI: Esempio Completo di un Applicazione Distribuita Java RMI: Esempio Completo di un Applicazione Distribuita Il Problema Produttore/Consumatore in Ambiente Distribuito* *a cura del Prof. L. Nigro, Università della Calabria Java RMI (Remote Method Invocation)

Dettagli

Supporto al Sistema Operativo

Supporto 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

Dettagli

Capitolo 7: Sincronizzazione

Capitolo 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

Dettagli

Esercizi sugli Oggetti Monitor

Esercizi 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

Dettagli

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:

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: Tipi primitivi Il linguaggio Java offre alcuni tipi di dato primitivi Una variabile di tipo primitivo può essere utilizzata direttamente. Non è un riferimento e non ha senso tentare di istanziarla mediante

Dettagli

Introduzione. Meccanismi di sincronizzazione: Semafori e Monitor. Semafori - Definizione. Semafori - Descrizione informale

Introduzione. 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

Dettagli

Esercizi sul Monitor in Java

Esercizi 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

Dettagli

Sistemi Operativi. Processi GESTIONE DEI PROCESSI. Concetto di Processo. Scheduling di Processi. Operazioni su Processi. Processi Cooperanti

Sistemi 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

Dettagli

Laboratorio di Programmazione di Rete Corso A

Laboratorio 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

Dettagli

Gruppi di Thread. Java threads (3) Gruppi di thread e Timer. Operating Systems. Operating Systems. Java threads 3. Java threads 3

Gruppi 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

Dettagli

TFA 42 Sistemi e Reti di Calcolatori per la Didattica

TFA 42 Sistemi e Reti di Calcolatori per la Didattica Università degli Studi di Pisa 42 Sistemi e Reti di Calcolatori per la Didattica 29/03/2013 Laura Ricci Laura Ricci 1 DNS: DOMAIN NAME SYSTEM Persone: molti identificativi: o # CF, nome, # passaporto Host

Dettagli

RMI Remote Method Invocation

RMI Remote Method Invocation RMI Remote Method Invocation [Pagina intenzionalmente vuota] (1 12 2004) slide 4:1/18 (p.106) Un applicazione RMI è un applicazione distribuita ad oggetti. Applicazione RMI tipica, strutturata in: server:

Dettagli

RMI. Java RMI RMI. G. Prencipe prencipe@di.unipi.it

RMI. Java RMI RMI. G. Prencipe prencipe@di.unipi.it Java Remote Method Invocation -- RMI G. Prencipe prencipe@di.unipi.it RMI RMI è una tecnologia JAVA che permette a una JVM di comunicare con un altra JVM per farle eseguire metodi È possibile che oggetti

Dettagli

Lezione n.2 LPR - Informatica Applicata Thread Pooling, Callable Gestione Indirizzi IP

Lezione n.2 LPR - Informatica Applicata Thread Pooling, Callable Gestione Indirizzi IP Lezione n.2 LPR - Informatica Applicata Thread Pooling, Callable Gestione 01/03/2010 THREAD POOL EXECUTOR import java.util.concurrent.*; public class ThreadPoolExecutor implements ExecutorService {public

Dettagli

Informatica 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. 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

Dettagli

Sommario. G. Piscitelli

Sommario. 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

Dettagli

Terza Esercitazione. Unix - Esercizio 1. Unix System Call Exec Java Introduzione Thread

Terza 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

Dettagli

Compute engine generici in RMI

Compute engine generici in RMI Compute engine generici in RMI Esempio: Calcolo del prodotto scalare Un unico server offre il servizio di calcolo del prodotto scalare tra vettori di interi Un client richiede al server il calcolo del

Dettagli

Gestione delle Eccezioni

Gestione delle Eccezioni Gestione delle Eccezioni Condizioni di Errore Una condizione di errore in un programma può avere molte cause Errori di programmazione Divisione per zero, cast non permesso, accesso oltre i limiti di un

Dettagli

Pronto Esecuzione Attesa Terminazione

Pronto Esecuzione Attesa Terminazione Definizione Con il termine processo si indica una sequenza di azioni che il processore esegue Il programma invece, è una sequenza di azioni che il processore dovrà eseguire Il processo è quindi un programma

Dettagli

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati Condizione di sincronizzazione Qualora si voglia realizzare una determinata politica di gestione delle risorse,la decisione se ad

Dettagli

Lezione n.2b. Threads: Callable & Future. 6/10/2008 Vincenzo Gervasi

Lezione 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

Gestione di errori e situazioni eccezionali. Gestione delle eccezioni. Gestione tradizionale di errori e situazioni eccezionali (2)

Gestione di errori e situazioni eccezionali. Gestione delle eccezioni. Gestione tradizionale di errori e situazioni eccezionali (2) Gestione di errori e situazioni eccezionali Gestione delle eccezioni Una procedura (utente o di libreria) deve poter segnalare l impossibilità di produrre un risultato significativo o la propria terminazione

Dettagli

Algoritmi di Ricerca. Esempi di programmi Java

Algoritmi di Ricerca. Esempi di programmi Java Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare

Dettagli

Gli EJB offrono vari vantaggi allo sviluppatore di una applicazione

Gli EJB offrono vari vantaggi allo sviluppatore di una applicazione Gli EJB offrono vari vantaggi allo sviluppatore di una applicazione Un ambiente di esecuzione che gestisce o naming di oggetti, sicurezza, concorrenza, transazioni, persistenza, distribuzione oggetti (location

Dettagli

Gestione delle eccezioni in Java

Gestione delle eccezioni in Java Gestione delle eccezioni in Java - Introduzione al concetto di eccezioni E possibile definire un eccezione come un situazione imprevista che il flusso di un applicazione può incontrare. È possibile gestire

Dettagli

Monitor. Introduzione. Struttura di un TDA Monitor

Monitor. Introduzione. Struttura di un TDA Monitor Monitor Domenico Cotroneo Dipartimento di Informatica e Sistemistica Introduzione E stato introdotto per facilitare la programmazione strutturata di problemi in cui è necessario controllare l assegnazione

Dettagli

Organizzazione della lezione. 15. Java Remote Method Invocation (3) Lo schema del Factory Design Pattern - 1. Factory design pattern

Organizzazione della lezione. 15. Java Remote Method Invocation (3) Lo schema del Factory Design Pattern - 1. Factory design pattern Organizzazione della lezione 15. Java Remote Method Invocation (3) Vittorio Scarano Corso di Programmazione Distribuita Laurea di I livello in Informatica Università degli Studi di Salerno Il design pattern

Dettagli

Sistemi Operativi. Des crizione e controllo dei proces s i

Sistemi Operativi. Des crizione e controllo dei proces s i Sistemi Operativi Des crizione e controllo dei proces s i Servizi di un Sistema Operativo Permettere ad un utente di creare processi (lanciare programmi) Interallacciare l esecuzione di diversi processi,

Dettagli

Astrazioni sul controllo. Iteratori

Astrazioni sul controllo. Iteratori Astrazioni sul controllo Iteratori Nuove iterazioni Definendo un nuovo tipo come collezione di oggetti (p. es., set) si vorrebbe disporre anche di un operazione che consenta cicli (iterazioni) Es.: gli

Dettagli

Programmazione Java Threads

Programmazione Java Threads Programmazione Java Threads Amleto Di Salle Dipartimento di Ingegneria e Scienze dell Informazione e Matematica Università degli Studi dell Aquila amleto.disalle@univaq.it. Sommario 2 2» Cosa è: Processo»

Dettagli

Introduzione al linguaggio Java. Applicazioni ed Applets: come scriverli e farli girare. Caratteristiche originali e differenze con C / C++.

Introduzione al linguaggio Java. Applicazioni ed Applets: come scriverli e farli girare. Caratteristiche originali e differenze con C / C++. Introduzione al linguaggio Java Cosa c è di nuovo in Java? Java ed Internet. Applicazioni ed Applets: come scriverli e farli girare. Caratteristiche originali e differenze con C / C++. Dove trovare informazioni?

Dettagli

Thread. Thread. Creazione di nuovi processi. Applicazioni reali. La creazione di un nuovo processo costa I tempi di context switch sono elevati

Thread. 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

Dettagli

Sistemi Operativi Sincronizzazione tra Processi

Sistemi Operativi Sincronizzazione tra Processi Sistemi Operativi Processi Docente: Claudio E. Palazzi cpalazzi@math.unipd.it Crediti per queste slides al Prof. Tullio Vardanega 1 Processi indipendenti possono avanzare concorrentemente senza alcun vincolo

Dettagli

Sistemi Operativi. Lezione 7 Comunicazione tra processi

Sistemi 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

Dettagli

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

Sistemi Operativi. Lez. 13: primitive per la concorrenza monitor e messaggi Sistemi Operativi Lez. 13: primitive per la concorrenza monitor e messaggi Osservazioni I semafori sono strumenti particolarmente potenti poiché consentono di risolvere ogni problema di sincronizzazione

Dettagli

Algoritmi e Strutture Dati. Tipo di dato astratto e Strutture dati elementari

Algoritmi e Strutture Dati. Tipo di dato astratto e Strutture dati elementari Algoritmi e Strutture Dati Tipo di dato astratto e Strutture dati elementari 1 Argomenti della lezione Tipi di dato astratto Strutture dati elementari Liste o Implementazione di liste in Java Stack Code

Dettagli

QUEUE : considerazioni. QUEUE : considerazioni. QUEUE : esempio. QUEUE : esempio

QUEUE : considerazioni. QUEUE : considerazioni. QUEUE : esempio. QUEUE : esempio QUEUE : considerazioni QUEUE : considerazioni Si è realizzata una struttura dati complessa utilizzandone una primitiva, l array. Il pregio di tale implementazione è il basso costo computazionale, mentre

Dettagli

Servers Activatable. Massimo Merro Programmazione di Rete 166 / 193

Servers Activatable. Massimo Merro Programmazione di Rete 166 / 193 Servers Activatable Nelle lezioni precedenti abbiamo detto che una referenza remota ad un server di tipo UnicastRemoteObject rimane valida finchè il server è in esecuzione. Quando il server termina, o

Dettagli

/** * VETTORE DINAMICO elementi */ private Vector elementi; /** * METODO COSTRUTTORE */ public coda() { elementi=new Vector(); }

/** * VETTORE DINAMICO elementi */ private Vector elementi; /** * METODO COSTRUTTORE */ public coda() { elementi=new Vector(); } import java.util.*; class coda * Questa classe contiene tutti i metodi per la gestione della coda * @author D'Ambrosio Giovanni Classe 4D I.T.I.S. Grottaminarda * @version 26/02/2010 * VETTORE DINAMICO

Dettagli

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione Orientata agli Oggetti in Linguaggio Java Programmazione Orientata agli Oggetti in Linguaggio Java Tecniche di Programmazione: C# versione 1.1 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)

Dettagli

Esercizi e soluzioni

Esercizi e soluzioni Esercizi e soluzioni Esercizi e soluzioni Esercizi modulo 1 Esercizio 1.a) HelloWorld Digitare, salvare, compilare ed eseguire il programma HelloWorld. Consigliamo al lettore di eseguire questo esercizio

Dettagli

Processi e thread. Dipartimento di Informatica Università di Verona, Italy. Sommario

Processi e thread. Dipartimento di Informatica Università di Verona, Italy. Sommario Processi e thread Dipartimento di Informatica Università di Verona, Italy Sommario Concetto di processo Stati di un processo Operazioni e relazioni tra processi Concetto di thread Gestione dei processi

Dettagli

IL SISTEMA OPERATIVO

IL SISTEMA OPERATIVO IL SISTEMA OPERATIVO... è l insieme dei programmi che rende agevole l uso dell hardware, mascherando le caratteristiche delle risorse fisiche (interfaccia) gestisce le risorse fisiche ottimizzandone l

Dettagli

I THREAD O PROCESSI LEGGERI Generalità

I THREAD O PROCESSI LEGGERI Generalità I THREAD O PROCESSI LEGGERI Generalità Thread: segmento di codice (funzione) Ogni processo ha un proprio SPAZIO DI INDIRIZZAMENTO (area di memoria) Tutti i thread genereti dallo stesso processo condividono

Dettagli

Prova d Esame 07.04.2006 Compito A

Prova d Esame 07.04.2006 Compito A DOMANDA 1 (6 punti) Si analizzi il codice seguente e si scriva l output prodotto dai metodi main public class General { public static String s1 = "Ciao"; protected int n; public General() { n = 1; public

Dettagli

Programmazione distribuita

Programmazione distribuita Programmazione distribuita 1 Architettura client-server È il modo classico di progettare applicazioni distribuite su rete Server offre un servizio "centralizzato" attende che altri (client) lo contattino

Dettagli

Specifica i tipi di oggetti a creare, utilizzando un istanza prototipo, e crea nuove istanze tramite la copia di questo prototipo.

Specifica i tipi di oggetti a creare, utilizzando un istanza prototipo, e crea nuove istanze tramite la copia di questo prototipo. Prototype 28 4. Prototype (GoF pag. 117) 4.1. Descrizione 4.2. Esempio Specifica i tipi di oggetti a creare, utilizzando un istanza prototipo, e crea nuove istanze tramite la copia di questo prototipo.

Dettagli

Sistemi Operativi. Descrizione e controllo dei processi

Sistemi Operativi. Descrizione e controllo dei processi Sistemi Operativi Descrizione e controllo dei processi Servizi di un Sistema Operativo Permettere ad un utente di creare processi (lanciare programmi) Interallacciare l esecuzione di diversi processi,

Dettagli

Implementazione dei monitor tramite semafori Attesa condizionale Sincronizzazione nei sistemi operativi reali Transazioni atomiche

Implementazione dei monitor tramite semafori Attesa condizionale Sincronizzazione nei sistemi operativi reali Transazioni atomiche Implementazione dei monitor tramite semafori Attesa condizionale Sincronizzazione nei sistemi operativi reali Transazioni atomiche 5.1 Implementazione dei monitor con i semafori Un monitor è un tipo di

Dettagli

Prova d Esame 07.04.2006 Compito B

Prova d Esame 07.04.2006 Compito B DOMANDA 1 (6 punti) Si analizzi il codice seguente e si scriva l output prodotto dai metodi main public class General { public static String s1 = "ciao"; protected int n; public General() { n = 3; public

Dettagli

Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma. Ingegneria del software A

Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma. Ingegneria del software A Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Ingegneria del software A Programmazione concorrente (in Java) Michele Tomaiuolo Multi-programmazione

Dettagli

Gestione dei processi. Marco Cesati. Schema della lezione. Blocco di controllo 2. Sezioni e segmenti. Gestione dei processi. Job.

Gestione dei processi. Marco Cesati. Schema della lezione. Blocco di controllo 2. Sezioni e segmenti. Gestione dei processi. Job. Di cosa parliamo in questa lezione? Lezione 4 Cosa è un processo e come viene gestito dal SO 1 e job 2 Il blocco di controllo Sistemi operativi 3 Struttura di un file eseguibile 4 La schedulazione dei

Dettagli

Java per programmatori C++

Java per programmatori C++ 1 of 10 Java per programmatori C++ autore: Matteo Lucarelli ultima versione su: matteolucarelli.net Architettura e concetti generali Cosa scaricare ed installare Tutti gli strumenti per la programmazione

Dettagli

Introduzione a Java Remote Method Invocation (RMI)

Introduzione a Java Remote Method Invocation (RMI) Introduzione a Java Remote Method Invocation (RMI) SAPIENZA Università di Roma Corso di Architetture Software Orientate ai Servizi E risuona il mio barbarico yawp sopra i tetti del mondo ( I sound my barbaric

Dettagli

Sistemi Operativi. Scheduling dei processi

Sistemi Operativi. Scheduling dei processi Sistemi Operativi Scheduling dei processi Scheduling dei processi Se più processi sono eseguibili in un certo istante il sistema deve decidere quale eseguire per primo La parte del sistema operativo che

Dettagli

Mobilità di Codice. Massimo Merro Programmazione di Rete 128 / 144

Mobilità di Codice. Massimo Merro Programmazione di Rete 128 / 144 Mobilità di Codice Abbiamo già visto come un dato host possa trasmettere un oggetto (serializzabile) ad un altro host. Quest ultimo potrà eseguire l oggetto pur non possedendo il bytecode della classe

Dettagli

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

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2015-16. Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2015-16 Pietro Frasca Lezione 15 Martedì 24-11-2015 Struttura logica del sottosistema di I/O Processi

Dettagli

Programmazione concorrente in Java. da materiale di Carlo Ghezzi e Alfredo Mo8a

Programmazione concorrente in Java. da materiale di Carlo Ghezzi e Alfredo Mo8a Programmazione concorrente in Java da materiale di Carlo Ghezzi e Alfredo Mo8a Parallelismo = mul

Dettagli

Java. Programmazione orientata agli oggetti

Java. Programmazione orientata agli oggetti Java Programmazione orientata agli oggetti Nella programmazione orientata agli oggetti (OOP), un applicazione consiste di una collezione di oggetti interagenti, ognuno dei quali comprende una struttura

Dettagli

Progetto di Laboratorio per il corso di Programmazione in Rete e Laboratorio

Progetto di Laboratorio per il corso di Programmazione in Rete e Laboratorio Progetto di Laboratorio per il corso di Programmazione in Rete e Laboratorio Anno Accademico 2002/2003 Matteo Baldoni Aggiornato a: May 8, 2003 Abstract Queste pagine descrivono il laboratorio per il corso

Dettagli