Galvin offers the following definitions of starvation:
Indefinite blocking, or starvation, a situation in which processes wait indefinitely within the semaphore.
A major problem with priority scheduling algorithms is indefinite block-ing, or starvation.A process that is ready to run but waiting for the CPU can be considered blocked. A priority scheduling algorithm can leave some low priority processes waiting indefinitely.
What I understand from this is, starvation happens whenever a process has to wait indefinitely to get resources, the waiting may be finite, but you cannot put a time limit on it. So by definition, starvation freedom must be definite waiting.
Michel Reynel defines starvation freedom as following:
If a process wants to execute the critical section code, then that process eventually executes it.
My questions are:
What exactly does Reynel mean by “eventually”? Does he mean the process will get resources in a definite amount of time? Or does he mean the process will definitely get the resources, but we cannot define the time limit, but if that is the case, it would go against Galvin’s definition which I think says there is no starvation only if there is definite waiting.
Assuming starvation-freedom means definite waiting, am I correct in understanding that despite setting a time limit on how long it will take a process to acquire resources, I can in no way guarantee how many times it will be bypassed by other processes? A bound on how many times the process can be bypassed does exist because there is a time limit, but there is no way one can find it, if determined experimentally/through processor speed, the bound will be architecture dependent and therefore invalid.
What happens if there is infinite waiting? Since I’ve defined the waiting time to be infinite is it definite waiting? Practically speaking, this would be starvation, but I’m unable to understand how the definition applies in case of infinite waiting, unless infinite is indefinite.