CS23000/33000 : Operating Systems (Winter 2005)
Instructor
Name: David Beazley
Office : Hinds 032
Phone : (773) 702-9111
email : beazley@cs.uchicago.edu
Office hours: After class or by appointment.
Teaching Assistants
- Jonathon Riehl, jriehl@cs.uchicago.edu.
- Jing Cao (George), jcao@cs.uchicago.edu.
- Xinghua Shi (Mindy), shi@cs.uchicago.edu.
Class Information
Overview
In this final installment of operating systems, we will 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.
Prerequisites
- C Programming.
- Computer Architecture.
- Knowledge of basic data structures.
- Prior experience with the Unix operating system (highly recommended).
Textbooks
Required
- Operating System Concepts, 6th Ed., by Silberschatz, Galvin, and Gagne.
We will cover at least the first four parts of the Silberschatz book (chapters 1-14).
Recommended
The following books are not required, but you may want to get them
if you are unsure about your preparation for this class.
- The C Programming Language, by Kernighan and Ritchie (a.k.a, the famous "K&R" book).
- Advanced Programming in the Unix Environment., by W. Richard Stevens.
Grading Structure
- Kernel project (40%)
- Kernal extension project (40%)
- Midterm (10%)
- Final (10%)
Grading Scale
- 90-100 : A
- 80-89 : B
- 70-79 : C
- 60-69 : D
- < 60 : F
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
to obtain an account. A dedicated Sun Solaris machine
(schlitz.cs.uchicago.edu) is used for most of the work in this
class. This machine is only available to students in operating systems
and is intended to provide an environment in which you can experiment
without receiving the wrath of annoyed system administrators. Access
the machine using 'ssh' from any of the department machines.
A few words about the projects
Operating systems is a very demanding course that requires a
significant amount of programming. Most of your grade in this course
is determined by class projects.
Everything you
might have heard about the project is probably true. Therefore, even
though I will not be assigning daily busywork, you should plan on
spending a considerable amount of time working on the projects. Also,
be advised that you will not pass the class unless you receive a
passing grade on the projects.
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 reasonably
proficient with 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 work independently and 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. When in doubt, post a question to the class mailing list---we will answer
your questions (provided they are asked).
- 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 a C compiler. We will
provide some help to get you started, but this class isn't meant to be
an introduction to Unix. If you have never used Unix before, you
might consider installing Linux on your own computer and playing around with it.
- The time commitment required for the class projects is
substantial. Based on previous course evaluations, students
report spending 15-30 hours per week outside of class.
Please keep this in mind when planning your time schedule.
- 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
grade will be based on your lab participation.
Programming languages
The only programming languages that will be used in this course are
ANSI C and SPARC assembly language. Although C++ could probably be
used, most people don't understand it well enough to use it in this
class without blowing their whole leg off. Therefore, it may not be
used. Consider getting the book "The C Programming Language" by
Kernighan and Ritchie if you don't have it already.
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 of questionable utility.
Where to go for help
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.