A monitor based solution to the dining philosophers problem

A deadlock free solution
Is starvation also eliminated ?
 

Implement semaphore operations using a monitor

P() and V() operations as procedure entries

Implement monitor using semaphores

use a semaphore to guarantee mutual exclusion of procedure entries
use a semaphore to ensure blocking and subsequent continuation of signaling processes
use a semaphore to for each condition variable to implement wait and signal