Step 1: Section Definitions.
- Critical section (C): Accesses shared resources.
- Entry section (A): Requests access to the critical section.
- Remainder section (B): Performs other tasks after the critical section.
- Exit section (D): Manages the exit from the critical section.
Step 2: Correct Sequence.
A process follows this order for critical section management:
- Enters Entry section (A) to check conditions.
- Proceeds to Critical section (C) to access shared resources.
- Moves to Exit section (D) to release resources.
- Completes other tasks in the Remainder section (B).
Step 3: Final Order.
The correct sequence of sections is (A), (C), (D), (B).
Consider the following threads, T1, T2, and T3 executing on a single processor, synchronized using three binary semaphore variables, S1, S2, and S3, operated upon using standard wait() and signal(). The threads can be context switched in any order and at any time.

Consider the following pseudocode, where S is a semaphore initialized to 5 in line#2 and counter is a shared variable initialized to 0 in line #1. Assume that the increment operation in line#7 is not atomic.
1. int counter = 0;
2. Semaphore S = init(5);
3. void parop(void)
4. {
5. wait(S);
6. wait(S);
7. counter++;
8. signal(S);
9. signal(S);
10. } If five threads execute the function parop concurrently, which of the following program behavior(s) is/are possible?