CS 325
50 points, due Apr. 1, 2009
int FAI(int& val)
{
return val++; // Performed atomically.
}
Devise a solution to the critical section problem for Show that your solution is, in fact, a solution to the critical section problem.
| Process | Arrival Time | CPU Bursts | Priority |
| P1 | 0 | 2, 3, 2 | 3 |
| P2 | 2 | 1, 1 | 1 |
| P3 | 2 | 1, 2 | 3 |
| P4 | 3 | 2, 1 | 4 |
| P5 | 4 | 1, 2, 2 | 2 |
Draw four Gantt charts illustrating the execution of these processes using
FCFS (non-
preemptive), preemptive SJF, non-preemptive priority (a smaller
priority number implies a higher priority), and RR (quantum = 1).
Also, for each scheduling algorithm, answer the following:
#define FALSE 0
#define TRUE 1
int flag[2] = { FALSE, FALSE } /* flag[i] indicates that Pi wants to */
/* enter its critical section */
int turn = 0; /* turn indicates which process has */
/* priority in entering its critical */
/* section
flag[i] = TRUE;
while (flag[1 - i])
if (turn == 1 - i) {
flag[i] = FALSE;
while (turn == 1 - i)
;
flag[i] = TRUE;
}
/* Critical section for Pi. */
turn = 1 - i;
flag[i] = FALSE;
Prove that the algorithm satisfies the three requirements for a solution to
the critical section problem.