$25
Part I (50%)
1. (10%) Explain what memory-mapped I/O is and how it works.
2. (10%) Explain what DMA is and how it works.
3. Consider the following set of processes, with the length of the CPU-burst time given in milliseconds:
Process Burst Time Priority
P1 8 4
P2 1 1
P3 2 3
P4 1 5
P5 6 2
The processes are assumed to have arrived in the order P1, P2, P3, P4, P5, all at time 0.
(a) (5%) Draw four Gantt charts illustrating the execution of these processes using FCFS, SJF, a nonpreemptive priority (a smaller priority number implies a higher priority), and RR (quantum = 1) scheduling.
(b) (5%) What is the turnaround time of each process for each of the scheduling algorithms in part 3a?
(c) (5%) What is the waiting time of each process for each of the scheduling algorithms in part 3a?
(d) (5%) Which of the schedulers in part 3a results in the minimal waiting time (over all processes)?
4. (10%) A UNIX process has two parts—the user part and the kernel part. Is the kernel part like a subroutine and a coroutine? Why?
Part II (50%)
Write a monitor in C++ to simulate the dining philosopher problem mentioned in the textbook using the conditional variables provided by the Pthreads API. Make sure that your implementation is able to handle 5 philosophers and is free of the race condition.