28.08.2015 Views

The Design and Implementation of the Anykernel and Rump Kernels

1F3KDce

1F3KDce

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

45<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

Figure 2.1: <strong>Rump</strong> kernel hierarchy. <strong>The</strong> desired drivers dictate <strong>the</strong> required<br />

components. <strong>The</strong> factions are orthogonal <strong>and</strong> depend only on <strong>the</strong> rump kernel base.<br />

<strong>The</strong> rump kernel base depends purely on <strong>the</strong> hypercall layer.<br />

We use <strong>the</strong> term component to describe a functional unit for a rump kernel. For<br />

example, a file system driver is a component. A rump kernel is constructed by linking<br />

toge<strong>the</strong>r <strong>the</strong> desired set <strong>of</strong> components, ei<strong>the</strong>r at compile-time or at run-time. A<br />

loose similarity exists between kernel modules <strong>and</strong> <strong>the</strong> rump kernel approach: code<br />

is compiled once per target architecture, <strong>and</strong> a linker is used to determine runtime<br />

features. For a given driver to function properly, <strong>the</strong> rump kernel must be linked with<br />

<strong>the</strong> right set <strong>of</strong> dependencies. For example, <strong>the</strong> NFS component requires both <strong>the</strong><br />

file system <strong>and</strong> networking factions, but in contrast <strong>the</strong> tmpfs component requires<br />

only <strong>the</strong> file system faction.<br />

User interfaces are used by applications to request services from rump kernels. Any<br />

dependencies induced by user interfaces are optional, as we will illustrate next. Consider<br />

Unix-style device driver access. Access is most commonly done through file<br />

system nodes in /dev, with <strong>the</strong> relevant user interfaces being open <strong>and</strong> read/write

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!