28.08.2015 Views

The Design and Implementation of the Anykernel and Rump Kernels

1F3KDce

1F3KDce

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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

168<br />

Request Arguments Response Description<br />

h<strong>and</strong>shake type (guest, success/fail<br />

au<strong>the</strong>nticated or<br />

exec), name <strong>of</strong><br />

client program<br />

syscall syscall number, return value, errno<br />

syscall args<br />

prefork none au<strong>the</strong>ntication<br />

cookie<br />

Establish or update a process context<br />

in <strong>the</strong> rump kernel.<br />

Execute a system call.<br />

Establish a fork au<strong>the</strong>ntication<br />

cookie.<br />

Table 3.5:<br />

Requests from <strong>the</strong> client to <strong>the</strong> kernel.<br />

We created a communication protocol between <strong>the</strong> client <strong>and</strong> rump kernel which<br />

supports interactions <strong>of</strong> <strong>the</strong> above type. <strong>The</strong> request types from <strong>the</strong> client to <strong>the</strong><br />

kernel are presented <strong>and</strong> explained in Table 3.5 <strong>and</strong> <strong>the</strong> requests from <strong>the</strong> kernel to<br />

<strong>the</strong> client are presented <strong>and</strong> explained in Table 3.6.<br />

Now that we know <strong>the</strong> communication protocol, we will compare <strong>the</strong> operations<br />

executed in <strong>the</strong> regular case <strong>and</strong> in <strong>the</strong> rump remote client case side-by-side. <strong>The</strong><br />

first part <strong>of</strong> <strong>the</strong> comparison is in Table 3.7 <strong>and</strong> <strong>the</strong> second part is in Table 3.8.<br />

3.12.5 Of Processes <strong>and</strong> Inheritance<br />

<strong>The</strong> process context for a remote client is controlled by <strong>the</strong> rump kernel server <strong>and</strong><br />

<strong>the</strong> rump lwproc interfaces available for local clients (manual page rump lwproc.3<br />

at A–23) cannot be used by remote clients. Whenever a client connects to a rump<br />

kernel <strong>and</strong> performs a h<strong>and</strong>shake, a new process context is created in <strong>the</strong> rump<br />

kernel. All requests executed through <strong>the</strong> same connection are executed on <strong>the</strong><br />

same rump kernel process context.

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

Saved successfully!

Ooh no, something went wrong!