$30
Part I
1. Explain what memory-mapped I/O is and how it works.
2. 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) 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) What is the turnaround time of each process for each of the scheduling algorithms in part 3a?
(c) What is the waiting time of each process for each of the scheduling algorithms in part 3a?
(d) Which of the schedulers in part 3a results in the minimal waiting time (over all processes)?
4. A UNIX process has two parts—the user part and the kernel part. Is the kernel part like a subroutine and a coroutine? Why?
1
Part II
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.