The Dining Philosophers
There are N philosophers and N forks, the philosophers represent processes and forks represent resources
The philosophers are competing for forks and in order to eat, a philosopher needs 2 forks, one on the left and one on the right.
We need to prevent deadlock situations in cases where all philosophers are holding a fork and waiting to acquire another fork in order to be able to eat.
One of the simple rules we can implement to prevent deadlocks is to stop philosophers from taking up a fork if the other fork has already been taken by another process.
For example, if Philosopher 3 is ready to eat, he/she must have forks 3 and 4, but if fork 4 has already been taken by Philosopher 4 then Philosopher 3 cannot take up fork 3 and must wait for fork 4 to be available before it can take up both forks and eat.
Create a program to show the synchronization in this situation.
1. There are N philosophers and N forks Philosophers have 4 states, Thinking (Waiting), Hungry (Ready) Eating (Executing), and Exit (Terminate).
2. A philosopher can be in different states and the diagram below shows the changes in states from start to end.