Fundamental principles of operating systems: process synchronization, deadlocks, memory management, resource allocation, scheduling, storage systems, and study of several operating systems. A major programming project will be required.
Office Hours: 12:00 - 13:30 TuTh (E2-255)
Aneesh Neelam (aneelam@ucsc.edu), Office Hours: Mon 11:00 AM - 12:00 PM (E2-480)
Madhura Abhyankar (mabhyank@ucsc.edu), Office Hours: Wed 4:00 PM - 5:00 PM (E2-480)
The primary textbook is Modern Operating Systems, by Tanenbaum, make sure to get the 4th Edition (ISBN 013- 359162-X). It covers the main topics of uniprocessor operating systems in the early chapters, and then covers dis- tributed systems and other advanced topics in the later chapters. The second book, The Design and Implementation of the FreeBSD Operating System will be needed extensively for the assignments, and we will be referring to specific chapters that will need to read to be able to do the assignments.
Students who take this course should learn the fundamental principles of operating systems. The course covers the various important aspects, characteristics, and design approaches of operating systems in general. The presented concepts will be complemented with examples from real modern operating systems such as FreeBSD.
The is not a theoretical course by any means and the student should be prepared to get his/her hands dirty as there will be a considerable amount of code writing involved. During the course students should learn how to read already existing operating systems code, reverse engineer it, and be able to hook it and add new or modified functionality to it. The assignment projects are designed to implement concepts and implementation details explained in class through amending and modifying the kernel code of the FreeBSD open source operating system.