12.07.2015 Views

1lfCtJ9

1lfCtJ9

1lfCtJ9

SHOW MORE
SHOW LESS

Create successful ePaper yourself

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

342. Microkernel: the host routes client requests from regular processes to driversrunning in isolated servers. Unmodified application binaries can be used.For example, it is possible to run a block device driver as a microkernel styleserver, with the kernel driver outside the privileged domain.3. Remote: the client and rump kernel are running in different containers (processes)with the client deciding which services to request from the rump kerneland which to request from the host kernel. For example, the client can usethe TCP/IP networking services provided by a rump kernel. The kernel andclient can exist either on the same host or on different hosts. In this model,both specifically written applications and unmodified applications can useservices provided by a rump kernel. The API for specifically written applicationsis the same as for local clients.For example, it is possible to use an unmodified Firefox web browser withthe TCP/IP code running in a rump kernel server.Each configuration contributes to solving our motivating problems:1. Security and robustness. When necessary, the use of a rump kernel willallow unmodified kernel drivers to be run as isolated microkernel servers whilepreserving the user experience. At other times the same driver code can berun in the original fashion as part of the monolithic kernel.2. Code reuse. A rump kernel may be used by an application in the samefashion as any other userlevel library. A local client can call any routineinside the rump kernel.3. Development and testing. The lightweight nature and safety propertiesof a rump kernel allow for safe testing of kernel code with iteration times inthe millisecond range. The remote client model enables the creation of testsusing familiar tools.

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

Saved successfully!

Ooh no, something went wrong!