CIS 415

Operating Systems

Logistics

Instructor: Kevin Butler (butler at cs.uoregon.edu)
Location and Time: Tues/Thurs, 12-1:20 PM, 106 Deady
Lab Sections: Section 1: Tues 4:00-4:50 PM, 26 Klamath
Section 2: Fri 2:00-2:50 PM, 26 Klamath
Office Hours: Mon 1 PM - 12 PM, Wed 12 PM - 1 PM, and by appointment with Prof. Butler
GTF: Amir Farzad (farzad at cs.uoregon.edu)
GTF Office Hours: Fri 11 AM - 1 PM, 233 Deschutes
Link to Schedule

Course Description

Operating systems are undergoing a renaissance of interest within computer science. With the rise of open-source operating systems such as Linux and the BSD distributions, the commodification of operating system functionality through cloud computing, and the new approaches to device management from smartphone and tablet-based operating systems such as Android and Apple iOS, an understanding of operating system fundamentals is perhaps more important than ever. Knowledge of the theory and practice of operating system design is also a fundamental prerequisite for understanding critical systems issues such as networking and security.

This course is an introduction to the theory and practice behind modern computer operating systems. Topics will include what an operating system does (and doesn't) do, system calls and interfaces, processes, concurrent programming, resource scheduling and management (of the CPU, memory, etc.), virtual memory, deadlocks, distributed systems and networks, and security. We will approach the subject from both a theoretical perspective (what are the abstractions and algorithms?) as well as a practical one (what are the mechanisms and how are they built?).A detailed list of lecture by lecture contents, assignments, and due dates (subject to change as the term evolves) will be available on the course schedule.

The required textbook for the course is:

  • Silberschatz, Galvin, and Gagne, Operating System Concepts. 8/E, Wiley. You can get either this version (2009) or the updated version (2011). If you purchase an international version, you are responsible for ensuring that exercises and reading assigned from the book match your edition.

If you are not familiar with C and UNIX programming environments, you will need to become so. The following resources are recommeded for learning and using C:

The following are good resources on UNIX programming:
  • Stevens and Rago, Advanced Programming in the Unix Environment. 2/E, Addison Wesley, 2005.
  • Kerrisk, The Linux Programming Interface. 1/E, No Starch Press, 2010.
If you are unfamiliar with using the command line, the following resource is helpful:

We will be drawing examples from the Linux operating system with some frequency. If you want to understand the internals of Linux more deeply than what is presented in the textbook, the following books are recommended:

  • Bovet and Cesati, Understanding the Linux Kernel. 3/E, O'Reilly, 2006.
  • Love, Linux Kernel Development. 3/E, Addison Wesley, 2010.

Course Expectations

The expectations for the course are that students will attend every class, do the readings assigned for class, and actively and constructively participate in class discussions. The tentative grading policy is as follows (subject to change):

10% Homeworks and Participation, Quizzes

20% Midterm Exam

40% Programming Projects

30% Final Exam

Quizzes may be assigned sporadically throughout the term and test comprehension of the reading material as well as the previous day's class. Being late for or missing a quiz without an extremely sound reason will result in a zero for it.

Academic Integrity Policy

Students are required to follow the university guidelines on academic conduct at all times. Students failing to meet these standards will receive sanctions ranging from a zero on the assignment, to a grade of 'F' for the course, to expulsion from the university. The instructor carefully monitors for instances of offenses such as plagiarism and illegal collaboration, so it is very important that students use their best possible judgement in meeting this policy.

Note that students are explicitly forbidden to copy anything off the Internet (e.g., source code, text) for the purposes of completing an assignment or programming project unless otherwise stated by the instructor. Also, students are forbidden from discussing or collaborating on any assignment except were explicitly allowed in writing by the instructor.