システムの根幹に影響するプロセスをユーザーが操作できない領域(カーネルランド)で実行する→安全!
というのはわかったのだけど、マイクロカーネルというのはそのカーネル空間で動いているものを切り崩してユーザー空間に移していこうって話だとするとどういういいことがあるんだ?
@aiwas まず TCB(trusted computing base)が小さくなる。kernel land のコードが巨大になればなるほど,確率的に潜在的バグも増えるので,システム全体を巻き込んで死にやすくなる。
@aiwas あと,色々が userland にあるように綺麗に設計できると,architecture 依存のコードが減るので,移植が簡単になる(実際 Windows NT とか昔は Alpha や MIPS や PowerPC やらに対応してたし)
@orumin なるほどですね、ユーザー空間で動かすとオーバーヘッドが増えるけど昨今のマシン性能なら問題にはならないという感じですか
@aiwas 具体的には userland で動いていることよりも,userland にサーヴァーという形で切り出したプロセスに対して,アプリケーションが IPC(Inter-Process Communication;プロセス間通信)しないといけないので,たとえば FS driver のサーヴァーがあると複数のアプリのファイル I/O がぜんぶ FS server への IPC で詰まっちゃったりする可能性があって,それが micro kernel の性能上の懸念だったんですね
@aiwas で,指摘の通り,現代のマシンだと問題なくなってきたというのはそうだけど,なんでマイクロカーネルが流行らなかったかというとそのマシンの性能向上よりもモノリシックカーネルで従来の問題を解決するようなゴリゴリマンパワー実装のほうが速かったりしたことです
@aiwas あと,マイクロカーネルは IPC の点で不利という従来の指摘は,初期のマイクロカーネルである Mach(元々はモノリシックだった)などではそうですが,実は元々マイクロカーネルとして適切に設計すれば IPC はかなり小さいというのは前世紀には既に判明しています(L4 microkernel family での実証がある[J. Liedtke, et al., HotOS VI])
@aiwas ちなみに L4 は 1993 年のワークショップ[IWOOOS '93] で L3 の発展として発表され,後に L4 と命名され OS のトップカンファレンス[SOSP '95]で論文にされた OS ですが,2009 年の SOSP ではこれに形式証明を付けて世界初の全体が形式証明された OS である seL4 として発表されており,大変興味深い OS ですね。
@aiwas ちなみに L4 は今現在の Apple の携帯端末のセキュアチップで動いとる
@orumin ???????????
@aiwas “The Secure Enclave runs a Secure Enclave OS based on an Applecustomized version of the L4 microkernel. ”
https://www.apple.com/business/site/docs/iOS_Security_Guide.pdf
@aiwas Arm プロセッサは TrustZone という仕組みがあって,hypervisor よりさらに上位の CPU mode があって,そこで hypervisor(virtual machine monitor)より上位の monitor である secure monitor が動いて,たとえば指紋認証の指紋情報みたいな部分はセキュアチップ(TPM とか)に対して secure monitor へ syscall みたいなのを発行することで記録したり読み出したりするようになってて,鍵情報なんかを盗まれないようにしている,という背景があります。
@aiwas Nintendo Switch は NVIDIA の大ポカで TrustZone の secure monitor にあたる部分にチップかなんかのバグあって死んだ
@aiwas で,この secure monitor 部分って vendor が実装して提供するし open 実装も勿論存在するんですが,たぶん Apple はそこで L4 (のカスタム)を使ったってことっすね。まあ L4 は NSA の認証を貰ったりしててセキュリティ分野と親和性が高い。