COMP 310/ECSE 427
Tuesday,Thursday : 12-1:30, McConnell
Trottier 3130 (office hours)
Office hour: Wednesday, 12:30-1:30
McConnell Engineering Building 107(Distributed Simulation Laboratory)
Office hour:Friday, 11:30-12:30
What is the course about?
Viewed from the outside, an operating system (OS) is an interface for the
user of a computer to
the hardware which actually comprises the computer. Its job is to
allow the user to make use of the hardware without actually acquainting
himself with the details of its operation. Hence high-level abstractions
for such functions as the reading and writing of files are necessary for
someone to be actually able to use a computer. Another way of saying
this is that the user is presented with a virtual machine to make use
of. However, the OS also has the fundamental job of managing the
hardware, i.e. providing access to the many programs which compete
for the hardware (processors, disks, memory) in an efficient and fair
Operating systems have a long and interesting history from the first
batch systems to our present generation of personal computer OS's,
distributed OS's, and "specialized" systems such as real-time and
embedded systems. They continue to evolve and be the subject of
Major topics to be covered in this course are:
- Processes and threads Process and thread models, process and
- Memory management Swapping,virtual memory,page replacement
- File Systems Directories, implementation.
- Multiple Processor Systems Multiprocessors, distributed systems.
- OS Security Threats,cryptography,formal models,defense vs. offense.
It is assumed that any student taking this course can program
in C, or is willing to learn C. One reason for this is that OS internals are written
in C. There is some supplementary material available on-line (see below)
which is intended to provide a refresher for those of you who have been
primarily programming in Java. The course itself is
there will be a fair amount of programming in the form of assignments, which
will comprise a large (50%) portion of the grade.
What do I gain from this course?
An understanding of how an extraordinarily complicated piece of software, which runs
all computers is built, along with some understanding of how the OS has affected other areas
of programming. Hands on experience through programming exercises will make this
Reading materials for the course
Operating Sytems,third edition, by Andrew Tanenbaum
The author is a well known expert in the field, having written a stripped down
version of UNIX (MINIX) for pedagogical purposes. Strangely enough, MINIX led
to the development of LINUX. The book is available in the bookstore. You can also get
copies from Amazon.
- Operating Systems:Design and Implementation by Andrew Tanenbaum and Woodhull
This text emphsizes the description of MINIX, so that students will have a concrete
view of what the code in an OS really looks like.
- Operating Systems Concepts by Silberschatz,et al. Known as the dinosaur
book because of the art work on the cover, this has become a standard text for OS courses.
- Operating Systems: A Design Oriented Approach by Crowley. Emphasizes the design of an OS, as the
- The Mythical Man Month:Essays on Software Engineering by Fred Brooks. One of the original designers of the
OS 360, Brooks wrote a classic on what works when building a large software system.
Understanding the Linux Kernel by Bovet and Cesati. An excellent desription of what is in the
Advanced Programming in the UNIX Environment by Stevens and Rago. How to write programs in C which
use the Unix call interface and standard C library.
- Unix and Beyond: An Interview with Ken Thompson by Cooke et al. One of original designers of UNIX,
Thompson gives his thoughts about where the field is going
- On Building Systems that will fail by Corbato. Actually, a Turing award lecture. Main point is-keep it
simple, since complex systems will eventually fail.
There is a detailed list of references at the back of the text for each of the chapters in the event that you
wish to pursue some of the material in greater depth.
An approximate schedule is to be found at schedule. By approximate, I mean that I can't
guarantee that I will cover all of the material in the schedule. Problems for each of the chapters
are included in the schedule.
- Final:40%. The final will cover all of the material in the course up to
and inlcluding the bitter end.
- Midterm:10%. I will provide you with a list of problems to do as we make
our way through the course. These problems
are intended to prepare you for the midterm and the final exam. You can work with other
students on their solution, as this is a really good way to learn about the subject.
Doing the problems is the best way to study for the midterm and the final.
- Course projects: 50%
To be found at Course Projects
To be posted when the lecture is given at Lecture
slides Do yourself a favor-read the text. You will gain a lot more then taking the short cut.
Midterm Answers, statistics and the dreaded curve.