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.

158<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

Figure 3.30: File system server. <strong>The</strong> request from <strong>the</strong> microkernel client is<br />

transported by <strong>the</strong> host kernel to <strong>the</strong> rump kernel running providing <strong>the</strong> kernel file<br />

system driver. Although only system calls are illustrated, page faults created by <strong>the</strong><br />

client may be h<strong>and</strong>led by <strong>the</strong> server as well.<br />

3.11 Microkernel Servers: Case Study with File Servers<br />

In this section we investigate using rump kernels as microkernel style servers for file<br />

systems. Our key motivation is to prevent a malfunctioning file system driver from<br />

damaging <strong>the</strong> host kernel by isolating it in a userspace server.<br />

<strong>The</strong> NetBSD framework for implementing file servers in userspace is called puffs [53].<br />

We use puffs to attach <strong>the</strong> rump kernel file server to <strong>the</strong> host’s file system namespace.<br />

Conceptually, after <strong>the</strong> file system has been mounted, <strong>the</strong> service works as follows: a<br />

file system request is transported from <strong>the</strong> host kernel to <strong>the</strong> userspace server using<br />

puffs. <strong>The</strong> server makes a local call into <strong>the</strong> rump kernel to service <strong>the</strong> request.<br />

When servicing <strong>the</strong> request is complete, <strong>the</strong> response is returned to <strong>the</strong> host kernel<br />

using puffs. <strong>The</strong> architecture <strong>of</strong> this solution is presented in Figure 3.30. It is worth<br />

noting that a userlevel application is not <strong>the</strong> only possible consumer. Any VFS user,<br />

such as an NFS server running in <strong>the</strong> host kernel, is a valid consumer in this model.

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

Saved successfully!

Ooh no, something went wrong!