Soluzione 1. Filosofo i



Похожие документы
Il costrutto monitor [Hoare 74]

Il costrutto monitor [Hoare 74]

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati

Sistemi Operativi. Lezione 7 Comunicazione tra processi

Soluzione dell esercizio del 2 Febbraio 2004

CAPITOLO 8 LA VERIFICA D IPOTESI. I FONDAMENTI

Monitor. Introduzione. Struttura di un TDA Monitor

Sistemi Operativi mod. B. Sistemi Operativi mod. B A B C A B C P P P P P P < P 1, >

I.I.S. Primo Levi Badia Polesine A.S

PSICOLOGIA. La ricerca nelle scienze sociali. Le tecniche di rilevazione dei dati. L'osservazione. il testo:

Guida all uso del Portale Web

GestVetrine 1.1 versione novembre 2014

Traduzione e adattamento a cura di Gylas per Giochi Rari Versione 1.0 Luglio giochirari@giochirari.

Esercizi sul Monitor in Java

Unità 7. Al ristorante. Completa lo schema. Sono posti dove si può mangiare e... scoprilo tu! A T H U D Q P U D H O E M M O N U M C N T O S V

FAD Certificata.it. FAD Certificata.it

I TUTORI. I tutori vanno creati la prima volta seguendo esclusivamente le procedure sotto descritte.

Amministrazione gruppi (Comunità)

GUIDA ALLA PROGRAMMAZIONE GRAFICA IN C

GESTIONE MANUALE DEI CREDITI E DEI RESIDUI

SPECTER OPS. L'obiettivo del giocatore agente è quello che il suo agente completi 3 su 4 missioni obiettivo qualsiasi

Sistema di gestione Certificato MANUALE PER L'UTENTE

Kangourou della Matematica 2011 Coppa a squadre Kangourou Semifinale turno A Cervia, 7 maggio Quesiti

ISTITUTO COMPRENSIVO BARBERINO MUGELLO

GRUPPI DI INCONTRO per GENITORI

DESCRIZIONE GIOCHI E REGOLAMENTO

10 - Programmare con gli Array

Manuale d uso Operatore RA

Unità 20. La legge sul ricongiungimento familiare. Lavoriamo sulla comprensione. Università per Stranieri di Siena Livello A2

G iochi con le carte 1

Test di italiano di livello A2 e Permesso di soggiorno CE

Parte 1. Vettori di bit - AA. 2012/13 1.1

Java Virtual Machine

Introduzione ai Metodi Formali

Un sistema operativo è un insieme di programmi che consentono ad un utente di

Test di italiano di livello A2 e Permesso di soggiorno CE

Il linguaggio SQL: trigger. Versione elettronica: 04.7.SQL.trigger.pdf

Amministrazione classi

SISTEMI MULTIAGENTE. Esercizio

FPf per Windows 3.1. Guida all uso

Università per Stranieri di Siena Livello A1

A tal fine il presente documento si compone di tre distinte sezioni:

Gestione della memoria centrale

1. Che cos è la multiprogrammazione? Si può realizzare su un sistema monoprocessore? 2. Quali sono i servizi offerti dai sistemi operativi?

Informatica 3. Informatica 3. LEZIONE 6: Il controllo dell esecuzione. Lezione 6 - Modulo 1. Errori durante l esecuzione. Il controllo dell esecuzione

Descrizione di un algoritmo

di Kai Haferkamp per 2-5 giocatori dagli 8 anni in su

SISTEMI OPERATIVI. Deadlock (blocco critico) Domande di verifica. Luca Orrù Centro Multimediale Montiferru 04/06/2007

Prof. Giuseppe Chiumeo. Avete già studiato che qualsiasi algoritmo appropriato può essere scritto utilizzando soltanto tre strutture di base:

Manuale Utente SCELTA REVOCA MEDICO ON LINE. Versione 1.0.0

ESAMI ONLINE E QUESTIONARI ANVUR (FAQ)

Che volontari cerchiamo? Daniela Caretto Lecce, aprile

Antonella Martinucci, Rossana Nencini, 2013 IL PESO. classe quarta

BLACK JACK. Come si gioca

Funzioni in C. Violetta Lonati

Guida all u)lizzo di MyTable come sistema di prenotazione delle offerte di Groupon

24 : 3 = 8 con resto 0 26 : 4 = 6 con resto 2

ASSOCIAZIONE ANFFAS ONLUS UDINE. presenta LA NOSTRA VISION. Questo documento è in versione facile da leggere

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

Guadagnare soldi da bambini

Gestione Risorse Umane Web Work-flow Selezione

Statistica. Lezione 6

GESTIONE INFORMATICA DEI DATI AZIENDALI

Primi esercizi per gli studenti del corso di Statistica ed Elementi di Probabilita

risulta (x) = 1 se x < 0.

Alla ricerca dell algoritmo. Scoprire e formalizzare algoritmi.

GEOGEBRA I OGGETTI GEOMETRICI

Università per Stranieri di Siena Livello A2

Come costruire una presentazione. PowerPoint 1. ! PowerPoint permette la realizzazione di presentazioni video ipertestuali, animate e multimediali

La Moneta e i Mercati Monetari. Introduciamo una nuova definizione della domanda di moneta (domanda di moneta di tipo keynesiano)

Guida rapida per i docenti all'uso della piattaforma di e-learning dell'istituto Giua

Guida all'uso del CMS (Content Management System, Sistema di Gestione dei Contenuti)

CALCOLO COMBINATORIO

Aprile (recupero) tra una variazione di velocità e l intervallo di tempo in cui ha luogo.

