CS422/522: Operating Systems, Spring 2010 &mdash Overview
Lectures: Lectures in the first part of the course present basic operating system ideas and concepts, explaining how they manifest in the xv6 operating system, an instructional operating system that closely mirrors the structure of modern Unix systems while being much smaller and simpler. Some lectures will involve preparatory homework assignments requiring students to explore important aspects of xv6 by examining its source code and running it in a virtual machine. Later lectures will expose students to more recent operating system developments through research papers and other readings.
Labs: Throughout the semester, students will work in teams to build their own version of PIOS, a small but real operating system, substantially different in design from xv6 though utilizing the same general principles, through a series of six programming labs. While the xv6-based homework assignments are to be completed individually, the programming labs emphasize teamwork and collaboration, and are structured to encourage collaborative learning and to help students develop the important skills of reading and building on code written by others.
Prerequisites: CS 323 Introduction to Systems Programming and Computer Organization.
All of the required reference materials for this course are available on-line on the reference page (also available in the quick links at the top).
The primary reference for the lectures is xv6: a teaching operating system, an instructional operating system and draft commentary by Russ Cox, Frans Kaashoek, and Robert Morris. This operating system is an x86-based rewrite of an early version of Unix, which still reflects accurately the basic structure of modern operating systems while being small and simple enough to be understood at source code level in a one-semester course. The original xv6 home page is at MIT, but please use the local copies on the reference page for this class to ensure that everyone refers to the same version throughout the semester. We will arrange for printed copies to be available from Yale RIS for students who would like them.
To provide a broader perspective on operating system design concepts than the primarily Unix-oriented xv6 commentary provides, students are encouraged to refer to the following optional, supplementary textbook, whose chapters will be referenced as appropriate in course lectures:
A. Silberschatz, P. Galvin, and G. Gagne, Operating System Concepts (Eighth Edition) , John Wiley & Sons, Inc., 2008. ISBN 0-470-12872-0. Available from the Yale bookstore or on the web.
This and several other other books that may be useful in this course have been placed on reserve at the Becton Library. See the reference page for a complete list, as well as links to many relevant resources available online.
To access these PCs, you can either directly login from their consoles in the Zoo, or just remotely login from other machines across the campus.
If you plan to take the course for credit, you should get an account on these machines in the first week. Please also visit the following web site to create a cs422 class directory (or just to sign up for a zoo account):
Do not allow anyone else to use your accounts for any purpose. They are for your use alone, and you are responsible for any misuse. Your passwords control access to your accounts and should be kept secret.
Many lectures have associated preparatory homework assignments, labeled PREP: in the schedule. Homeworks will typically involve and answering a few questions about xv6 or other assigned material. Written homework assignments must be turned in at the beginning of the associated lecture; late homework will be accepted only during the first two-week "shopping period," until Monday January 25.
The midterm exam is scheduled in class on Wednesday March 3, 2010. Unless prior arrangements are made, a grade of zero will be recorded for missed exam.
Do not, under any circumstances, copy another team's code. Writing code for use by another or using another's code in any form violates the University's academic regulations and will be dealt with harshly.
ESTIMATE of time to complete lab: 15 hours Start Time Lab Date Time Spent Part Work completed ---- ----- ---- ---- --------- 9/08 10:15 1:00 1 Read assignment, completed cprintf exercise 9/09 20:15 2:00 1 Studied IA-32 programmer's guide, got backtrace working 9/10 12:45 0:30 2 Reading IA-32 system guide on trap handling 9/10 14:00 0:30 2 Discussing trap handling approach with teammates 9/10 16:00 2:00 2 Helped debug Bob's implementation of _alltraps 9/12 21:20 2:00 4 First cut on coding up physical page allocation 9/13 09:00 3:00 3 Meet, help teammates debug protected control transfer 9/13 20:00 5:00 4 Mysterious memory corruption bug in my page allocator 9/14 10:00 1:00 4 Aha! Was overwriting the last page of the kernel. ----- 17:00 TOTAL time spent a brief discussion of the major difficulties encounteredThe format above is only an example, but your log must contain:
You will be using the Git version control system to manage source code in your programming labs, as will be laid out in Lab 1. When you turn in a lab, you are to include your team's entire Git repository, including the .git directory and all its contents. The recommended approach to using Git is for one team member to maintain a "master" Git repository for each lab in a known location, and for all team members to 'git clone' that repository to create their own working repositories. Each team member can then work concurrently and 'git push' their code back to the master repostiory when ready. Team members may alternatively use completely separate Git repositories, but in that case you should combine all of your repositories into one before submitting: for example, other team members can incorporate their repositories into the submitting team member's repository as separate branches using the command 'git push myrepository submitters-repository labN:labN-mynetid'.
Lecture notes will be made available, though they are by no means guaranteed to be a complete record of the class and cannot substitute for class attendance.
Copyright (c) 2000-2010 Zhong Shao and Bryan Ford, Department of Computer Science, Yale University