Match List-I with List-II.
| List-I | List-II |
|---|---|
| A. Shortest First Served Scheduling | I. CPU is allocated to the process with the highest priority |
| B. Shortest Job First Scheduling | II. The process that requests the CPU first is allocated the CPU first |
| C. Priority Scheduling | III. The algorithm associates with each process the length of the next CPU burst |
| D. Round-Robin Scheduling | IV. A pre-emption is added to switch between processes |
Choose the correct answer from the options given below:
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?