Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Implement the Dining Philosophers model in Figure 6.12 with semaphores; however, make use of sem_trywait or sem_timedwait in a measure to avoid starvation and deadlocks.

Implement the Dining Philosophers model in Figure 6.12 with semaphores; however, make use of sem_trywait or sem_timedwait in a measure to avoid starvation and deadlocks. Have the main program kill the threads after no more than five minutes. The eat function should cause a line to output indicating which philosopher is eating and when. Both of the function think and eat should use a random sleep duration to keep the philosophers unpredictable.image text in transcribed

/*program diningphilosophers */ semaphore fork [5] 1 int i; void philosopher (int i) while (true) think(); wait (fork[i]); wait (fork [(i+1) mod 5]) eat ); signal (fork [(i+1) mod 5]); signal (fork[i]); void main () parbegin (philosopher (0), philosopher (1), philosopher (2), philosopher (3), philosopher (4)); ideoNote Figure 6.12 A First Solution to the Dining Philosophers Problem /*program diningphilosophers */ semaphore fork [5] 1 int i; void philosopher (int i) while (true) think(); wait (fork[i]); wait (fork [(i+1) mod 5]) eat ); signal (fork [(i+1) mod 5]); signal (fork[i]); void main () parbegin (philosopher (0), philosopher (1), philosopher (2), philosopher (3), philosopher (4)); ideoNote Figure 6.12 A First Solution to the Dining Philosophers

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access with AI-Powered Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Students also viewed these Databases questions