livaの雑記帳

seccamp2018(課題)

注:このページは、セキュリティ・キャンプ2018全国大会x86 OS ゼミにおいて私が担当するテーマ(最先端OS談義)の選択課題です。

テーマの概要についてはトップページを御覧ください。

 

課題

以下を良く読み、これらのOSについて思った事や皆さん自身でこれらを更に膨らませたアイディア等を自由に書いてください!

※最後に解答する上でのポイントを記載しました。これも忘れずに読んで下さい。

 

1:メニーコア環境においても柔軟に対応できるマルチカーネルOS

概要

現状のOSの問題点:メニーコアCPU上でOSは十分スケーラブルではない。

解決策:これまでの「CPUあたり1つのカーネル」というモデルを捨て、「コアごとに1つのカーネル、それぞれのカーネルはメモリを共有しない」というモデルに変える。各々のカーネルは通信し合い、協調して動作する。これにより分散システムの知見を活かす事ができ、スケーラブルなOSを作れる。

 

解説

Linuxを含めた既存のOSは、カーネルがCPUコア間でメモリを共有している(マルチスレッドプログラムに近い)。CPUコア間で共有しているデータを書き換える時は、同期機構を用いる必要がある。(スレッドプログラミングにおいても、スレッド間で共有しているデータのアクセスに際してミューテック等を用いた同期が必要となるが、それと同じ)この同期機構はCPUコア数が増えると遅くなっていってしまうという問題がある。

そこで、同期機構を使わないようにするために、カーネルがCPUコア間でメモリを共有せず、各カーネルが通信して協調動作するモデル(マルチプロセスプログラムに近い)を提案したのが本OSである。これによって、分散システムでこれまで検討されてきた様々なアイディアをOSにも適用可能になり、スケーラブルなOSを実現する事ができる他、分散システムと同じ枠組みでメニーコアを扱えるようになる。

 

解答テーマ案:

・このOSの短所や課題はなんだろうか?

・OSがスケーラブルになると何が嬉しいのだろうか?そして、このOSによってどのような世界が実現できるだろうか?

分散OSについて調べ、それと対比させて考えてみよう。分散OSとこのOSはかなり似ている事が分かると思うが、全く同じなのだろうか?違うとしたらどこが違うのだろうか?このOSを自分が作る、という視点に立って考えること。

 

用語解説

メニーコアCPU:コア数の多いプロセッサ

スケーラブル:コア数が多くなれば多くなっただけ性能が向上する、という特性

カーネル:OSの中で中核となる部分。ゆるふわに説明すると、主に特権モード(Ring 0)で動作する部分。

 

参考

公式サイト:The Barrelfish Operating System

論文:https://www.sigops.org/sosp/sosp09/papers/baumann-sosp09.pdf

 

2:クラウド環境に最適化された高効率なOS

概要

現状のOSの問題点:現在のOSはクラウドで動かすには高機能すぎる。

解決策:クラウドに完全に最適化し、不要な物は全て切り捨てる事を追求した結果として、OSとアプリケーションが直接リンクするモデルを提案した。(OSがライブラリのようになり、システムコールは単なる関数呼び出しとなる)これによってオーバーヘッドが大幅に削減される。

 

解説

クラウド環境において、インスタンスとはVMであり、このVMはハイパーバイザによって実現される。現在はVM上でLinux等を動かす事が多いが、これは非常に無駄が多い。

例えば、VMのI/Oデバイスはハイパーバイザによってエミュレートされているので、ゲストOSはハイパーバイザから提供されるI/Oデバイス以外のドライバを持たなくて良い。

パソコン用OSは、どのようなI/OデバイスがPCに接続されるか分からないため、様々なドライバを持つ必要があるが、クラウド環境においてはその心配をする必要は無い。物理的なI/Oデバイスはハイパーバイザによって制御されるため、ドライバはハイパーバイザのみが持っていれば良い。

デバドラに限らず、OSとハイパーバイザの両方が似たような機能を持っている場合は、できるだけOSから機能を削り取り、ハイパーバイザに任せてしまえば良い、というのがこのOSの方針である。OSとハイパーバイザで機能が二重化されていると、ディスクやメモリが無駄になるだけでなく、性能を低下させる原因にもなる。

このOSの開発者達が思い描く未来として、1つのVM上では単一のアプリケーションが動く未来を想定している(コンテナの思想に近い)。究極的には、例えばTCPコネクションごとに1つのVMを立てる、というような世界を目指しており、そのためにはVM自体が超高速で起動し、終了できなければならない。そのような世界において、軽量なOSは大変重要である。

 

解答テーマ案:

・このOSの短所や課題はなんだろうか?

・なぜこのOSではシステムコールが無くなり、関数呼び出しに置換されたのだろうか?

・1つのVMで1つTCPコネクションを捌く、というクラウド環境は実現するだろうか?どのような事がその障壁となり得るだろうか?

・このOSを念頭に考えると、ハイパーバイザの役割とOSの役割を再考する必要性に迫られる。これからのハイパーバイザ、OSはどうなっていくのだろうか?

 

用語解説

ハイパーバイザ:VMを実現するための制御基盤。ハイパーバイザの上でゲストOSが動作する。(例:XenKVMなど。VirtualBoxQEMU等を含める事もある)

 

参考

公式サイト:MirageOS

論文:http://anil.recoil.org/papers/2013-asplos-mirage.pdf

 

解答する上でのポイント

以下を守ると、良いことがあるかもしれません。

  • できるだけ深く考察すること(間違えても減点はしないので、そこは恐れず、いろんな事を考え、書いてみよう)。「これくらい考えれば十分だろう」というポイントは存在しない。
  • それぞれのOSから1つ以上の解答テーマ案(つまり合計2つ以上の回答テーマ案)に解答することが望ましい。(1つが微妙でも、もう一つが良く書かれていれば評価されやすい)但し、沢山のテーマに解答しても評価が上がるとは限らない。どちらかといえば、2つのテーマをそれぞれ深く掘り下げてくれた方が嬉しい。

 

解答テーマ案は簡単なものと難しいもの、いろいろ混ざっていますが、簡単なものを解答するよりも、難しいものを解答した方が評価が上がります。

 

また、もしも解答テーマ案よりももっと良い解答が書けるなら、解答テーマ案を無視しても構いません。但し上記2つのOSに関連したテーマでそれぞれ1つ以上書くこと。

 

上記のポイントを守った上で更にいろいろな事を書いてくれるのは、大歓迎です。(上に上げたOSに関する事以外の事でもOK)好きなだけ書きたい事を書いてみてください。