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 » 17.Esercitazione: Problema dei lettori e degli scrittori


Sommario

  • Definizione
  • Lettori / Scrittori con un unico buffer
  • Lettori / Scrittori con un pool di buffer
  • Lettori / Scrittori con Starvation

Definizione

  • Due categorie di processi
    • Lettori, che leggono un messaggio su di una risorsa condivisa
    • Scrittori, che scrivono il messaggio dalla risorsa condivisa
  • Vincoli
    • I processi lettori possono accedere contemporaneamente alla risorsa
    • I processi scrittori hanno accesso esclusivo alla risorsa
    • Lettori e scrittori si escludono mutuamente dall’uso della risorsa

Lettori/Scrittori

  • Con unico buffer
    • Per la sincronizzazione dei processi,si rende necessario l’uso di un semaforo MUTEX al fine di gestire l’accesso alle variabili del buffer in mutua esclusione
    • Le operazioni di lettura sono “protette” dalle procedure di Inizio_Lettura() e Fine_Lettura(), da Inizio_Scrittura() e Fine_Scrittura() le operazioni di modifica del buffer
  • Con un pool di buffer
    • Lettori e scrittori accedono ad un pool di buffer di memoria condivisa con attesa indefinita dei processi scrittori
    • Un processo lettore attende solo se la risorsa è occupata da un processo scrittore e un processo scrittore può accedere alla risorsa solo se questa è libera

Lettori/Scrittori con un pool di buffer

  • Per la sincronizzazione dei processi,si rende necessario
    • L’uso di un semaforo MUTEX al fine di gestire l’accesso alle variabili del buffer in mutua esclusione
    • L’uso di un secondo semaforo SYNCH per garantire la mutua esclusione tra i processi lettori e scrittori e tra i soli processi scrittori
  • Le operazioni di lettura sono “protette” dalle procedure di Inizio_Lettura() e Fine_Lettura(), da Inizio_Scrittura() e Fine_Scrittura() le operazioni di modifica del buffer
Codice (con pool di buffer)

Codice (con pool di buffer)


Lettori/Scrittori con Starvation

  • Lettori e scrittori accedono ad un pool di buffer di memoria condivisa con attesa indefinita sia dei processi scrittori che dei processi lettori
  • Vincoli di sincronizzazione:
    • Al termine di una scrittura a subentrare è ancora un processo scrittore(se ce ne sono in coda)
    • Al termine di una lettura a subentrare è ancora un processo lettore (se ce ne sono in coda)
  • Per la sincronizzazione dei processi,sono utilizzati cinque semafori:
    • SYNCHL (semaforo scrittori), SYNCHS (semaforo lettori), MUTEXS (per la gestione di numscrittori), MUTEXL (per la gestione di numlettori) e MUTEX (per la gestione della risorsa buffer)
Codice (con starvation)

Codice (con starvation)


Prossima lezione

Esercitazione: i Monitor

I materiali di supporto della lezione

Lettori e scrittori

  • 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