Operating
Winter 2015
Instructors:
Email:
<LastName>@mpi-sws.org |
Office
hours: after lectures |
|
Email:
<FirstInitial x 3>@mpi-sws.org |
Office
hours: after lectures |
Teaching Assistants:
Felipe
Cerqueira |
Email:
<FirstName>c@mpi-sws.org |
Tutorial/Office
hours: Thursday 4-6pm @ MPI-SWS KL Room 613 |
Curd
Becker |
Email:
<FirstName>.<LastName>@st.cs.uni-saarland.de |
Tutorial/Office
hours: Friday 4-6pm @ UdS Building E9.1, Room 1.12 |
Janosch Graef |
Email:
<LastName>@st.cs.uni-saarland.de |
Tutorial/Office
hours: Tuesday 2-4pm @ UdS Building E1.3, Rooms 1.09/1.11 (CS Student's Council) |
Mohamed
Alzayat |
Email:
<LastName>@mpi-inf.mpg.de |
Tutorial/Office
hours: Thursday 2-4pm @ MPI-SWS SB Room 312 |
Lectures:
The class meets on Mondays and Wednesdays, 12-2pm, at two locations (linked by videocast): Campus E1.5 (room 029), Saarbruecken, and Paul-Ehrlich-Str. G26 (room 112), Kaiserslautern.
Lecture notes, course schedule, recommended readings, and assignments can be found here.
Students are encouraged to meet the teaching staff during office hours for help with any questions or problems. Tutorials will be offered as needed.
Mailing Lists:
Please,
email individual staff members only when the communication is personal, and is
not related to the course in general.
News
Course
Description
This course introduces students to
the principles, design, and implementation of operating systems. The lectures
focus primarily on the principles and design of operating systems; a course
project exposes students to the implementation aspects of operating systems and
serves to solidify students' understanding of the course material.
Intended Audience / Prerequisites
This
core course is open to senior Bachelor, Masters, and doctoral students.
Bachelor students must have passed the basic courses on Programming 2 and Math
2 or equivalent (please contact the course staff for more details). Proficiency
in programming (C/C++) and UNIX development tools (e.g. make, gcc, gdb, jdb)
is strictly required to pass this course.
The
language of the course is English. All lectures, office hours, tutorials, exams
and communication with the course staff will be conducted exclusively in
English.
Textbook
·
Operating
Systems: Principles and Practice (Second Edition), by Thomas Anderson and
Michael Dahlin. Recursive Books, Ltd.
or
· Operating System Concepts (9th Edition), by Silberschatz, Galvin, Gagne. Wiley; 9th edition (Dec 17, 2012).
A small number of papers will be handed
out in class. The lecture will cover some topics in more depth than the book,
and also in a different order. If you're curious about how the principles we
cover in this class are applied in modern production operating systems, we
recommend a look at one of the following texts:
·
McKusick,
Neville-Neil, and Watson. The Design and Implementation of the FreeBSD
Operating System. 2nd Edition, 2014.
·
Russinovich,
Solomon, Ionescu. Windows Internals, Sixth Edition:
Including Windows Server 2008 R2 and Windows 7.
·
Bovet
and Cesati. Understanding the Linux Kernel. O Reilly
Media. 3rd
edition, 2005.
Lecture Notes
Summary
lecture notes will be available on the course web-site for most of the material
covered in the class. These notes are primarily meant to help students with
taking notes. However, they will not accurately or consistently cover all the
material discussed in the lectures. Students are expected to know all material
covered in the lectures, and in the assigned readings and projects. Therefore,
students should not rely only on the lecture notes. They should attend class
regularly, take their own notes and complete all assignments.
Exams
There
will be a midterm exam (covering material from the first half of the course), a
final exam (focusing on the second half of the course), and an optional repeat
exam (covering the entire course). The exams carry equal weight. All exams will
be open book and based on the material covered in lectures, readings, and
projects.
Grading
To pass the course, a student must pass either the final or
the repeat exam. Students may choose to take the repeat exam even if
they have passed the final exam, to try and improve their grade. To be
admitted to the final and repeat exams, a student must pass the
project assignments, and (ii) pass the midterm exam. To pass the
project assignments, the sum of all points earned by a student in the
project assignments must be at least 50% of the maximal possible
points. To pass the midterm exam, a student must score at least 30% of
the maximum possible points in the exam. To pass the final exam or
repeat exam, a student must score at least 50% of the maximal possible
points in the exam.
Your
course grade will be based on a weighted score computed from the points you
earn in your successful examinations and your project assignments. If a student
takes both the final exam and the repeat exam, then the exam with the lower
result will not be considered when computing the course grade. Project scores
count towards 50% of the weighted score, and exam scores on the midterm and the
final or repeat exam account for the remaining 50% of the weighted score.
Class Project
The
project is to implement a simple operating system; it is based on the Pintos
system from Stanford University. The project has four stages: (1) threads and
synchronization, (2) user programs, (3) virtual memory, and (4) filing
services. Each stage builds on services that students implemented in previous
stages of the project. To make it possible to complete the project in one
semester, some code is provided that implements a subset of the required
functionality. Students are required to make major extensions to the existing
design and implementation, adding missing functionality and improving
performance. In stages 2, 3, and 4, students are also required to evaluate
their design choices experimentally.
The
projects will require a substantial amount of software design and
implementation. The software produced will be graded based on its ability to
successfully pass a set of functional and performance tests. In project
stage 1, there will be an additional code review.
Project
teams:
Students are required to work on the projects in small teams of two students.
It is the responsibility of the students to form and manage their own teams. We
do not allow individual project solutions. If your teammate drops the course
you must immediately find a replacement, irrespectively of the current project
stage. If you have difficulty in finding a replacement please contact the
course staff and we will assign you one.
All team
members must be involved in all aspects of the project. To collaborate
effectively, team members should divide the project responsibilities so that
they can work in parallel. However, each member is responsible for, and should
be familiar with, all the work done by the team. Proper time management is
critical – if you don't start working on the assignments early you will
not be able to complete the projects!
Late submissions: We will apply a flexible slip date policy for late submissions. Each student is allocated an automatic extension of 4 calendar days for the entire semester. Students can use the extension on any project during the semester in increments of one day. For instance, you can hand in one project assignment 4 days late, or one assignment 2 days late and two assignments 1 day late. This extension is to be used for incidental occurrences, so please do not ask us for any extensions due to any incidental circumstances.
In case
a student works with different teams throughout the semester, the slip time
will be deducted from each team member's remaining slip time. Students will not
receive credit for late submissions beyond the automatic extensions.
Honor
code: It is acceptable
to discuss ideas, algorithms, or approaches to solving problems and assignments
with other students. We encourage you to give and receive such advice as it
will help you learn the material better and improve your ability to work in a
team. However, what you submit must be the work of your own group; copying code
or solution sets from any source is strictly prohibited.