Per Brinch Hansen introduced an interesting idea in his RC4000 operating system (see his 1973 OS textbook). Instead of having interrupt routines do any work, all useful work was done in high-priority processes scheduled with the normal system scheduler. All interrupt service routines on the RC4000 did the following, and nothing more:
interrupt service routine for device X: disable device X's interrupt request signal device X's semaphore returnTypically, a device service process would await a signal to device X's semaphore and do the actual work; when this process wanted to allow device X to produce another interrupt, it would re-enable interrupts from device X.
Problem, part A: Propose a way to shift the burden of page fault service from the page-fault handler to a page fault service process, basing your solution on something akin to Brinch Hansen's model for interrupt service. This would allow a fault handler to interact with the disk handler and disk scheduler in the same way as user programs. Assume initially that there is only one user process that may cause page faults.
Problem, part B: What is the easiest way you can find to allow your solution to part A to be generalized to allow multiple user processes, where one process may generate a page fault while the faults caused by other processes are still being handled.
The problem: Outline, at a reasonable level of detail, the structure of the communications line input interrupt service routine needed for this system.
The problem: Discuss the impact of order of service on total service time for pending I/O requests all in the same cylinder. Does this depend on whether the access requests are for whole tracks or for individual sectors? Propose an appropriate scheduling algorithms for dealing with the pending I/O requests in one cylinder.