LXDs: Towards Isolation of Kernel Subsystems


V. Narayanan, A. Balasubramanian, and C. Jacobsen, “LXDs: Towards Isolation of Kernel Subsystems,” p. 17.

개요

커널 드라이버에 최소한의 수정만을 가해서 Light weight protection domain에서 실행시켰다.

  1. Light weight protection doamin을 만들어서 커널 코드를 Isolate 하였다.
  2. Protection domain에 정보를 줄때 Batching과 Pipeline을 통해서 cross domain cost를 줄였다.
  3. Lightweight asynchronous call이 transparent할 수 있도록 하였다.
  4. Decomposition patttern을 도입하여서, 커널 코드를 조금만 수정하여도 cross domain과 kernel code를 연결 할 수 있도록 하였다.
  5. IDL을 통해서 위의 Glue code가 자동으로 생성 될 수 있도록 하였다.
  6. CPU의 cache coherence protocol을 사용하여 isolation communication cost을 줄였다.

Design

Nook은 크게 Wrapper (Generated by Decomposited IDL), LXD Microkernel (Isolated runtime), 그리고 Asyncrhonous event channel (Implemented by cache coherence protocol)로 구성된다. 디바이스 드라이버는 커널 모듈처럼 로딩되며, LXD Microkernel에서 동작하게 되고 미리 IDL로 인해서 Generated 된 Asynchornize function으로 Linux kernel과 통신하며 정보를 주고 받는다.