Learning Objective:Acquire the knowledge, design, and implementation skills of operating systems for modern computing systems including servers, desktops, mobile and embedded systems.
Basic principles of operating systems: addressing modes, indexing, relative addressing, indirect addressing, stack maintenance; implementation of multitask systems; control and coordination of tasks, deadlocks, synchronization, mutual exclusion; storage management, segmentation, paging, virtual memory; protection, sharing, access control; file systems; resource management; evaluation and prediction of performance. Students are expected to spend at least three hours per week gaining hands-on experience in using and modifying a small operating system.
Topics Covered:This is a graduate introductory course in operating systems that examines how modern operating systems are architected and implemented. Extensive implementation experience is gained by coding, testing, and benchmarking key components of the Xinu operating system on dedicated x86/Linksys hardware in the Xinu Lab. A by-product of programming hardware-dependent kernel features in assembly is achieving significant familiarity with x86 hardware, a dominant platform of commodity computing systems. The topics covered in the course include: evolution of operating systems and computer architectures, process management, memory management, virtual memory, file systems, I/O subsystems and device management, virtualization and security. In addition to implementing key kernel features in Xinu, we will examine case studies in Linux, UNIX (Solaris and BSD), and Windows that differ from Xinu and each other in significant ways. One important example is how I/O subsystems are architected to handle a range of heterogeneous devices and their interrupts, including high-speed USB and wired/wireless network interfaces, that characterize many of today's computing systems. Kernel dependence on changing hardware features and support is an important theme throughout the course that will help familiarize with recent developments such as non-traditional file systems for flash RAM secondary memory prevalent in mobile systems.
Prerequisites:A bachelor degree in computer science or an equivalent field. Students not in the Computer Science master's program should seek instructor permission to register.
Previous operating system class at the undergraduate level (CS 35400 or equivalent), ability to read and understand a large non-trivial system written in C, ability to program extensively in C, and command of system development tools.
Applied / Theory:70 / 30
Web Content:Labs/Assignments, lecture notes.
Homework:5-6 programming intensive.
Projects:No separate project aside from lab assignments. Distance students will work with TAs via email, Skype, and other means in place of on-campus Practice/Study/Observation (PSO) sessions.
Exams:One midterm and one final exam.
Textbooks:Official textbook information is now listed in the Schedule of Classes. NOTE: Textbook information is subject to be changed at any time at the discretion of the faculty member. If you have questions or concerns please contact the academic department.
Tentative: Required--Operating System Design: The Xinu Approach, Linksys Version by Douglas Comer. Chapman and Hall/CRC, 2nd edition.