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
 
I corsi di Ingegneria
 
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