Q. Can a system detect that some of its processes are starving? If you answer "yes," explain how it can. If you answer "no," explain how the system can deal with the starvation problem.
Answer: Starvation is a difficult topic to define as it may signify different things for different systems. For the cause of this question we will define starvation as the situation whereby a process must wait beyond a reasonable period of time-perhaps indefinitely-prior to receiving a requested resource. One way of noticing starvation would be to first identify a period of time-T-that is considered unreasonable. When a process desires a resource a timer is started. If the elapsed times go beyond T then the process is considered to be starved.
One approach for dealing with starvation would be to adopt a policy where resources are assigned only to the process that has been waiting the longest. For instance if process Pa has been waiting longer for resource X than process Pb the request from process Pb would be deferred until process Pa's request has been satisfied.
An additional strategy would be less strict than what was just mentioned. In this situation a resource might be granted to a process that has waited less than another process providing that the other process isn't starving. Nevertheless if another process is considered to be starving its request would be satisfied first.