Newsgroup: it.comp.os.linux.development
Titolo: problema cena dei filosofi

salve a tutti c'è qualcuno che mi può aiutare a implementare questo
programma?
The Dining Philosophers
The Dining Philosophers problem is a classic multi-process
synchronization
problem. The problem consists of five philosophers sitting at a table
who do
nothing but think and eat. Between each philosopher, there is a single
fork
In order to eat, a philosopher must have both forks. A problem can
arise if
each philosopher grabs the fork on the right, then waits for the fork
on the
left. In this case a deadlock has occurred, and all philosophers will
starve.
Also, the philosophers should be fair. Each philosopher should be able
to
eat
as much as the rest.
Implement in the C language the dining philosophers program. For
synchronization implement and use the two following functions:
void grab_forks( int left_fork_id );
void put_away_forks( int left_fork_id );
where parameters are integers identifying semaphores associated with
forks.
grab_forks() and put_away_forks() should use IPC semaphores (man
semget, man
semop) to make atomic changes on two semaphores at the same time. Print
on
the
standard output verbose messages from philosophers.
aspetto fiducioso!!

 aspetto fiducioso!!
E` un classico problema di programmazione concorrente, che dovresti
risolvere tu, visto che si tratta sicuramente di roba accademica, e
visto che sei tu che devi superare l'esame/compito/..., non mi pare
giusto che te lo risolviamo noi, altrimenti non imparerai mai niente.
-- 
Alessandro Pellizzari

 
Tra l'atro, su it.comp.lang.c Aieie Brazorf gli ha gią postato un 
programma il 14 dicembre.
LP

vinci...@gmail.com
 ha scritto:
 > salve a tutti c'è qualcuno che mi può aiutare a implementare questo
 > programma?
 >
 >  CUT
Ciao,
ti dò solo un paio di idee per risolvere il problema:
1. Poichè hai il deadlock quando tutti i filosofi riescono a prendere la 
prima loro forchetta (ad esempio la sinistra), puoi fare che un filosofo 
prenda le forchette in ordine invertito ed il deadlock è evitato; rendi 
cioè l'accesso alle risorse da parte degli utenti asimmetrico
2. Secondo me più elegante: usi un semaforo aggiuntivo prima di far 
prendere le forchette ai filosofi, in modo di fargli tentare 
l'acquisizione delle forchette solo se questo lascia il sistema in uno 
stato safe
Poichè come ti hanno già detto, questo è sicuramente un esercizio 
accademico per un esame di sistemi operativi o qualcosa del genere, sarà 
bene che cominci a preoccuparti se non sei in grado di risolvere questo 
problema da solo!!
ciao, AM

certo che è un problema accademico.... il problema sta nel fatto che
sto facendo l'erasmus a varsavia nella facoltà di computer science ed
io in italia studio invece ingegneria elettronica.  Credo che per
risolvere il problema in qestione dovrei leggere almeno un libro su
come programmare in c (visto che non ne capisco nulla), in più mettici
anche i semafori, e siccome non ne ho il tempo perchè il "progettino"
va consegnato per venerdì (oltre al fatto che qui sto seguendo
qualcosa come 11 corsi). Se ho postato anche qui l'ho fatto perchè
credo che chi usa linux ne mastichi un pò di linguaggio c. Spero
abbiate capito e cmq vi ringrazio per la vostra disponibilità...