CSCI 314: Operating Systems




Course Overview

This course covers the theory and implementation of operating systems. We will study the standard topics: Processes, Interrupts, and System Calls, Job scheduling, Process communication and coordination, Deadlock and starvation, Input and Output, Primary and Secondary Memory Management, and File systems.

As well as reading about Operating Systems, we will modify Minix, a working operating system. Linus Torvalds learned Operating Systems by taking apart Minix, so this is a reasonable place for you to begin.

Minix is not Unix or Linux. It is based closely on Unix. It provides the original Unix Application Programming Interface (API), system calls such as open, read, fork and exec. Though it retains this interface, all functions were re-implemented. Minix is

Though it is small, Minix is a real operating system. The Minix website server at Hampshire College runs Minix.



Expectations

After some initial programming projects to get comfortable with the ideas of tasks and signals in Unix, your projects will involve making changes to the Minix source code.

Minix is written in the C programming language. The student will need to become comfortable reading C and working in Unix environment. While I will spend time reviewing the C language and how to work with Unix, that will not be the focus of the course, and students will be expected to learn what they do not already know.

The projects themselves will not involve writing many lines of code: they will involve reading many lines of code. While this may seem unusual, reading and understanding the work of others is an essential skill in Computer Science.


Honor Code

You will be encouraged to assist each other in learning C and Minix, and discussing alternative strategies for assignments.

It is expected that all work you submit is your own. If you have any questions about these expections, please see me.


Texts

Minix is described in the required text

Operating Systems: Design and Implementation, 2/e
Andrew S. Tanenbaum, Albert S. Woodhull
Prentice-Hall

I will also be using
An Operating System Vade Mecum
Raphael A. Finkel
Prentice-Hall

The book is now out of print, but you have permission from Dr. Finkel to download a PDF version from his website. Take some time to browse the site before downloading. While you may find that one text is enough, you may enjoy the perspective that Finkel's book provides. While there is overlap in the coverage, the two books complement each other well, even though both have a strong emphasis on implementation over theory.

Dr. Finkel was the original author of the Hacker's Jargon file. I learned Operating Systems from Raphael. He is even more fun in person than he is in print.

I will cite many articles, texts, and URLs in class: far more than either of us will have time to read. These are there to provide you with a starting point for further explorations rather than as something that must be read.


Lectures

Lectures may be available as PDF files. Having a copy of the lectures may help you take notes, but is not a guarantee of future performance. I reserve the right to modify the content before, after, and during lecture.

The syllabus is a prediction, and thus suspect.


Office

642 Bicentennial Hall
Department of Computer Science
Tel: (802) 443-5502
Instructor