livaの雑記帳

livaの雑記帳

OSとか作ってみたい

Unikernelのすゝめ

 以下の記事を読んだ。

Single address spaces: design flaw or feature?

 

UnikernelというとMirageOSの論文で最初に出てきた概念で、Rump KernelにもUnikernelで動かすモードがあるのだけど、今回はRump Kernelの事は忘れて、本来のUnikernelの話。(このリポジトリにはMirageOSに関する話もあるので、完全にそっち系の人が書いている様子)

 

まとめると、

 

・ユーザー空間とカーネル空間の切り替えコストは大きい

 ・キャッシュ汚染するため

 ・システムコールの仕組みを変えて、切り替えコストを削減するだけで効果的という研究有り

システムコールの切り替えコストが大きい事は、性能上の制約となる

 ・10Gのパケットの処理の度にシステムコールを発行すると、追いつかない

 ・DPDK(ry

・unikernelなら、アプリケーションとカーネルが共通のメモリ空間(同じユーザー空間上のメモリ)に置かれるので、システムコール発行コストが無くなって、早い

 ・言語が提供する型安全、メモリ保護を用いて、カーネル空間が破壊されない事を保証する

 

なるほど、という感じ。

Rump Kernelsだとkernelとアプリケーションって別々のメモリ空間になるのかな?どうなんだろう。要調査