Description
Part I
- Â Explain what memory-mapped I/O is and how it works.
- Â Explain what DMA is and how it works.
- 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.
- Â 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.
- Â What is the turnaround time of each process for each of the scheduling algorithms in part 3a?
- What is the waiting time of each process for each of the scheduling algorithms in part 3a?
- Â Which of the schedulers in part 3a results in the minimal waiting time (over all processes)?
-  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
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.