About the Midterm Exam on March 9
The midterm exam covers all material introduced in class and/or represented in the notes through Thursday, March 2 ("Implementing Processes").
There are a few exceptions:
The viewgraphs for "Starvation and Deadlock" include a few
slides on the extended resource graph model and the Banker's
Algorithm introduced in the text. I want you to understand the
issues raised in those slides (e.g., motivation and basic
approach), but I will not ask about the algorithm itself on the
exam.
I have extended my slides for "Traps and Faults" beyond the slides I
used in class. I added a slide on Unix signals, and some comments on the
relationship between faults and something called "user-mode Asynchronous
Procedure Calls" in NT. These deal with handling faults by notifying the
user program of the fault. This will not be on the exam. There is also a
slide called "a few more points about events" that is not critical for the
exam.
During the discussion of faults I also presented some detail on
priority levels for interrupt handling. The slides I used are not among
the viewgraphs on the web, and the material will not be tested.
Here are some hints about how to direct your studying for the exam.
Synchronization is the most important topic covered on the midterm. In
particular, be sure you know how to use semaphores, mutexes, and condition
variables to solve synchronization problems like the ones on the problem
set. You need to practice enough to get comfortable with it. The Birrell
paper is helpful here. Note: the following problem set questions are
guaranteed not to appear on this exam: 9, 10, 19, 29b. Also, one problem mentions thread priorities, but we have not covered that material.
As a rule, I do not test nitpicky details, although I may use them as
examples in class. This is not a depth exam. I am looking to see that you
understand the basic concepts of concurrency including synchronization,
starvation, and deadlock, and that you understand the principles of
protected operating systems: what is the kernel, how does control enter the
kernel, how is the kernel protected, what are the underlying hardware
mechanisms that support it, and the key concepts of mode, space, and
context. It is critical to be solid on the concepts, but the details are
less important and are generally not worth the stress.
In preparing the exam, I will not even look at the Nutt text. This
does not mean that you should ignore the Nutt text. It just means that I
will not test terminology or concepts from Nutt that were not also
discussed in class and in the notes. The role of the Nutt text in this
class is to give you background and perspective to aid your understanding
of the material presented in class.
Be sure that you are familiar with the Nachos labs to this point,
including Lab 4. Yes, I want you to take the time to get started
with Lab 4 and work out your group's approach before the exam. The best
way to study the material presented in the last covered class
on March 2 ("Implementing Processes") is to get started on Lab 4. For
example, I may ask you to solve some subproblem of Lab #4 (or one of the
other labs) as a synchronization problem on the exam. Again, the concepts and
synchronization skills are important, but not the specific
(Nachos) details. At minimum, you should understand the definitions
of the Exec, Join, and Exit system calls, and the relationship between
processes and threads.
Jeff Chase
Last modified: Mon Mar 6 17:20:05 EST 2000