Shared data: semaphore chopstick[5]; Initially all values are 1 Philosopher i: do { wait(chopstick[i]); wait(chopstick[(i+1) % 5]); . . . eat . . . signal(chopstick[i]); signal(chopstick[(i+1) % 5]); . . . think . . . } while (1);