Programming exercises will require the student to implement
programs illustrating the principles used in OS design. Basic
knowledge of C and C++ programming and the UNIX environment is
assumed.
Text Books
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.
- Tanenbaum, "Modern Operating Systems", 2008, Prentice Hall.
- Silberschatz, Galvin, and Gagne, (SGG), "Operating System Concepts", 8th edition, 2009, Wiley.
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",
October 2008, Wiley.
- Bovet and Cesati, "Understanding the Linux Kernel", 3rd
edition, 2006, O'Reilly. This book is very popular.
- Love, "Linux Kernel Development", 2nd edition, 2005, Novell
Press.
- W. Richard Stevens, "Advanced Programming in the UNIX
Environment", Addison-Wesley, 2005. This is a classic.
|
Honor Code
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.
|