• final is Fri Dec 16, 11:30 am, OS415
• final is open-book, open-notes
• see final dir for 3 images of whiteboard
• info on Palm mem mgr pdf uname & passwd are our 5-digit course #

• reference string, distance string, Belady's anomoly, analysis of FIFO stack algorithms
assignment 10: Palm database + exercises html

paging algorithms: optimal, FIFO, 2nd chance, clock, NFU, aging, working set, w.s. clock
theory: locality, pre-paging, reference string

assignment 9: page tables pdf
due Dec 5

• Palm OS memmgr handout; handle-based mem alloc'n
• buddy system details – see Wikipedia link
• use binary tree to implement the buddy mgr!

assignment 8: memory manager pdf
due Wed Nov 28
• first-fit, best-fit, data structures for asn 8

• Quiz 2 on Nov 30, will cover Asn 1 – 7
• rest of semester: memory management (alloc & virtual memory), file systems (Unix F/S & Palm D/B)
• asn 7: normal and bursty fcns modified over weekend
• today: malloc, first fit, best fit, worst fit, intro to handles

asn 7 updated; went over asn7 code

assignment 7: sleeping barber html
due Wed Nov 16

quiz returned, threads discussion

IPC problems: dining philo, sleeping barber

monitors and message passing

assignment 6: Donut Factory (full) pdf due Mon Nov 7

assignment 5: Donut Factory Prep pdf due Wed Oct 26

quiz 1: M Oct 24
quiz 2: W Nov 30

assignment 4: OSP CPU scheduler pdf due Wed Oct 12

assignment 3: Palm OS performance html due Fri Sep 30

lecture 8 notes txt
resource IDs; adding to Hello2 app

lecture 6 notes txt
intro to Palm OS dev
assignment 2: intro to Palm OS dev html due Fri Sep 23

lecture 5 notes txt
intro to Palm OS
Zen of Palm pdf

lecture 4 notes txt

lecture 3 notes txt
exec and unnamed pipe

lecture 2 notes txt
assignment 1: processes, pipes, signal handers pdf due Fri Sep 16

resources palm OS Yahoo! Group assn cover helpful links

91.308 Introduction to Operating Systems Fall 2005

Prof. Fred G. Martin

Olsen 208 (office) x1964
Olsen 306 (lab) x2705


MWF, 10:30 – 11:20 am, OS 415

Office Hours
Monday 4:30 – 5:30 pm, OS 306 (Martin)
Wednesday 11:30 – 12:30 pm, OS 208 or OS 415 (Martin)
Thursday 3 – 4 pm, OS 208 (Martin)

Web Site

