Design and implementation of operating systems. Topics include process synchronization and interprocess communication, processor scheduling, memory management, virtual memory, interrupt handling, device management, I/O, and file systems. Hands-on study of Linux operating system design and kernel internals. Experience with commercial virtualization tools and open source software.
COMS W3137 Data Structures and Algorithms, COMS W3157 Advanced Programming (or good working knowledge of C), and COMS W3827 Fundamentals of Computer Systems.
The Spring 2009 enrollment for this class will be limited. Please register early if you plan to take this class in Spring 2009. If the class is full and you would like to take the class, please email the instructor and come to the first day of class.
Required Text: Operating System Concepts, 8th Edition, Abraham Silberschatz, Peter Baer Galvin, Greg Gagne, John Wiley and Sons, New York, NY, 2008 (available from Amazon.com hardcover and binder version, and Columbia University Bookstore).
Required Linux Reference: Understanding the Linux Kernel (3rd Edition), Daniel P. Bovet, Marco Cesati, O'Reilly & Associates, Sebastopol, CA, 2005 (available from Amazon.com and Columbia University Bookstore). See also Errata. See also Google Book Search.
Additional materials will be made available online.
|50%:||Homework Assignments: There will be six homework assignments. Your lowest homework assignment grade will be dropped in calculating your grade. Each assignment will have both non-programming and programming problems. The programming problems will involve kernel-level programming in the Linux operating system.|
|20%:||Midterm: The midterm is one class period, closed book, calculator permitted. The midterm will cover all material discussed in the course up to the week before the exam.|
|30%:||Final: The final exam is scheduled at the normal final exam time for this class period. The final is closed book, calculator permitted. The final is cumulative and will cover all material discussed in the course.|
|0%:||No "extra credit" work.|
You're welcome to use any development environment you want, but all programming assignments must run on the CLIC machines or the virtual machines we provide. Programs that don't compile or kernels that do not boot under VMware will receive zero credit. In order to use the CLIC machines, you need a CS account. You are responsible for obtaining this account. Please obtain it immediately, since you probably cannot do the programming assignments without an account.