GATE CS 2026 Set 2 — Question 51
Go beyond PYQs with Success TrackerAI-powered personalised practice and doubt support. Unlimited practice on eligible plans; AI usage limits apply.MSQ+2 / -0HardSemaphoresProcess SynchronizationOperating System
Operating System → Process Synchronization → Semaphores
Last updated
Question
Consider three processes P1, P2, and P3 running identical code, as shown in the pseudocode below. A and B are two binary semaphores initialized to 1 and 0, respectively. X is a shared variable initialized to 0. Each line in the pseudocode is executed atomically.Pseudocode of P1, P2, and P3
Assume that any of the three processes can start to execute first and context switching can happen between these processes at any arbitrary time and in any arbitrary order.Which of the following patterns is/are possible to be generated as an outcome of the execution of these three processes?
Wait(A);
Print(*);
X = X+1;
If (X == 2)
{
Print($);
Signal(B);
}
Signal(A);
Wait(B);
Print(#);
Signal(B);
Assume that any of the three processes can start to execute first and context switching can happen between these processes at any arbitrary time and in any arbitrary order.Which of the following patterns is/are possible to be generated as an outcome of the execution of these three processes?
Correct answer
(A) $; (B) $; (C) $
Solution
Only one process at a time can be between
Wait(A) and Signal(A), so the three * prints are serialized. The process that makes (the second one through section A) prints $ and does Signal(B) before Signal(A), so the third * can only come after $. Hence every output begins **$ and the third * comes after $; (D) ***$### is impossible.No # can be printed before $, because B starts at 0 and the only first Signal(B) is the one right after $. After that, each process that passes Wait(B) prints # and does Signal(B), letting the next waiting process through. The third process's * is independent of B, so it can happen at any point after $:- (A)
**$*###: the third process prints*before anyone prints#. Possible. - (B)
**$#*##: one#(from one of the first two processes) comes before the third*. Possible. - (C)
**$##*#: both of the first two processes print#before the third process prints*; the third process then prints the last#. Possible. - (D)
***$###: needs the third*before$, which mutual exclusion on A forbids.
Continue learning with Success Tracker
A step still unclear? Work through it with support
Use Success Tracker to ask about the reasoning, then try another GATE CS question to check your understanding.
AI-powered practice· Unlimited practice on eligible plans
- PYQs with solutions
- Attempt available previous-year questions, then compare your reasoning with the worked solution. Coverage varies by stream.
- Practice that adapts
- Choose a topic, work on weaker areas and bookmark questions to revisit. Your attempts feed your progress tracking.
- AI doubt support
- Ask follow-up questions about a step or concept while practising, instead of stopping at the final answer.
Unlimited practice is available on eligible plans. Free practice and AI usage have limits; check the current plan allowances before choosing.
This page stays readable without an account. AI responses can be wrong; check them against the solution and source material.
More questions on Process Synchronization
2026 Set 2 Q23Which one of the following CPU scheduling algorithms cannot be preemptive?2026 Set 1 Q29With respect to deadlocks in an operating system, which of the following statements is/are FALSE?2026 Set 1 Q31In the context of relational database normalization, which of the following statements is/are true?2026 Set 1 Q35Consider a system consisting of instances of a resource , being shared by 5 processes.…2026 Set 2 Q53To keep track of free blocks in a file system, one of the two approaches is generally used – using…