Extensible operating systems allow applications to modify kernel
behavior by providing mechanisms for application code to run in the
kernel address space. Extensibility enables a system to efficiently
support a broader class of applications than is currently supported.
This paper discusses the key challenge in making extensible systems
practical: determining which parts of the system need to be extended
and how. The determination of which parts of the system need to be
extended requires self-monitoring, capturing a significant quantity
of data about the performance of the system. Determining how to
extend the system requires self-adaptation. In this paper, we
describe how an extensible operating system (VINO) can use in situ
simulation to explore the efficacy of policy changes. This automatic
exploration is applicable to other extensible operating systems and
can make these systems self-adapting to workload demands.