Decima Esercitazione. Accesso a risorse condivise tramite Monitor Java
|
|
|
- Lelio Amore
- 9 anni fa
- Просмотров:
Транскрипт
1 Decima Esercitazione Accesso a risorse condivise tramite Monitor Java 1
2 Agenda Esempio 1 La banca: gestione di una risorsa condivisa da più thread, con politica prioritaria Esercizio 2 da svolgere Accesso a risorsa condivisa con sincronizzazioni complesse tramite Monitor
3 Esempio 1 la banca Si consideri una piccola filiale di banca che rende disponibili alcuni servizi ai propri clienti tramite uno sportello. I clienti della filiale possono essere intestatari di uno ed un solo conto corrente (CC). Ogni conto corrente, individuato univocamente da un codice intero, è caratterizzato da un saldo, che rappresenta l importo attualmente depositato nel conto.
4 Esempio 1 la banca Per la gestione dei conti correnti, la filiale offre 2 servizi: Prelievo dal proprio conto corrente: è l operazione mediante la quale un cliente estrae dal proprio CC un importo X dato; si noti che tale operazione: Può essere eseguita soltanto dall intestatario del CC Non può essere eseguita se il saldo del CC è minore di X; in tal caso il richiedente aspetta che nel conto vi sia un importo sufficiente. Versamento su un conto corrente: è l operazione mediante la quale un cliente aggiunge ad un certo CC (intestato a qualunque cliente) un importo dato. Si noti che tale operazione può essere eseguito da qualunque cliente della filiale (eventualmente diverso dall intestatario del CC). Si supponga che ogni operazione richieda un tempo non trascurabile: ogni cliente che trova lo sportello occupato si mette in attesa.
5 Esempio 1 la banca A tale scopo è previsto 1 solo sportello, mediante il quale i clienti possono richiedere sia operazioni di prelievo che di versamento. I Clienti vengono classificati in due categorie: Clienti Standard, il cui saldo attuale è minore di ; Clienti Vip, il cui saldo attuale è maggiore o uguale di Si noti che ogni cliente può cambiare categoria dinamicamente (in base, cioè, al saldo attuale). Si progetti una politica di gestione dello sportello della filiale che tenga conto delle specifiche date e che, inoltre, soddisfi i seguenti vincoli: Le operazioni di versamento abbiano la priorità su quelle di prelievo; Nell ambito della stessa operazione (prelievo o versamento), i clienti Vip abbiano la priorità sui clienti Standard.
6 Esempio 1 la banca Si realizzi un applicazione nel linguaggio Java che, utilizzando variabili condizione e monitor, implementi la politica di gestione e nella quale : i clienti siano rappresentati da thread concorrenti; si supponga che ogni cliente richieda periodicamente alla filiale un operazione (prelievo dal proprio CC o versamento in un CC casuale).
7 Quali thread? Impostazione! thread iniziale! k clienti della banca Thread iniziale Cliente 1 Cliente 2 Cliente K Quale risorsa comune?! Sportello della filiale! associamo allo Sportello un "monitor", che controlla gli accessi in base alla specifica politica di accesso. La sincronizzazione viene realizzata mediante variabili condizione
8 Struttura dei thread public class Cliente extends Thread{ private monitor M; private int conto, max; Random r = new Random(); public Cliente(int conto, monitor m, int ncc){ this.m=m; this.conto=conto; // numero di conto this.max=ncc; //massimo numero di cc
9 Struttura dei thread - versamento public void run(){ int op, cc, somma; try { while (true){ op=r.nextint(2); if (op==0) { //versamento cc= r.nextint(max); somma= r.nextint(10)*10000; M.versamento(cc, conto, somma); Thread.sleep(250); M.fine_operazione(); else{ //prelienvo continua
10 Struttura dei thread - prelievo // else{ //prelievo somma= r.nextint(10)*10000; M.prelievo(conto,somma); Thread.sleep(250); M.fine_operazione(); Thread.sleep(250); //fine while catch (InterruptedException e) { //fine run()
11 Monitor: sportello della filiale Variabili di stato: Conti correnti: vettore di N interi (uno per conto corrente) private int[] CC; Dove: CC[i] è il denaro disponibile nel conto del cliente i.
12 Politica di Sincronizzazione Un thread si sospende: se lo sportello è occupato se deve prelevare e non c è disponibilità sufficiente se ci sono thread più prioritari in attesa Vincoli di priorità: Le operazioni di versamento hanno priorità sui prelievi; Nell ambito della stessa operazione (prelievo o versamento), i clienti Vip abbiano la priorità sui clienti Standard. Ordine di priorità: Versamento vip Versamento standard Prelievo vip Prelievo standard Per la sospensione dei thread definiamo 4 condition (una per ogni livello di priorità)
13 Monitor Lock per la mutua esclusione: private Lock lock = new ReentrantLock(); Condition. Per la sospensione dei thread in attesa definiamo 4 condition (una per ogni livello di priorità): private Condition VV=lock.newCondition(); //coda dei Vip che vogliono versare private Condition VS= lock.newcondition(); //coda Standard che vogliono versare private Condition PV= lock.newcondition(); //coda Vip che vogliono prelevare private Condition PS= lock.newcondition(); //coda Standard che vogliono prelevare Contatori dei thread sospesi in ogni coda: private int sospvv, sospvs; private int sosppv, sospps;
14 Monitor public class Monitor{ private int N; //massimo numero di CC private final int VIP=0; //TIPO VIP private final int STA=1; //TIPO CLIENTE STANDARD private final int soglia=50000; private int[] CC; //CONTI CORRENTIi private Lock lock= new ReentrantLock(); private Condition VV= lock.newcondition() private Condition VS= lock.newcondition() private Condition PV= lock.newcondition() private Condition PS= lock.newcondition() private int sospvv, sospvs, sosppv, sospps; boolean occupato; //presenza di 1cliente allo sportello
15 //Costruttore: public Monitor( int NC) { int i; N=NC; CC=new int[n]; for(i=0; i<n; i++) CC[i]=0; occupato=false; sosppv=0; sospps=0; sospvv=0; sospvs=0; Monitor Inizialmente i conti sono tutti vuoti, lo sportello è libero e nessuno è sospeso in cosa
16 Monitor - prelievo public void prelievo(int conto, int somma) throws InterruptedException { lock.lock(); try { while( ){ mutua esclusione 1. Lo sportello è occupato. 2. non ci sono abbastanza soldi nel conto 3. questo conto è di tipo STA e qualche VIP attende di prelevare 4. qualcuno (VIP o STA) è sospeso in atteso di versare <attesa sulla condition opportuna> occupato=true; CC[conto]-=somma; finally { lock.unlock();
17 mutua esclusione Monitor - prelievo public void prelievo(int conto, int somma) throws InterruptedException { lock.lock(); try { while( occupato CC[conto]<somma ((sosppv > 0) && (tipo(conto)==sta)) sospvv>0 sospvs>0 ){ if (tipo(conto) == VIP){ sosppv++; PV.await(); sosppv--; else{ sospps++; PS.await(); sospps--; occupato=true; CC[conto]-=somma; finally { lock.unlock();
18 Monitor - versamento public void versamento(int conto,int mioconto,int somma) throws InterruptedException{ lock.lock(); try{ while( ){ mutua esclusione 1. Lo sportello è occupato 2. questo conto è di tipo STA e qualche VIP attende di versare <attesa sulla condition opportuna> occupato=true; CC[conto]+=somma; finally{ lock.unlock();
19 Monitor - versamento mutua esclusione public void versamento(int conto,int mioconto,int somma) throws InterruptedException{ lock.lock(); try{ while( occupato ((sospvv > 0) && (tipo(mioconto)==sta))){ if(tipo(mioconto) == VIP){ sospvv++; VV.await(); sospvv--; else { sospvs++; VS.await(); sospvs--; occupato=true; CC[conto]+=somma; finally{ lock.unlock();
20 public void fine_operazione(){ lock.lock(); try{ occupato=false; //signal in ordine di priorità: if (sospvv>0) VV.signalAll(); if (sospvs>0) VS.signalAll(); if (sosppv>0) PV.signalAll(); if (sospps>0) PS.signalAll(); finally{ lock.unlock(); private int tipo(int conto){//determina tipo di conto if (CC[conto] < soglia) return STA; else return VIP;
21 Programma di test public class banca { public static void main (String args[]) { final int NC=20; int i; cliente []Clienti= new cliente[nc]; monitor M = new monitor(nc); for (i = 0; i < NC; i++) { Clienti[i] = new cliente(i, M, NC); Clienti[i].start();
22 Esercizio 2 - La collezione di figurine Una nota casa editrice vuole realizzare un sito web dedicato ai collezionisti di figurine dell album Campionato di calcio L album è composto da 100 diverse figurine, ognuna individuata univocamente da un intero; tra di esse, 30 sono classificate come figurine rare, e le rimanenti 70 come figurine normali. Il sito offre un servizio che permette ad ogni utente collezionista di effettuare scambi di figurine. A questo scopo il sistema gestisce un deposito di figurine, nel quale, per ogni diversa figurina vi può essere più di un esemplare.
23 Esercizio 2 - regole Il meccanismo di scambio, è regolamentato come segue: Si può scambiare solo una figurina alla volta; Richiesta di scambio: ogni utente U che desidera una figurina A può ottenerla, se a sua volta offre un altra figurina B; in seguito a una richiesta di scambio, il sistema aggiunge la figurina B all insieme delle figurine disponibili e successivamente verifica se esiste almeno una figurina A disponibile: se A è disponibile, essa viene assegnata all utente U, che può così continuare la propria attività; se A non è disponibile, l utente U viene messo in attesa.
24 Esercizio 2 - regole Si progetti la politica di gestione del servizio di scambio che tenga conto delle specifiche date e che inoltre soddisfi il seguente vincolo: le richieste di utenti che offrono figurine rare abbiano la precedenza sulle richieste di utenti che offrono figurine normali; ad esempio: CollezA chiede 7 offrendo 3[RARA] 7 non disponibile CollezB chiede 7 offrendo 50[NORM] 7 non disponibile 7 diventa disponibile => signalall() e la CPU schedula B B ha offerto una figurina NORM. C è qualcuno che ha offerto una RARA in attesa della stessa figurina?? Sì => B attende
25 Suggerimenti Quali thread?! thread iniziale! K utenti del servizio Thread iniziale Utente 1 Utente 2 Utente K Qual è la risorsa comune? Deposito delle Figurine associamo al Deposito un "monitor", che controlla gli accessi in base alla specifica politica di accesso. La sincronizzazione viene realizzata mediante variabili condizione.
26 Suggerimenti public class Collezionista extends Thread{ private monitor M; private int offerta, richiesta, max; public Collezionista(monitor m, int NF){ this.m=m; this.max=nf; public void run(){ try { while (true){ <definizione di offerta e richiesta> M.scambio(offerta, richiesta); Thread.sleep( ); catch (InterruptedException e) {
27 Monitor Deposito figurine Stato del Deposito: Figurine disponibili: vettore di 100 interi (uno per figurina della collezione) private int[] FIGURINE; Dove FIGURINE[i] è il numero di esemplari disponibili della figurina i. (inizialmente 1 per ogni figurina) Convenzione adottata: Se i<30, si tratta di una figurina rara; Se i>= 30, si tratta di una figurina comune.
28 Monitor Deposito figurine Lock per la mutua esclusione: private Lock lock = new ReentrantLock(); Condition. Per la sospensione dei thread in attesa di una figurina, definiamo 2 condition (una per ogni livello di priorità): private Condition rare= ; //coda thread che hanno offerto figurine rare private Condition normali= ; //coda thread hanno offerto figurine normali Contatori dei thread sospesi in ogni coda: private int[] sosprare; private int[] sospnormali; //devo sapere chi è sospeso in attesa di quella specifica figurina => array
29 Monitor Deposito figurine public class Monitor { private final int N=100; //numero totale di figurine private final int maxrare=30; private int[] FIGURINE; //figurine disponibili private Lock lock= new ReentrantLock(); private Condition rare= lock.newcondition(); private Condition normali= lock.newcondition(); private int[] sosprare; private int[] sospnormali; public Monitor(int N ) { //Costruttore public void scambio(int off,int rich)//metodo entry: throws InterruptedException { NB: è plausibile che prima o poi il deposito vada in deadlock. Quando accadrà?
Esercitazione maggio 2011
Esercitazione 11 23 maggio 2011 Monitor in Java Esercizio 1 In un sito di interesse geologico e` possibile visitare una grotta sotterranea, raggiungibile soltanto attraverso uno stretto cunicolo. Per motivi
Esercizio sul Monitor in Java. 18 maggio 2011
Esercizio sul Monitor in Java 18 maggio 2011 1 Il Bar dello Stadio In uno stadio e` presente un unico bar a disposizione di tutti i tifosi che assistono alle partite di calcio. I tifosi sono suddivisi
Esercizi sul Monitor in Java. 22 Maggio 2015
Esercizi sul Monitor in Java 22 Maggio 2015 1 Il Bagno del Ristorante Si consideri la toilette di un ristorante. La toilette è unica per uomini e donne. Utilizzando Java, si realizzi un'applicazione concorrente
Esercizio 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:
UNIVERSITÀ DEGLI STUDI DI BERGAMO
UNIVERSITÀ DEGLI STUDI DI BERGAMO DIPARTIMENTO DI INGEGNERIA DELL INFORMAZIONE E METODI MATEMATICI Corso di Laurea in Ingegneria Informatica/Meccanica Esame di Sistemi Operativi a.a. 2008-09 (Modulo di
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
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
Esercitazione 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,
Esercitazione 3 Monitor. 22 Novembre 2012
Esercitazione 3 Monitor 22 Novembre 2012 Esercizio 1 L amministrazione comunale di una città ha organizzato un sistema di prestito gratuito di biciclette rivolto ai cittadini ed ai turisti. Il prestito
Esercizio monitor con pthreads
Esercizio monitor con pthreads Si consideri la pista di pattinaggio sul ghiaccio di una località turistica montana. La pista di pattinaggio è aperta a tutti. In particolare i clienti dell impianto si suddividono
Esercizio semafori Java
Esercizio semafori Java Esercizio di programmazione concorrente in Java Si vuole realizzare un sistema per la gestione delle transazioni commerciali relative a un mercato ortofrutticolo all ingrosso. Il
public static boolean occorre (int[] a, int n) { int i = 0; boolean trovato = false;
Metodi iterativi con array monodimensionali 1. Scrivere un metodo che, dato un array di interi a, restituisce il valore minimo in a. public static int minimo (int[] a) { int min = a[0]; for (int i=1; i
Concorrenza e sincronizzazione
Concorrenza e sincronizzazione Ingegneria del software Ing. Jody Marca [email protected] Cosa faremo oggi 2 Concorrenza Sincronizzazione Concorrenza 3 Nei programmi Java fino ad ora sviluppati è presente
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
Sistemi Operativi T. Esercizi
Sistemi Operativi T Esercizi Esercizio monitor Si consideri la toilette di un ristorante. La toilette è unica per uomini e donne. Utilizzando la libreria pthread, si realizzi un'applicazione concorrente
19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
19 - Eccezioni 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 Corso
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
Java thread, concorrenza
Java thread, concorrenza laboratorio 1 A.Memo febbraio 2004 il thread principale in Java ogni programma in esecuzione è un thread il metodo main() è associato al main thread per poter accedere alle proprietà
Esercizio sui Semafori
Esercizio sui Semafori Il mercato ortofrutticolo Sistemi Operativi T AA 2011-2012 1 Esercizio di programmazione concorrente in Java Si vuole realizzare un sistema per la gestione delle transazioni commerciali
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
3. un metodo che restituisce l elenco delle matricole di tutti gli studenti del corso;
Un esempio di definizione di classe con array di oggetti Sia data la classe StudUniv per gli studenti universitari (definita in una lezione precedente). Scrivere una nuova classe Corso, dove ciascun corso
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
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
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
Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro
Laboratorio di Programmazione Lezione 2 Cristian Del Fabbro Prossima lezione GIOVEDÌ 29 OTTOBRE 14:00 Input da tastiera package input; import java.io.*; public class Input { public static void main(string[]
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
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
Lab 4: Locks, Condition Variables in Java
Dept. of Computer Science Lab 4: Locks, Condition Variables in Java Matteo Camilli [email protected] Laboratorio di Sistemi Operativi a.a. 2015/16 Università degli Studi di Bergamo 1 Esercizi Lab3
Laboratorio di Programmazione 1 [Java]
Laboratorio di Programmazione 1 [Java] Prova di esame - 26 Gennaio 2011 Tempo massimo: 50 minuti Si implementino in Java le classi Tavolo e Pizzeria. La classe Tavolo ha i seguenti attributi: nome (una
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
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
Esercitazione 2: Java Thread. Java Thread. Java Thread. Un thread:
Esercitazione 2: Thread Un thread è un singolo flusso sequenziale di controllo all interno di un processo Un thread (o processo leggero) è un unità di esecuzione che condivide codice e dati con altri thread
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
Multithreading in Java I parte. Lorenzo Gallucci
Multithreading in Java I parte Lorenzo Gallucci Java: un linguaggio ed un sistema predisposti per il multitasking È possibile creare e gestire Thread nativamente (senza dover ricorrere a librerie esterne)
Fondamenti di Informatica. Algoritmi di Ricerca e di Ordinamento
Fondamenti di Informatica Algoritmi di Ricerca e di Ordinamento 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare se un elemento fa parte della sequenza oppure l elemento
Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni
Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni Esercizio 1 Dire quale è la complessità temporale del seguente metodo, espressa con notazione asintotica O(.) (con la migliore
Esercizio sul Monitor. Ponte con utenti grassi e magri 11 Novembre 2013
Esercizio sul Monitor Ponte con utenti grassi e magri 11 Novembre 2013 1 Ponte con utenti grassi e magri Si consideri un ponte pedonale che collega le due rive di un fiume. Al ponte possono accedere due
Esercitazione. Docente Ing. Mariateresa Celardo
Esercitazione Docente Ing. Mariateresa Celardo [email protected] Scrivere la classe Motorino che ha i seguenti attributi colore: una stringa indicante il colore del motorino, velocità: un
Esempio: Interfacce. Gioco Interfacce
Esempio: Interfacce 1 Descrizione Si supponga di avere delle carte da gioco. Ogni carta rappresenta un Personaggio che può essere di tipo o Umano o Mostro. Un Personaggio di tipo Umano ha una forza fisica
Algebra di Boole: Concetti di base. E un algebra basata su tre operazioni logiche
Fondamenti di Informatica Algebra di Boole: Concetti di base Fondamenti di Informatica - D. Talia - UNICAL Algebra di Boole E un algebra basata su tre operazioni logiche OR AND NOT Ed operandi che possono
Monitor [Hoare 74] Costrutto sintattico che associa un insieme di procedure/funzioni (entry) ad una struttura dati comune a più processi.
Monitor [Hoare 74] Costrutto sintattico che associa un insieme di procedure/funzioni (entry) ad una struttura dati comune a più processi. Il compilatore può verificare che esse siano le sole operazioni
Esempio: Interfacce. Gioco Interfacce
Esempio: Interfacce 1 Descrizione Si supponga di avere delle carte da gioco. Ogni carta rappresenta un Personaggio che può essere di tipo o Umano o Mostro. Un Personaggio di tipo Umano ha una forza fisica
Programmazione 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
UNIVERSITÀ DEGLI STUDI DI BERGAMO
UNIVERSITÀ DEGLI STUDI DI BERGAMO DIPARTIMENTO DI INGEGNERIA DELL INFORMAZIONE E METODI MATEMATICI Corso di Laurea in Ingegneria Informatica Esame di Sistemi Operativi (Modulo del C.I. di Reti di Calcolatori
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
Le basi del linguaggio Java
Le basi del linguaggio Java Compilazione e interpretazione Quando si compila il codice sorgente scritto in Java, il compilatore genera il codice compilato, chiamato bytecode. È un codice generato per una
Esercizi di utilizzo del semaforo semplice di competizione per l'uso di una risorsa comune
Esercizi di utilizzo del semaforo semplice di competizione per l'uso di una risorsa comune a) Uso di una risorsa condivisa Siano P 1, P 2, P 3,, P k i processi che condividono l uso di una risorsa comune
Prova d Esame Compito A
Domanda 1 A) Si richiede di analizzare le seguenti sezioni di codice. Il candidato indichi il risultato dell esecuzione del main. public class Father { private static int counter=0; private int code; public
Sincronizzazione. 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
Soluzioni 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
Il monitor. Costrutti linguistici per la sincronizzazione
Il monitor 1 Costrutti linguistici per la sincronizzazione I semafori costituiscono un meccanismo molto potente per la sincronizzazione dei processi. Tuttavia, il suo uso può risultare troppo a basso livello.
GESTIONE DEGLI ERRORI
GESTIONE DEGLI ERRORI Spesso vi sono istruzioni critiche, che in certi casi possono produrre errori L approccio classico consiste nell inserire controlli (if else..) per cercare di intercettare a priori
SEMAFORI 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
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
Programmazione. 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
Esempi in Java di program.ne O-O
Esempi in Java di program.ne O-O Ereditarietà Polimorfismo statico e dinamico Esercitazione laboratorio Interfaccia Comparable e Comparator 1 Gerarchia di ereditarietà Persona IS_A Docente Studente Tecnico
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
Chat. Si ha un server in ascolto sulla porta 4444. Quando un client richiede la connessione, il server risponde con: Connessione accettata.
Chat Si ha un server in ascolto sulla porta 4444 Quando un client richiede la connessione, il server risponde con: Connessione accettata. Nome: Il client deve rispondere con lo user name A questo punto
9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
9 - Array 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 Corso di Laurea
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
Java, Oggetti e Strutture Dati di G. Callegarin - Edizioni CEDAM
Java, Oggetti e Strutture Dati di G. Callegarin - Edizioni CEDAM ERRATA CORRIGE dei programmi della prima stampa (Aprile 2004) aggiornato al 20/05/2017 Nota: il codice corretto è ottenibile da quella errato
Compitino di Laboratorio di Informatica CdL in Matematica 13/11/2007 Teoria Compito A
Matematica 13/11/2007 Teoria Compito A Domanda 1 Descrivere, eventualmente utilizzando uno schema, gli elementi funzionali di una CPU. Domanda 2 Java è un linguaggio compilato o interpretato? Motivare
Corso di Linguaggi di Programmazione
Corso di Linguaggi di Programmazione Lezione 20 Alberto Ceselli [email protected] Dipartimento di Tecnologie dell Informazione Università degli Studi di Milano 20 Maggio 2010 Unità concorrenti in
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)
Laboratorio di Programmazione 1 [Java]
Laboratorio di Programmazione 1 [Java] Prova di esame - 7 Settembre 2010 Tempo massimo: 50 minuti Si implementino in Java le classi Tavolo e Ristorante. La classe Tavolo ha i seguenti attributi: numero
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
Uguaglianza e copia di oggetti
Uguaglianza e copia di oggetti Sommario 1. Classi Object e Class 2. Uguaglianza superficiale e uguaglianza profonda 3. Copia superficiale e copia profonda 4. Uguaglianza e copia in classi derivate 1 La
Esempio: Tombola! Vogliamo progettare una applicazione che realizza il gioco della tombola Versione semplificata: un banco, un
Esempio: Tombola! Vogliamo progettare una applicazione che realizza il gioco della tombola Versione semplificata: un banco, un giocatore, ogni giocatore una scheda Ci vengono già fornite le classi necessarie
Sistemi 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
