Ciao a tutti,
sto facendo una tesina di sistemi operativi con linux( una bacheca elettronica); questa è di tipo client/server con code di messaggi ed ho problemi nel strutturare i semafori.
In pratica il client puo effettuare diverse operazioni tra cui alcune di lettura, ricerca etc..mentre una di scrittura ke deve essere esclusiva sulla lista ke sto usando come memoria...
io ho creato un semaforo unico inizializzato al valore 100 e definito 2 tipi di wait:
una è una wait(1) ke mi decrementa di uno il valore del semaforo,ed è usata per operazioni come lettura, ricerca etc...
e l'altra è una wait(100) ke mi prende tutte le risorse a disposizione del semaforo,e viene utilizzatta per l'operazione di scrittura sulla lista, e mi assicura ke quando viene scritta la lista nn possa essere eseguita nessun altra operazione...
ora cosi facendo mi dicono ke cè il problema di starvation

in pseudocodice quello che ho fatto io cmq è:

Semaforo S inizializzato a 100

thread Scrittura
wait(100)
<scrivi sulla lista>
signal(100)

altri thread lettura,ricerca,etc...
wait(1)
<varie operazioni>
signal(1)

se qualkuno puo suggerirmi una soluzione adatta anke a parole o pseudocodice.....