図7●日立製作所が開発したストリーミング配信専用OS「Hi-Tactix」のCPUスケジュール機構の動作例
配信する動画像のデータが途切れないように,あらかじめ配信アプリケーションが必要とする処理間隔を予約する。
図8●米マサチューセッツ工科大学(MIT)が開発した「Exokernel」のアーキテクチャ
ハードウェアをアプリケーション間で共有する仕組みを用意する。残りの機能はライブラリとして実装する。
図9●電気通信大学院情報システム学研究科の前川研究室で開発中のOS「彩」の仮想メモリー機構
アプリケーションごとに仮想メモリーのページイン/ページアウトのポリシーの切り替え機構を実装している。

アプリケーションの特性を加味する

 アプリケーションに合わせてアーキテクチャを変えるという考え方を進めると,専用OSへと行き着く。ある特定機能に特化した機器の組み込み用では非常に有効な方法である。

 例えば,日立製作所のストリーム配信専用OS「Hi-Tactix」では,ストリーム配信の特性を考慮したスケジューラを備えている(図7[拡大表示])。ストリーム配信では配信する動画/音声データが途切れないように,一定間隔で一定量のデータを送出する。そこでHi-Tactixのスケジューラは,配信アプリケーションの実行間隔に従ってCPUの実行時間をあらかじめ予約してしまう。配信以外の処理は残ったCPU空き時間で処理する。このように,アプリケーションの動作が事前に予測できるのが専用OSの強みだ。

ハードウェアをアプリに開放する極小OS

 専用OSは逆に,「動作を想定したアプリケーション以外の実行効率が悪い」という弱みもある。そこで汎用OSと専用OSの利点を合わせ持つOSとして,(1)アプリケーションが主体となり,開発者がアプリケーションの特性に合わせてOSの機能を書き換えられるようにする,(2)OSが主体となり,アプリケーションの動作に応じてOSの機能を動的に再構成する,という新しいアーキテクチャが研究されている。

 (1)のアプリケーションが機能を書き換えられるOSとしては,米マサチューセッツ工科大学(MIT)が開発した「Exokernel」がある(図8[拡大表示])。Exokernelは,ハードウェアをアプリケーション間で共有するための仕組みを用意するだけの極小カーネルだ*4。残りの機能はユーザーモードで動作するライブラリとして用意する。一般に「ライブラリOS」と呼ばれるアーキテクチャだ。

 Exokernelは,アプリケーションが直接ハードウェアを制御できる。ただしアプリケーションがハードディスクやメモリーのデータを勝手に書き換えられる訳ではない。Exokernelが間に入り,アプリケーションによるハードウェア利用の排他制御に責任を負う。これによりアプリケーション開発者はやっかいなハードウェアの排他制御を気にすることなく,アプリケーションの特性に応じたキャッシュ機構やディスク・アクセスのアルゴリズムを備えるシステム・サービスを追加できる。この動作モデルは,VMやVMware ESX Serverのような,ホストOSを持たない仮想マシン・アーキテクチャにかなり似た考えだ。

 (2)は,アプリケーション開発者の自由度を上げるのではなく,OSがアプリケーションに合わせて動的に振る舞いを変えられるようにするアプローチである。例えば,電気通信大学院情報システム学研究科の前川研究室では,アプリケーションの特性に合わせてカーネルを動的に再構成するOS「彩」を開発している。アプリケーションやOSの動作中であっても,カーネルの機能を書き換える基盤を整備するのが研究の目的だ。現在のところ,カーネルの書き換え機能や仮想メモリーのページイン/ページアウトのポリシーの切り替え機構などの機能を実装している。例えば仮想メモリーの動作モデルは,ある領域を局所的にアクセスするアプリケーション(表計算ソフトやワープロなど),ある領域を線形(連続的)にアクセスするアプリケーション(動画のストリーミング再生ソフトなど)がメモリーを利用する特性に応じて切り替わる(図9[拡大表示])。アプリケーションがアクセスする可能性の高いメモリー空間をハードディスクにスワップしないことで,実行効率を上げる試みだ。

(高橋 秀和)