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 » 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