PDA

Visualizza la versione completa : Esercizio sui semafori nel problema produttori-consumatori


payens88
12-09-2010, 03:17
salve a tutti avrei un problema con un esercizio di Sistemi Operativi
questo il testo:
Si consideri il problema dei produttori e consumatori, con buffer limitato a m elementi, dove i codici del generico produttore e del generico consumatore sono i seguenti:

"consumatore " "produttore"

repeat repeat

<preleva dato nel buffer> <produci dato>
<consuma dato> <inserisci dato nel buffer>

forever forever


Inserite le opportune operazioni di semafori necessarie per il corretto funzionamento del sistema, indicando chiaramente i semafori necessari ed il loro valore iniziale. Spiegare anche il ruolo svolto dai semafori.

se sono nella sezione sbagliata chiedo scusa.....

frankitt
12-09-2010, 10:11
Questo il classico esercizio iniziale per spiegare la concorrenza, la soluzione me la ricordo ancora,
cmq ti consiglio di prendere un libro che lo spieghi bene, come questo qui, sul quale ho studiato:
W. Stallings, "Operating Systems", 6th ed., Prentice-Hall, 2009.

Da qualche parte lo trovi... :D



semaphore sem_buffer = m; // gestisce il buffer, per vedere se pieno o vuoto
semaphore mutex = 1; // mutex sul buffer
semaphore z = 0; // Serve per bloccare il consumatore se non c' nulla nel buffer

buffer b; // buffer sul quale lavorare;

Produttore()
{
while(1)
{
Obj o = produci();

wait(sem_buffer);
wait(mutex);
inserisci(o,b);
signal(mutex);
signal(z);
}
}

Consumatore()
{
while(1)
{
Obj o;

wait(z);
wait(mutex);
o = preleva(b);
signal(mutex);
signal(sem_buffer);

consuma(o);
}
}

Loading