CS230/330 : Operating Systems (Winter 2001)
Instructor
Name: David Beazley
Office : Ryerson 257B
Phone : (773) 702-9111
email : beazley@cs.uchicago.edu
Office hours: Whenever I am around (which is most of the time) or by appointment
Teaching Assistants
- Ian Cooke (iancooke@cs.uchicago.edu)
- Brian Ward (bri@cs.uchicago.edu)
Grader
- Brendan Strejcik (brendan@cs.uchicago.edu)
- Aquinas Hobor (aahobor@cs.uchicago.edu)
Class Information
Overview
The primary objective of this class is to cover concepts central to
the design and implementation of modern operating systems. Topics
include but are not limited to processes, threads, memory management,
file systems, interprocess communication, I/O systems, scheduling,
synchronization, and security. A secondary objective of this course
is to give you some experience working on a substantial software
project and to prepare you for future work in systems research.
Prerequisites
- CS116 C/C++ Programming.
- CS222 Computer Architecture.
- Knowledge of basic data structures.
- Prior experience with the Unix operating system (recommended).
Textbooks
Required
- Operating System Concepts, 5th Ed., by Silberschatz and Galvin.
We will be covering at least the first six parts of the Silberschatz
book.
Recommended
The following books are not required, but you may want to make a
purchase if you are unsure about your preparation for this class.
- The C Programming Language, by Kernighan and Ritchie (a.k.a, the "K&R" book).
- The Practice of Programming, by Kernighan and Pike.
- The Unix Programming Environment., by Kernighan and Pike.
- Advanced Programming in the Unix Environment., by W. Richard Stevens.
Grading Structure
- Unix shell project (10%)
- Kernel project (70%)
- Midterm (10%)
- Final Exam (10%)
Grading Scale
- 90-100 : A
- 80-89 : B
- 70-79 : C
- 60-69 : D
- < 60 : F
Graduate Credit
Graduate students and undergraduates taking the course for graduate
credit will be required to perform additional work on the projects and
exams. These additional requirements will be clearly indicated as
"graduate only."
Class Accounts
To access the class machines, you will first need to obtain a CS
account. Please go to
http://www.cs.uchicago.edu/info/services.php to obtain an
account. A dedicated set of Sun Solaris machines are used for this
class. These machines are only available to students in CS230/330 and
are intended to provide an environment in which you can experiment
without receiving the wrath of an annoyed system administrator. The
names of the class machines are as follows:
- stonecrusher.cs.uchicago.edu
- sunspot.cs.uchicago.edu
- stimulation.cs.uchicago.edu
- sidewinder.cs.uchicago.edu
- wildcat.cs.uchicago.edu
Four of these machines are located in Ryerson 257 and can be used at
the console. Otherwise, all of the machines are remotely accessible
via 'ssh'.
Academic Dishonesty
You are encouraged to interact with your classmates and to discuss
various design aspects of the projects and assignments. However, the
work you hand in must be your own. Blatant copying or sharing of
solutions or source code will result in an F in the course and
referral to the college administration. Also, be advised that the
operating system project changes from year-to-year. Therefore, past
solutions to the project are likely to be of questionable utility.
A Few Words About The Project
Most of your grade in this course is determined by a substantial
programming project in which you will work in groups to implement a
fully-functional operating system kernel. Everything you might have
heard about the project is true. Therefore, even though I will not
be assigning daily busywork, you should plan on spending a
considerable amount of time working in the lab. Furthermore, it goes
without saying that you will not receive a passing grade for the
class unless you also receive a passing grade on the project.
With this said, here are few things to keep in mind:
- This is an advanced computer science course intended for graduate
students and advanced undergraduates. I assume that you are
proficient with C/C++ programming and basic data structures. If you
aren't up to speed on these topics, it is your responsibility to hit
the books.
- You should be able to find relevant programming information on
your own. For instance, you should know
how to use Unix man pages and how to find programming information in books and on the
internet.
- The development environment for the project is Sun Solaris and
ANSI C. You should be somewhat familiar with basic Unix commands, a
text editor such as emacs or vi, and use of the C compiler.
- The time commitment required for the kernel project is
substantial. Although this class only meets 2 days a week, you should
plan to spend 10-20 hours a week outside of class working on the
project. I will do my part to make sure you are properly caffeinated.
- A significant amount of interaction tends to occur outside of the classroom and in the
labs. Therefore I encourage you to interact with
your classmates, to provide assistance to those who might be
struggling, and to engage in an open exchange of ideas. Part of your
project grade will be based on your lab participation.
- Last, but not least, the kernel project is a lot of fun.
After all, you're going to be writing code that is so sick, so
depraved, and so twisted, it will make all of those script-kiddies want
to run away in horror. Besides, what could be better than
getting a nice winter tan from the glow of a CRT?
Where to go for help
Operating systems is traditionally one of the most challenging
computer science courses. Do not hesistate to see me or the
TAs if you have any problems or concerns. Our goal is to make sure
that you succeed in this class.