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.

65<br />

<strong>The</strong> straightforward use <strong>of</strong> existing data structures has its limitations: <strong>the</strong> system<br />

<strong>the</strong> client is hosted on must share <strong>the</strong> same ABI with <strong>the</strong> system hosting <strong>the</strong> rump<br />

kernel. Extending support for systems which are not ABI-compatible is beyond <strong>the</strong><br />

scope <strong>of</strong> our work. However, working remote client support shows that it is possible<br />

to build distributed systems out <strong>of</strong> a Unix codebase without <strong>the</strong> need for a new<br />

design <strong>and</strong> codebase such as Plan 9 [93].<br />

2.6 Summary<br />

A rump kernel is a partial virtualization <strong>of</strong> an operating system kernel with <strong>the</strong> virtualization<br />

target being <strong>the</strong> drivers. To be as lightweight as possible, a rump kernel<br />

relies on two features: relegating support functionality to <strong>the</strong> host where possible<br />

<strong>and</strong> an anykernel codebase where different units <strong>of</strong> <strong>the</strong> kernel (e.g. networking <strong>and</strong><br />

file systems) are disjoint enough to be usable in configurations where all parties are<br />

not present.<br />

<strong>Rump</strong> kernels support three types <strong>of</strong> clients: local, microkernel <strong>and</strong> remote. Each<br />

client type has its unique properties <strong>and</strong> varies for example in access rights to a<br />

rump kernel, <strong>the</strong> mechanism for making requests, <strong>and</strong> performance characteristics.<br />

Remote clients are able to access a rump kernel over <strong>the</strong> Internet.<br />

For drivers to function, a rump kernel must possess runtime context information.<br />

This information consists <strong>of</strong> <strong>the</strong> process/thread context <strong>and</strong> a unique rump kernel<br />

CPU that each thread is associated with. A rump kernel does not assume virtual<br />

memory, <strong>and</strong> does not provide support for page faults or memory protection. Virtual<br />

memory protection <strong>and</strong> page faults, where necessary, are always left to be performed<br />

by <strong>the</strong> host <strong>of</strong> <strong>the</strong> rump kernel client.

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

Saved successfully!

Ooh no, something went wrong!