CS 6420  - Midterm - Winter 1999

Prof. Schwan
 

YOUR NAME:
 

Closed book, closed notes.
 
 

1) Short questions:  25 mins. (questions marked with * have more weight)

a. By giving some concrete examples of OS functionality, explain the difference between
monolithic kernels and microkernels.

b. Define ŒEvents¹ in SPIN, describe why they are important, and how/why their
performance is important to that of the SPIN kernel itself.

c. Contrast the notion of Œstrand¹ in SPIN with that of ŒProcessor Context¹ in the Aegis
operating system built on Exokernel.

d.The Microkernel paper by Liedtke describes a number of specific techniques for specific
machines to turn what are thought of as Œexpensive kernel operations¹ into cheap ones.
Examples include address space switches, thread switches and IPC, on Pentium or
PowerPC processors. Describe at least one such technique in some detail.

e. Try your best to argue that the ŒCache Affinity¹ model¹s assumptions are inappropriate,
for the target machines addressed by this paper.

*f. Define the Œscheduler activation¹ abstraction. Next, define the Œcontinuation¹
abstraction. Then comment on what you consider these two abstractions to have in
common.
 
 
 

2) Design question. (25 mins.) You are designing a flexible threads scheduler, assuming
that you already have available to you the scheduler activation abstraction. However, you are
unhappy with the current definition of scheduler activation, as the kernel currently only uses
it to allow your application to schedule one new thread at  a time, thereby frustrating your
efforts to build co-scheduling support.

(a) Describe the type of coscheduling support you wish to implement.

*(b) Generalize the notion of scheduler activation to support co-scheduling, by describing
  (b.1) the data structure used by the kernel,
  (b.2) the actions the kernel takes upon thread completion or blocking, and
  (b.3.) the interactions of the kernel with your user-level co-scheduler.
DO NOT WORRY about describing your user-level co-scheduler in detail, just indicate the
type of co-scheduling you wish to do (see a) above).

(c) Discuss your design, particularly by commenting on how  it may interact, if any, with the
threads synchronization support offered by your kernel.