This course explores the field of computer operating systems, emphasizing
basic operating systems (OS) concepts and design principles.
While stressing the fundamental principles behind them,
we will discuss the performance and engineering trade-offs in the design
and implementation of operating system mechanisms.
The idea is to learn not only what operating systems are and how they work
today, but also why they are designed the way they are and how they are
likely to evolve in the future. This course will cover fundamental OS
material such as scheduling and synchronization, multiprogramming,
memory management, file system, protection, and security.
Additionally, we will touch on a few advanced topics including
micro-kernel OSes, virtual machines, and OS support for highly-concurrent
Class time: 2:00-3:15 p.m., Tuesdays and Thursdays.
Class location: LeChase 141.
e-mail: sandhya at cs
Office: Wegmans Hall 3403/3511, 275-5647
Office hours by appointment, but don't be afraid to drop by. If
you want to be sure I'm in my office, use e-mail to contact me.
e-mail: zshen10 at cs
Office: Wegmans Hall 3203
Office hours: 5:00 p.m. --- 6:00 p.m., Fridays
e-mail: mmohamm2 at cs
Office: Wegmans Hall 2311
Office hours: 4:00 p.m. --- 5:00 p.m., Wednesdays
Questions and Answers
E-mail is best. Please use the class
discussion board for
questions or information of general interest.
Prerequisites: CSC 252 or equivalent, and C/C++ programming
experience under Unix.
Material we will use:
You can use either of the following two textbooks. The required reading for each lecture is listed for both
texts. If you can find a recent (but not the latest) edition of either text,
I think you are fine (although the section numbers for required readings might
be different). The two books differ in sytle. Tanenbaum's is a more
historical and narrative style of description. SGG is a more algorithmic and
cut-and-dry description. Both books do have updated Linux and Windows
case studies. SGG provides a larger number of case studies through on-line
content. My current preference is for SGG, but you should choose the text
based on your preference
and follow the lecture content in looking for the sections that are
Tanenbaum and Bos, "Modern Operating Systems", 4th edition, Prentice Hall.
Silberschatz, Galvin, and Gagne, (SGG), "Operating System Concepts",
9th edition, Wiley.
This is a widely used text on operating systems.
We will also supplement the textbook with notes and other research readings,
especially for those taking the course as CSC 456.
This course is mostly about the concepts of operating systems and
the principles behind implementing them.
A reference book on a real production OS
may help you understand the practical aspects of OS concepts and design
principles and be extremely useful for your Linux-based projects.
However, online code walkers may be your best help.
The books below cover version 2.6 of the Linux kernel. The first
by Mauerer is the only one to cover the latest scheduler.
They will all be on reserve in the library.
Wolfgang Mauerer, "Professional Linux Kernel Architecture", Wiley.
Bovet and Cesati, "Understanding the Linux Kernel", O'Reilly. This book is very popular.
Love, "Linux Kernel Development", Novell Press.
W. Richard Stevens, "Advanced Programming in the UNIX Environment", Addison-Wesley. This is a classic.
Assignments and Grading
There will be about five programming
assignments, and two exams. The programming projects are bound to be
time-consuming, with the idea that you learn from the experience,
so be sure to start on them as soon as they are handed out.
There will also be a few written homework
assignments, and occasional student presentations by those taking the
course as CSC 456.
Grading will be based on an assessment of the above activities,
with a tentative division being
Programming Assignments: 50%
- Homeworks and Quizzes: 10%
- Midterm Exam: 20% (undergraduate students), 15% (graduate students)
- Final Exam: 20% (undergraduate students), 15% (graduate students)
- Term paper and seminar: 10% (graduate students)
Honor Code Policy:
For homeworks and programming assignments,
students are encouraged to consult each other, the TA, the
instructor, or anyone else for that matter. However, the assistance
offered or accepted should not go beyond a discussion of the problem
and a sketch of a solution. You can use the following guideline:
when it comes time for you to write your program or your homework
paper, do not use any written material from the discussion. If you
can reconstruct the discussion and complete the solution on your own,
then you have learned the material (and that is the objective of this
course!). For team projects, you should make sure
to identify division of labor in your README.
While projects will generally be graded as a team rather than separately
for each individual, corrective action could be taken.
Late homework and absences from exams:
Late assignments will have 10% of the maximum score deducted for each
24-hour period after the due date that the assignment is late,
except under extenuating circumstances. No assignment will be accepted
more than 3 days late.
Examinations will be given at alternate times only with appropriately
documented medical excuses.