yysk.icu is one of the many independent Mastodon servers you can use to participate in the fediverse.
YYSK.ICU は、総合いい話インスタンスです。

Server stats:

5
active users

システムの根幹に影響するプロセスをユーザーが操作できない領域(カーネルランド)で実行する→安全!
というのはわかったのだけど、マイクロカーネルというのはそのカーネル空間で動いているものを切り崩してユーザー空間に移していこうって話だとするとどういういいことがあるんだ?

@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 ですね。

@orumin とすると美しさを求めるオタク的には最初からマイクロカーネルとして作った実用レベルのOSが流行ってほしいという気持ちがあるんでしょうか

@aiwas グラフィックが重視されるとデスクトップ OS だと理想的な microkernel はちょっとどうだろうなと思ってる。実際,Windows NT は Microsoft が David Cutler を呼んで作らせたので 90 年代の当時としては研究の最先端を商業に取り込んだかなり意欲的な OS だったわけだけど,結局性能の問題で今の Windows NT の後継はグラフィック部分は kernelland に押し込まれたので。

@aiwas Mach 2.x base だった NeXTSTEP も OPENSTEP on Mach の時には Mach 2.5 の microkernel をベースにしてると思うし,そのあと XNU kernel になった時には microkernel に転身を果たした Mach 3.0 をベースにしてるはずなんだけど,XNU の場合は最初っからハイブリッドカーネルということで,マイクロカーネルの構成を保ちつつ server だった部分全部 kernelland に突っこまれてるはず(従って macOS や iOS もその構成のはず)

@orumin 結局なぜ今の状況になったのかは理解できたけど、それは(パソコン向けOSにとって切っても切れないグラフィックス関連を除けば)積極的にマイクロカーネルが流行らない理由があったというよりは時流というかタイミング的な要素もあったということですかね……

@aiwas 実際,Xen のような hypervisor の設計は microkernel の部分が VMM で,server の部分が各 VM って見做すとわりと microkernel っぽい(ホスト OS と VMM が一体化してて monolithic っぽい設計の hypervisor である kvm と対称的)し,Xen は domU(ゲスト OS)の driver への I/O が dom0(ホスト OS として動作するけど実際は Xen 上の VM のひとつに過ぎない)に forward されて処理されるあたりが実にそれっぽい。

@aiwas あと現代の micro service なんかも microkernel と類似性が見出せるし,90 年代の OS 研究やってた microkernel おじさんがなんでも「これは microkernel」って言うときあって,まあ時流ですね。

令都路にむ aka 本質情報館

@orumin 時流了解!ところでその最上位モードみたいなやつってIntel系プロセッサにはないんですか?

@aiwas Intel の CPU には CPU mode を増やすんじゃなくて命令を増やしてメモリの一部(具体的には 94MB 以内)を暗号化することによって hypervisor からもデータを見えなくするようにする Intel SGX という拡張命令が Skylake から搭載されており,2014 年から数年間は OS 研究でホットでしたが最近みんなやりすぎてちょっと研究では飽きられてる

@aiwas こういうのは,クラウドの隆興のせいでホストしてる hypervisor が信用できない(もしかしたらゲスト VM のメモリをダンプして情報を漏洩されるかも)みたいな背景があって,TEE(Trusted Execute Environment)が流行っているという経緯があります。

@orumin なるほど、そこはアプローチが違うんですね おもしろい

@aiwas Intel SGX は便利だけどメモリのごく一部しか暗号化できない上に,VMM の実装で VM exit/enter(ゲストとホストの OS の切り替え)がすごいコストの高い命令であるのと同じように,enclave(暗号化された領域)の exit/enter もまたすごいコストの高い命令で,ただ使えばいいってもんじゃないし,これを使うように既存コードの改変もかなり必要なので,そこで研究者を悩ませたのでした。