
Home
Schedule
Reading List
Computing
Grading
Project
Presentation
|
|
|
What is the class about?
Are you interested in understanding the architecture of
cutting-edge operating systems that you could be programming in the future
and what challenges confront this critical (but often hidden) software?
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
|
Prereq
CMPT 225 and MACM 101.,solid programming skills (C/C++/Java). If unsure
whether you have the pre-requisites, talk to the instructor!
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.
|
When and Where
Tuesday (1:30-2:20), and Thursdays (12:30-2:20)
Room 5100 @ Surrey.
Directions : Galleria on 5th floor
|
|
|