VMの時代 - イベント駆動と時分割(TSS)の組み合わせ

現在の主流のコンピュータ(OS)は、イベント駆動である。

1. イベント駆動OS

CPUなどの処理リソース全体のうち、管理用をのぞいた残りの部分を浮動票として、

みんな(プロセス)で仲良く使う。

一般道路のようなものだ。

なかには救急車などの緊急車両もあるので、先に通さなければならない。というルールもある。

共有すれば共有するほど効率は高まりやすい。

しかし、一方で、処理が溜りすぎれば、渋滞などを引き起こす。

横転トラックが道路を封鎖したり。みんなが同じリソースを食い合ってしまう。

2. 時分割(TSS)OS

初期のOS(大型汎用機)は、時分割(TSS)であったときく。

(私自身は、TSS自体には数時間しか触ったことがないので、あんまし実感がない。)

また、ロボットなどのリアルタイムOSも、時分割にちかい処理をしているはずだ。

(これもよく知りません。)

横転トラックが道路を封鎖しても、電気や水道が止まらないように、

役割分担をはっきりすることで、全体の最低限のスループットを維持する仕組みである。

(だんだん、メタファーが苦しくなってきました。)

あらかじめ処理を割り振るので、実際は行わない/必要がない時間というのが発生しやすいが、必要な時に必要なリソースが待機しているため、全体としての危機を引き起こさない。

3. イベント駆動OSの安全策としての分散処理

従来、イベント駆動のOSで、安全性を確保するためには、マシンをわけ、負荷を分散してきた。

一台がこけても他のマシンはこけないような配慮を行う。

そのために各マシンの装置の独立性を確保し、配分装置には精度の高いものをつかう。

そのためには、多くのマシンが必要になる。ネットワーク機器や負荷分散装置も高速で精度の高いものが必要だし、ネットワークも冗長化するためケーブルがたくさん必要になる。

しかし、資源枯渇が深刻になってきたため、マシンをホイホイと増やすわけにもいかなくなってきた。マシンの処理能力もフツーには伸びなくなってきた。

4. サーバ統合

そこで、一台のマシンを、時分割(TSS)で分割し、その中をイベント駆動で処理したい。

CPUがマルチコア化するにあたり、各コアを仮想のマシンとしてとらえれば、これまでマシンを複数にわけてきたケースでも、マシン一台ですむ(サーバ統合という)。

仮想マシン間の通信は共有メモリで代替できるので、そのぶんの、物理的なネットワーク機器やケーブルも削減できる。物理障害の影響が減り、待機電源も少なくてすむ。

VM(仮想化)はそういうニーズ(資源枯渇)と技術動向(マルチコア化)にマッチしていると考えられる。

5. イベント駆動と時分割(TSS)の組み合わせ

VMM(仮想化管理機能)自体がイベント駆動のOS上で動いていると、時分割(TSS)が正確にできないので、これまでマシンをわけてきたようには、安全でない。

そのためVMM自体が、時分割(TSS)を行えるOSであるほうがより安全であると考えられる。

ベアメタル型VMM(VMwareでいえばESXサーバ)はこの方向である。

VMM自体が極めて小規模なリアルタイムOSカーネルになっている(らしい)。

イベント駆動と時分割(TSS)を組み合わせる、ひとつの方法、トレンドである。

・・・そして、信じるか信じないかは、あなた次第、である(かもしれない)。

※ちなみにベアメタル型VMM(だけがイベント駆動と時分割(TSS)を組み合わせたわけではない。もともとOSはイベント駆動だが、各ハードウェアは時分割(TSS)だったりするわけだし。CPUクロックは完全に時分割(TSS)であると考えられる。時分割(TSS)は過去のモノ、なんていうのはナンセンス、ということである。