@Arbaz__Malik Bhai, you are right that this is implementation-specific. If FIFO is used then both bounded waiting and progress are satisfied. And I believe that’s what the test series is assuming.
Now why I think that progress isn’t satisfied because progress can be defined as if a process running execution isn’t dependent on another process’s execution. Like if P1 and P2 both are running concurrently for the available resources. Then if P2’s process of accessing the CS shouldn’t be decided by P1’s execution.
Here, assume process A executes first and enters CS, then executes Signal(P) and Signal(Q). Here comes the implementation part about which @Arbaz__Malik is talking, here if we are assuming that FIFO queue is used then we know that process B is in the front of the queue, and if process A again wants to access the CS, still as FIFO is implemented it can access CS after process B accesses Q because of queue implementation. So, here bounded waiting and progress both will be satisfied. As, here we can’t say that process A is not interested to execute if it has entered the queue, and if it hasn’t entered the queue then process B can freely execute.
Now, what if we don’t use queue here? Instead, we opt for waking up a random process. Assume, P1 executes CS and P2 is stuck at wait(P). Further P1 executes signal(P) and signal(Q). Now, if P1 isn’t interested then P2 can execute further. So, P2’s execution is not dependent on P1’s wish to execute, so progress is satisfied. And if P1 keeps on executing without giving chance to P2 then bounded waiting won’t be satisfied. I got confused between both definitions. So, sorry for my above statement and credits to @adad20 for making me correct :)