Question: To prevent the deadlock, in class we have discussed three solutions: 1. Allow at most 4 philosophers to be sitting simultaneously at the table. 2.

To prevent the deadlock, in class we have discussed three solutions: 1. Allow at most 4 philosophers to be sitting simultaneously at the table. 2. Allow a philosopher to pick up her chopsticks only if both are available 3. Use an asymmetric solution: an odd-numbered philosopher picks up first the left chopstick and then the right chopstick. Even-numbered philosopher picks up first the right chopstick and then the left chopstick. The following program can lead to a deadlock. Run the program and observe the deadlock condition. Based on the program, please implement the above three solutions to prevent the deadlock. Each solution should be saved as an individual C program (e.g. solution1.c, solution2.c, and solution3.c). Include necessary comments in your programs. Submission: solution2.c and solution3.c on Blackboard #include #include #include

#define N 5 //the number of philosophers

sem_t S[N]; //semaphores for chopsticks

void * philospher(void *num); void take_chopsticks(int); void put_chopsticks(int);

int phil_num[N]={0,1,2,3,4}; //philosopher ID

int main() { int i; pthread_t thread_id[N]; for(i=0;i

for(i=0;i

printf("Philosopher %d is Hungry ",ph_num); sem_wait(&S[ph_num]); //take the left chopstick printf("Philosopher %d takes chopstick %d ",ph_num, ph_num);

sleep(1);

sem_wait (&S[(ph_num+1)%N]); //take the right chopstick printf("Philosopher %d takes chopstick %d ",ph_num,(ph_num+1)%N);

printf("Philosopher %d is eating ",ph_num); sleep(1); }

void put_chopsticks(int ph_num) { sem_post (&S[ph_num]); //put the left chopstick printf("Philosopher %d putting chopstick %d ",ph_num, ph_num); sleep(1); sem_post (&S[(ph_num+1)%N]); //put the right chopstick printf("Philosopher %d putting chopstick %d ",ph_num,(ph_num+1)%N); printf("Philosopher %d is thinking ",ph_num); sleep(1);

}

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!