Discussion Board
The class will use a Yahoo! Group for web-based threaded discussions of lectures, assignments, and other course-related material. Students are strongly encouraged to create a free Yahoo! account (if you don't already have one) and join the class group.

Please use the discussion board for questions and assignments on course assignments, lectures, and other material. Before sending me an email, please consider posting your question to the discussion board. Of course, private matters (e.g., academic standing in the class) should be addressed to me.

Look for the link to the course board at the top of any course web page, in the pink resources menu.

Modern Operating Systems (2nd Edition), (C) 2001 by Andrew S. Tanenbaum, ISBN 0130313580, Prentice-Hall.

The book’s web site on the publisher’s page is,1144,0130313580,00.html.

The authors’ site is

Tanenbaum's text is easy to read and has good technical content. Tanenbaum is a well-known textbook author (he also has texts on architecture and networks) and is a researcher in distributed operating systems.

Course Description
From the UML CS brochure:

“An introduction to major operating systems and their components. Topics include processes, concurrency and synchronization, deadlock, processor allocation, memory management, I/O devices and file management, and distributed processing. Techniques in operating system design, implementation, and evaluation. ”

Course Approach
There are a number of different ways an O.S. course can be organized. Students can:

  1. Study topics in OS design in a theoretical way.

  2. Write code to illustrate/demonstrate these topics.

  3. Write code that exercises the OS of a known/working operating system (in other words, learn standard OS APIs)

  4. Implement an operating system.

We're going to do a mixture of numbers 1 through 3 on this list. #4 would be a real accomplishment, and it is something I continue to mull over for future versions of the course – but not this semester.

In the past, the course has focused primarily on the Unix operating system. This is a good thing. Unix is an industry-standard operating system, and the APIs for interacting with it are fairly straightforward (making it good for teaching/learning purposes).

This semester, we're still going to have a primary emphasis on Unix (and C programming), but we will also be studying the Palm operating system. Each student will be provided with their own Palm Zire 32 handheld, on loan for the duration of the semester.

The Palm OS, particularly in its earlier versions, is far simpler than Unix (or most other full-blown desktop operating systems, e.g., Windows or Mac OS X). This is because the Palm OS was developed to run on tightly constrained hardware (i.e., the original Palm Pilot) and with a sharp application focus (handheld productivity apps).

Because the Palm OS is in fact significantly different from Unix, central ideas will be illustrated in complementary fashion. My goal is that this will help to develop a stronger understanding of core concepts.

Finally, while Unix (and Windows NT/2000/XP, which isn't all that different) is an industry-standard OS, it's not the only way one can imagine building an operating system. So we'll explore some alternate operating systems, which while having limited commercial success, are still quite interesting.

Teaching/Learning Premises
The heart of the class is the programming assignments. One student noted about the Spring 2005 version of this class:

As long as you do the hws and listen (ok, hear and see, not necessarily listen) in the class you're guaranteed at least B.

This is more or less true (particularly since my exams are based on the homework assignments, so if you do the homeworks, you will be well-positioned for the exams).

The converse of this is also true: if you do not do the homework, you will not pass.

So, in short, make me happy and do the homeworks. This is where you'll learn the most. I personally don't believe lectures are a great way of learning (*). Lectures are a good way to get introduced to ideas, and start thinking about stuff that's new to you, but really you are going to learn something when you sit down and try to build something (that is, write some code) based on the ideas that are involved.

(*) I don't mean this as a cop-out. I mostly do a decent job of prepping material for class. But as you'll see (or already know), I'd rather bring to class a set of topics that I want us to talk about, and have people participate by asking questions or contributing their own expertise. You guys are a bunch of smart people. So I don't pretend to know more about everything related to this class than all of you. Rather than being a super domain expert, I see myself more as an experienced expedition leader. My job is to know the general map of the landscape, and be responsible for leading us through most of it. If we take some (relevant) detours based on your contributions, that's a good thing.

OK, the details.

There will be 2 in-class hour-exams and 1 final exam. These will largely determine your grade, assuming you have completed (or made serious attempts to complete) all of the homeworks (more on this below):

in-class hour exams, 25% each
final exam, 40%
in-class participation and homework assignments, 10% — see below.

Homework assignments are the core of the class. It is where I expect, for most students, the most important learning will take place.

The key to success in this class is the following:

  • Even though they do not count substantially toward your grade, all homework assignments must exhibit significant effort and thought.

  • Homework that is obviously prepared without effort (“lame”), or is too late (see below), will be counted as missing.

  • After one missing homework, each subsequent missing homework will cost you a half-letter grade in the class.

In other words:

1 missing/lame homeworks – no penalty.
2 missing homeworks – half-letter grade reduction (A becomes an AB, AB becomes a B, etc.)
3 missing homeworks – one-letter grade reduction (A becomes B, etc.)
4 missing homeworks – 1.5-letter grade reduction (A becomes BC, etc.)
9 missing homeworks – 4-letter grade reduction (A becomes F, a.k.a. automatic failure)

Here is the reason for this policy. The homework is the place to learn. So I don’t want to penalize you if you didn’t understand something on the assignment. Hence, the grades on your homeworks are only worth 10% of your overall grade. When you get your corrected assignments back, check to make sure you understood the material, or come see me or the TA to ask questions and debug your thinking.

On the other hand, I expect you to make an honest effort in the class—not to just attend lectures and cram for passing grades on the exams. If you are not willing to take the class seriously and do the work, you should drop the class, because (with this policy) it’s pretty hard to pass otherwise.

Finally, at the end of the day, if you understand what happened in each homework assignment, you should do fine on the exams! I am not going to surprise you with material on the exams that had nothing to do with the homework. Quite the opposite: the exams will be based specifically on the material on the assignments.


  • There will be approximately one homework assignment per week. You should budget 4 – 8 hours per week to do the assignments.

  • We will make every effort to return corrected homework to you, with an answer key as appropriate, within one week of its due date.

  • Late homework will not be corrected. This is a practical matter of respect to the professor and TA, who are responsible for timely and thoughtful treatment of a significant number of students’ homework.

  • If late homework is turned in before answers are handed out, though, it will be counted as being done. This gives you a non-deterministic period typically no longer than a week to get late homework in. Don’t push it.

  • As discussed, homework grades are not counted significantly toward your course grade.

  • Exceptions will only be made for serious personal situations.

Short form: I encourage you to study groups and work with each other, but all prepared work you turn in must be your own. Do NOT copy code, solutions, or other text from your study partners or anyone else.

Long form: In professional as well as academic life outside the classroom, people seldom work completely on their own. They typically work in teams and help each other extensively. I have no objection to you getting help from me or your fellow students. I encourage you to do so. However, prepared work in this course is to be each student’s own.

Students should therefore be familiar with the University’s definitions and policies on academic dishonesty, found in the University course catalog. [above adapted from Prof. Jesse Heines’ copying policy]

The contributions of others to your thinking must be acknowledged in all work you turn in. As UML Prof. Sarah Kuhn says, “Using works of others, or drawing extensively on their ideas, without clearly stating that they are not your work (by using quotation marks, and references to the cited work) is plagiarism, a very serious academic offense.” [Prof. Sarah Kuhn, syllabus for 65.790, from Prof. Marian William’s 91.531 course syllabus.]

Also: With each assignment, you must mention people whom you worked with, who you have helped, or who have helped you.

Honors Program
Students enrolled in the honors program will be expected to do an exemplary job with all coursework. Additionally, a term paper or term project will be required. Please schedule a meeting with Prof. Martin to plan the project by November 1.

Last modified: Wednesday, 14-Sep-2005 12:47:41 EDT by