Vai alla Home Page About me Courseware Federica Living Library Federica Federica Podstudio Virtual Campus 3D Le Miniguide all'orientamento Gli eBook di Federica La Corte in Rete
 
 
Il Corso Le lezioni del Corso La Cattedra
 
Materiali di approfondimento Risorse Web Il Podcast di questa lezione

Antonino Mazzeo » 18.Esercitazione: i Monitor


Sommario

  • Introduzione
  • Strategie di controllo
  • Realizzazione
  • Aspetti implementativi

Introduzione

  • E’ stato introdotto per facilitare la programmazione strutturata di problemi in cui è necessario controllare l’assegnazione di una o più risorse tra più processi concorrenti mediante apposite discipline di gestione.
  • Si configura come un “tipo di dato astratto”, in cui
    • le variabili membro (private), dette anche variabili locali, descrivono lo stato della risorsa controllata dal monitor;
    • le funzioni membro pubbliche costituiscono le uniche operazioni utilizzabili dai processi per “disciplinare” l’accesso alle variabili membro;
    • funzioni membro private, non invocabili dall’esterno.

Strategie di controllo

  • L’obiettivo è controllare l’assegnazione di una risorsa in accordo a determinate politiche di gestione, secondo due livelli di controllo:
  • 1. Un solo processo alla volta deve avere accesso alle variabili locali
    • le funzioni di accesso al monitor vengano eseguite in modo mutuamente esclusivo ed i processi che invocano una funzione di un oggetto monitor mentre un altro processo è attivo nell’istanza, devono essere ritardati
  • 2. Deve esserci una disciplina di scheduling tra i processi
    • l’ordinamento può essere ottenuto imponendo che un processo acceda alle variabili locali di un’istanza del monitor solo se è soddisfatta una condizione logica che assicura l’ordinamento stesso; nel caso in cui ciò non si verifichi il processo deve essere sospeso, in modo da consentire ad un altro processo di accedere all’istanza
  • Separazione tra meccanismi e politiche!

Variabili Condition

  • La sospensione di un processo nel caso in cui la condizione non sia verificata, avviene utilizzando un nuovo tipo di variabile, detta variabile di tipo condition.
  • Sia P un processo sospeso su una variabile condition x e Q il processo che esegue la signal su tale variabile
    • Dopo la signal entrambi i processi possono proseguire, violando le proprietà di un monitor! Uno dei due deve essere sospeso
  • La soluzione di Hoare
    • Prevede che il processo P riprenda immediatamente l’esecuzione e che Q venga sospeso.
Soluzione di Hoare

Soluzione di Hoare


Realizzazione di un tipo Monitor

  • Accesso in mutua esclusione alle funzioni del monitor
    • Può essere semplicemente ottenuto associando ad ogni istanza del monitor un semaforo mutex inizializzato ad 1
  • Sospensione/Attivazione Processi
    • Soluzione di Hoare
    • Viene introdotto un semaforo urgent sul quale i processi che hanno eseguito la signal si sospendono tramite una wait(urgent)
    • Prima di abbandonare il monitor è quindi necessario verificare che nessun processo sia in coda a tale semaforo
Realizzazione di un tipo-monitor (codice)

Realizzazione di un tipo-monitor (codice)


Aspetti implementativi


Un esempio: Prod-Cons con Monitor

  • Il numero di variabili condition necessarie è pari a due:
    • OK_PRODUZIONE:variabile su cui si sospendono i produttori.
    • OK_CONSUMO:variabile su cui si sospendono i consumatori.
  • Il programma implementa quattro funzioni principali:
    • void InizioConsumo(Monitor*): chiama la funzione enter_monitor( ) e una funzione di wait_condition su OK_CONSUMO.
    • void FineConsumo(Monitor*): il processo consumatore che la invoca, libera la variabile OK_PRODUZIONE prima di lasciare il monitor invocando la funzione di libreria leave_monitor( ).
    • void InizioProduzione(Monitor*): è una wait_condition() sulla variabile OK_PRODUZIONE.
    • void FineProduzione(Monitor*): il processo sblocca il primo consumatore in attesa su OK_CONSUMO prima di lasciare il monitor invocando la funzione di libreria leave_monitor( ).

Prossima lezione

Il Deadlock

I materiali di supporto della lezione

Monitor

  • Contenuti protetti da Creative Commons
  • Feed RSS
  • Condividi su FriendFeed
  • Condividi su Facebook
  • Segnala su Twitter
  • Condividi su LinkedIn
Progetto "Campus Virtuale" dell'Università degli Studi di Napoli Federico II, realizzato con il cofinanziamento dell'Unione europea. Asse V - Società dell'informazione - Obiettivo Operativo 5.1 e-Government ed e-Inclusion