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.