Skip to content

sarimmehdi/Walking_Philosophers

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Walking_Philosophers

My solution for the class project. Project description, as given by the teacher, is as under:

Implement a solution of a modified version of the dining philosophers, as follows:

  • there are 10 philosophers in a room, engaged in the usual think/eat cycle;
  • philosophers think while walking in the room, and can only eat while sitting at the table;
  • however, at any given time only 5 philosophers at most can sit at a table, and since every two adjacent philosophers are sharing a chopsticks, only two non-adjacent philosophers can eat at the same time (as in the classic version of the dining philosophers problem);
  • therefore, in order to eat, a philosopher should first find a seat at the table, then wait for his/her turn to grab the chopsticks;
  • once seated, a philosopher cannot change seat;
  • after eating, philosophers get up to make room for other philosophers to eat.

Analyze the problem, design a monitor, implement the monitor and test it. Clearly, deadlock must be avoided. Moreover, the following design criteria are given:

  • concurrency should be preserved: two philosophers must be able to eat at the same time;
  • starvation should be avoided: in case of resource contention, you should favor the philosophers who have been eating the least.
  • Notice that the second bullet is intentionally ambiguous. You are encouraged to provide your own interpretation, devise a method for keeping track of how much each philosopher has eaten, etc.. You are responsible for your design choices, as long as they are clearly explained.

Releases

No releases published

Packages

No packages published

Languages