- William Stalling, Operating Systems: Internals and Design Principles, 7/e, Prentice Hall (2011).
- Andrew S. Tanenbaum, Distributed Systems: Principles and Paradigms, 2/e, Prentice-Hall (2006).
- Abraham Silberschatz, Peter Baer, and Galvin Greg Gagne, Operating System Concepts, 8/e, John Wiley & Sons, Inc. (2008).
- Jonathan Corbet, Alessandro Rubini, and Greg Kroah-Hartman, Linux Device Drivers. 3/e, O’Reilly (2007).
(Contact instructor for waivers to prerequisites.)
- CSC 244 or 246 (OS),
- CSC 314 (data structures),
- MA 421 (probability), and
- Programming competence in C (not C++) and Unix.
This class prepares students to understand advanced issues in operating systems. Students will be introduced to multi-threading, synchronization, scheduling, virtual memory, and distributed systems including clusters. The material will be covered in terms of operating systems internals rather than the operating systems interface. Current research will be discussed to give an understanding of open issues in operating systems.
By the end of the course, students should be able to do the following.
- Multi-Threading Students will be able to reiterate states and transitions of threads; to explain non-local transfers of control; to determine context switching details; to analyze thread performance; to design and implement core threading functionalities; to critique different implementation choices.
- Synchronization Students will be able to list different synchronization models; to explain the operational characteristics of these models; to use these facilities in concurrent programming models; to contrast these models; to realize synchronization for contemporary architectures; to select a suitable synchronization paradigm for a given problem.
- Scheduling Students will be able to recite different scheduling paradigms; to paraphrase qualitative and quantitative properties of these paradigms; to derive a schedule for given parameters; to model quantitative properties of scheduling paradigms; to incorporate protocol extensions into existing scheduling models; to contrast different scheduling approaches.
- Virtual Memory Students will be able to reiterate the principles of hardware and software support for virtual memory; to express operational properties of address translation; to perform the calculations of address translation; to predict the impact on TLB misses; to apply virtual addresses in runtime systems; to judge the merits and shortcomings of virtual memory usage.
- Distributed Systems Students will be able to characterize the impact of distributed systems on operating systems and runtime support; to explain operational characteristics of distributed protocols and services; to algorithmically solve a problem within a distributed environment; to analyze the performance of a solution; to design and implement selective operating system and runtime services for distributed computing; to optimize the performance of distributed problem solutions.