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