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.

252<br />

For testing <strong>and</strong> development we added close to 1,000 test cases using rump kernels<br />

as <strong>the</strong> test backends. <strong>The</strong> test suite is run against daily NetBSD changes <strong>and</strong> has<br />

been able to find real regressions, including kernel panics which would have caused<br />

<strong>the</strong> test suite to fail if testing was done against <strong>the</strong> test host kernel. Testing against<br />

rump kernels means that a kernel panic is inconsequential to <strong>the</strong> test run <strong>and</strong> allows<br />

<strong>the</strong> test run to complete in constant time irrespective <strong>of</strong> how many tests cause a<br />

kernel crash. Additionally, when problems are discovered, <strong>the</strong> test program that<br />

was used to discover <strong>the</strong> problem can directly be used to debug <strong>the</strong> relevant kernel<br />

code without <strong>the</strong> need to set up a separate kernel debugging environment.<br />

6.1 Future Directions <strong>and</strong> Challenges<br />

<strong>The</strong> hosting <strong>of</strong> NetBSD-based rump kernels on o<strong>the</strong>r POSIX-style operating systems<br />

such as Linux was analyzed. Running a limited set <strong>of</strong> applications was possible, but<br />

interfacing between <strong>the</strong> host <strong>and</strong> rump namespaces is not yet supported on a general<br />

level. For example, <strong>the</strong> file status structure is called struct stat in <strong>the</strong> client <strong>and</strong><br />

rump kernel namespaces, but <strong>the</strong> binary layouts may not match, since <strong>the</strong> client<br />

uses <strong>the</strong> host representation <strong>and</strong> <strong>the</strong> rump kernel uses <strong>the</strong> NetBSD representation.<br />

If a reference to a mismatching data structure is passed from <strong>the</strong> client to <strong>the</strong> rump<br />

kernel, <strong>the</strong> rump kernel will access incorrect fields. Data passed over <strong>the</strong> namespace<br />

boundary need to be translated. NetBSD readily contains system call parameter<br />

translation code for a number <strong>of</strong> operating systems such as Linux <strong>and</strong> FreeBSD<br />

under sys/compat. We wish to investigate using this already existing translation<br />

code where possible to enlarge <strong>the</strong> set <strong>of</strong> supported client ABIs.<br />

Ano<strong>the</strong>r approach to widening host platform support is to port rump kernels to a<br />

completely new type <strong>of</strong> non-POSIX host. Fundamentally, <strong>the</strong> host must provide<br />

<strong>the</strong> rump kernel a single memory address space <strong>and</strong> thread scheduling. <strong>The</strong>refore,<br />

existing microkernel interfaces such as L4 <strong>and</strong> Minix make interesting cases. Again,

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

Saved successfully!

Ooh no, something went wrong!