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 processes using this instruction. Model your solution on the manner in which a bakery, for instance, serializes customer service by means of a number dispenser.)
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.