[3] This property is an instance of liveness, and is one of the two requirements for any mutual exclusion algorithm; the other being correctness.
Modern scheduling algorithms normally contain code to guarantee that all processes will receive a minimum amount of each important resource (most often CPU time) in order to prevent any process from being subjected to starvation.
Starvation-freedom is a stronger guarantee than the absence of deadlock: a mutual exclusion algorithm that must choose to allow one of two processes into a critical section and picks one arbitrarily is deadlock-free, but not starvation-free.
[3] A possible solution to starvation is to use a scheduling algorithm with priority queue that also uses the aging technique.
Aging is a technique of gradually increasing the priority of processes that wait in the system for a long time.