COME CREARE UN SONDAGGIO CON SCELTA SU MOODLE

YOU ARE WHAT YOU CURATE COS E LA CONTENT CURATION E COME APPLICARLA

Dove metti il divano?

CAPITOLO 24 I MONITOR

Memoria Virtuale. Anche la memoria principale ha una dimensione limitata. memoria principale (memoria fisica) memoria secondaria (memoria virtuale)

2. LOGIN E RECUPERO DATI DI ACCESSO

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

Sistemi Operativi Esercizi Sincronizzazione

1. GESTIONE DEL PASS OE FUNZIONI DEL CRUSCOTTO

4 3 4 = 4 x x x 10 0 aaa

Progettazione di una base di dati Ufficio della Motorizzazione

Manuale Helpdesk per utenti

La Gestione delle risorse Renato Agati

Amministrazione gruppi (all interno della Scuola)

La cedolare secca. Chi, cosa, come, quando e perché

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:

ESERCITAZIONI di MACROECONOMIA: il MODELLO AD AS

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)

Testo alla base del Pitgame redatto dal prof. Yvan Lengwiler, Università di Basilea

Corso di Psicometria Progredito

Транскрипт:

Filosofi a cena

Il problema N filosofi si ritrovano a cena in un ristorante cinese, occupando un tavolo circolare, apparecchiato con un piatto per ogni filosofo e un bastoncino interposto fra ogni coppia di piatti adiacenti.

Il problema Per mangiare, ogni filosofo deve avere a disposizione i due bastoncini che si trovano rispettivamente alla sua sinistra e alla sua destra, entrando così in competizione con i due filosofi che siedono ai suoi lati. Il filosofo che non riesca ad ottenere ambedue i bastoncini (perché almeno uno è in possesso di un suo vicino) si sospende in attesa di ottenerli.

Il problema Ogni filosofo alterna periodi in cui medita a periodi in cui vuole mangiare: quando decide di mangiare richiede i bastoncini ed eventualmente si sospende in attesa di ottenerli; dopo aver mangiato torna a pensare rilasciando i due bastoncini. Il problema può essere risolto associando una variabile di condizione ad ogni bastoncino e organizzando queste variabili nel vettore bastoncino[i]. Il programma eseguito dal generico filosofo di indice i (1= 0,.. N-1) è il seguente:

Soluzione 1 Filosofo i while (true) { // il filosofo di indice i decide di mangiare: protocollo per mangiare // lockbastoncino[i].acquire(); //il filosofo i si sospende se non può ottenere il bastoncino situato alla sua sinistra // lockbastoncino[(i+ 1) mod N].Acquire(); // il filosofo i si sospende se non può ottenere il bastoncino situato alla sua destra // < il filosofo di indice i mangia > } //il filosofo di indice i ha finito di mangiare: protocollo per pensare // lockbastoncino[i].release(); lockbastoncino[(i+ 1) mod N].Release(); // il filosofo rilascia i due bastoncini situati alla sua sinistra e alla sua destra //

Soluzione 1: sbagliata! La soluzione 1 può portare allo stallo dei filosofi. In che modo? Idee?

Il problema Lo stallo può essere evitato se i filosofi adottano una strategia di prevenzione dello stallo, richiedendo con richiesta singola entrambi i bastoncini di cui hanno necessità. L assegnazione avverrà se entrambi i bastoncini sono disponibili; in caso contrario, il filosofo richiedente si sospenderà senza entrare in possesso di nessun bastoncino, e sarà riattivato da uno dei filosofi che siedono ai suoi lati quando questo rilascerà i propri bastoncini, a condizione che il filosofo sospeso possa ora ottenere entrambi i bastoncini che gli sono necessari.

Il problema In questa soluzione i filosofi condividono il vettore stato[i] (i= 0.. N-1), dove lo stato del filosofo di indice i può assumere i valori ha fame, mangia, pensa, con il seguente significato: stato ha fame == > richiede i due bastoncini stato mangia == > possiede i due bastoncini transizione mangia pensa == > rilascia i due bastoncini Si utilizzano inoltre le seguenti variabili: Lock mutex: per la mutua esclusione sul vettore stato; Cond attesafilosofo[n]: vettore di variabili di condizione utilizzate per la sospensione dei filosofi. La variable attesafilosofo[i] è usata per l attesa del filosofo di indice i.

Soluzione filosofo i Protocollo per mangiare while (true) { // il filosofo di indice i decide di mangiare: protocollo per mangiare // mutex.acquire(); stato[i]= HaFame; while (stato[(i- 1) mod N] == mangia) (stato[(i+ 1) mod N] == mangia ) { attesafilosofo[i].wait(&mutex); } stato[i]= mangia; //ha ottenuto ambedue i bastoncini // mutex.release(); < il filosofo di indice i mangia > // il filosofo di indice i ha finito di mangiare: protocollo per pensare //

Soluzione filosofo i } Protocollo per pensare mutex.acquire(); stato[i]=pensa; if (stato[(i - 1) mod N]== HaFame) && (stato[(i - 2) mod N]<> mangia) { // riattiva il filosofo (i-1) mod N se può ottenere entrambi i bastoncini // stato[(i - 1) mod N] = mangia; attesafilosofo[(i- 1) mod N].Signal(&mutex); } if (stato[(i + 1) mod N]== HaFame) && (stato[(i + 2) mod N]<> mangia) { // riattiva il filosofo (i+1) mod N se può ottenere entrambi i bastoncini // stato[(i + 1) mod N]= mangia; attesafilosofo[(i + 1) mod N].Signal(&mutex); } mutex.release();