Sartomiki.net

  • Aumenta dimensione caratteri
  • Dimensione caratteri predefinita
  • Diminuisci dimensione caratteri
Home Appunti Sistemi operativi Readers & writers

Readers & writers

E-mail Stampa PDF
Valutazione attuale: / 0
ScarsoOttimo 

macchina da scrivereE' un problema simile al produttore/consumatore solo che il consumatore in questo caso legge il dato ma non lo cancella. Le operazioni di scrittura devono essere fatte in mutua esclusione quelle di lettura anche in concorrenza anche se non durante le operazioni di scrittura.

Precedenza ai readers
Si può avere precedenza ai readers con la seguente soluzione:

Reader
wait(me);
nr++;
if(nr==1)
    wait(w);
signal(me);
//lettura
wait(me);
nr--;
if(nr==0)
    signal(w);
signal(me);

Writer
wait(me1);
wait(w);
//scrittura
signal(w)
signal(me1);

Precedenza ai writers

Reader
wait(me2);
wait(r);
wait(me);
nr++;
if(nr==1)
    wait(w);
signal(me);
signal(r);
signal(me2);
//leggo
wait(me);
nr--;
if(nr==0)
    signal(w);
signal(me);

Writer
wait(me1);
nw++;
if(nw==1)
    wait(r);
signal(me1);
wait(w);
//scrivo
signal(w);
wait(me1);
nw--;
if(nw==0)
    signal(r);
signal(me1);

Readers and writers in JAVA
Con le classi il problema dei Readers/writers potrebbe essere risolto nel seguente modo:

void start_read(void) {
nr++;
await(nw==0);
}

void start write(void) {
await (!busy&&nr==0);
nw++;
busy=TRUE;
}

void end_read(void) {
nr--;
}

void end_write(void) {
busy = FALSE;
nw--;
}

void init(void) {
busy=FALSE
nr+nw=0;
}


Per le immagini Ringraziamo ©frizztext


blog comments powered by Disqus
 

http://sartomiki.net/modules/mod_fuofb/assets/it/find-us-on-facebook-1.png

Follow me

Amici

Chi è online

 16 visitatori online

Siti amici

Banner

Notizie flash

Ora potete linkare gli articoli e gli appunti su Facebook, mediante l'apposito tasto presente in alto a destra! Condividete!

PUBBLICITA'