L4マイクロカーネルファミリー
[Wikipedia|▼Menu]

L4マイクロカーネルファミリーは第二世代マイクロカーネルのファミリーで、一般的にはUnix系オペレーティングシステムの実装に使われるが他の様々なシステムにも使われる。前身のL3マイクロカーネルと同じように、ドイツのコンピュータ科学者ヨッヘン・リートケによってそれ以前のマイクロカーネルベースのオペレーティングシステムの性能の低さを解決する答えとしてL4は作られた。リートケは性能を最優先に設計したシステムであれば実用的なマイクロカーネルを作ることができるのではないかと考えた。彼のインテルi386アセンブリ言語でハードコードした最初の実装はコンピュータ産業界の関心を引いた。これを始めとしてL4はプラットフォーム非依存、セキュリティの改善、分離、堅牢性に向けた開発が行われた。

オリジナルのL4カーネルインターフェース(ABI)やその後継がいくつも再実装されている。L4KA::Pistachio(カールスルーエ工科大学)、 L4/MIPS(ニューサウスウェールズ大学)、 Fasco(ドレスデン工科大),WrmOS(WrmLab)などがある。このためL4はリートケの最初の実装だけを指すのではなくファミリーの名前になっている。現在ではオリジナルのL4とその改良版のカーネルインターフェースを持つマイクロカーネルファミリーが該当する。L4は広く開発が行われている。一つのバリエーションであるOKL4はOpen Kernel Labs(英語版)(現 ジェネラル・ダイナミクス・ミッション・システムズ)で開発され数十億台のモバイル機器に使われた[1][2]
設計理念

リートケによるマイクロカーネルの一般的な設計指針は以下のようなものである

ある概念をマイクロカーネル内で実現することが許されるのは、それをカーネルの外に移した場合、すなわち競合する実装が可能となることでシステム必須の機能が妨げられる場合だけである

この考え方に基づいてL4マイクロカーネルはわずかな基本的機構を提供する

アドレス空間(抽象化されたページテーブルとメモリ保護の提供)

スレッドとスケジューリング(抽象化された実行と一時的な保護の提供)

プロセス間通信(分離された領域間の制御された通信)

歴史

Machのような第一世代マイクロカーネルのパフォーマンスの低さから、1990年代半ばに多くの開発者がマイクロカーネルについての考え方全体の再検討を行った。Machで使われる非同期のカーネル内バッファリングプロセス間通信が低い性能の原因の一つであることが分かった。このためMachベースのオペレーティングシステム開発者はファイルシステムやデバイスドライバのような時間的な制約が大きい要素をカーネルの中に戻した[3]XNU参照)。これはいくらかのパフォーマンス改善をもたらすが、真のマイクロカーネルの極小原則(とその利点の大部分)に大きく反する。

Machのボトルネックの詳細な分析によれば、ワーキングセットが大きすぎる事を示している。IPCコードはメモリ空間的な局所性が特に低い。それが非常に多くのカーネル内のキャッシュミスの原因になっている。この分析により、効率のよいマイクロカーネルでは性能最優先のコードの大部分は少なくとも(第一レベル)キャッシュに収まるものでなくてはならず、できればキャッシュのわずかな部分を占める程度であるべき、という原則が導かれた。
L3

ヨッヘン・リートケは、パフォーマンスに充分注意を払い、(プラットフォーム非依存性に反する形で)マシン固有の設計を行い、うまく作られた小さなIPCレイヤーを使う設計ならば実際のパフォーマンスが大幅に向上することを証明した。 Machの複雑なIPCシステムの代わりに、彼のL3マイクロカーネルはオーバーヘッドを最小限にして単純なメッセージを渡すだけにした。 必要なセキュリティポリシーの定義と実装は、ユーザー空間のサーバーの任務とみなされた。 カーネルの役割は、ユーザーレベルのサーバーがポリシーを実施するのに必要なメカニズムを提供することだけとされた。 1988年に開発されたL3は、例えばTUV SUD(ドイツの検査技術協会)[要出典]などで長く使用され安全で堅牢なオペレーティングシステムであることを示した。L4 family tree
L4

L3を使った経験から、リートケはいくつかの他のMachの発想も間違っていると結論づけた。マイクロカーネルの概念をさらに単純化して、高性能化を主眼に設計した最初のL4カーネルを開発した。少しでも性能を出せるように、カーネル全体をアセンブリ言語で記述した結果、IPCはMachの20倍高速になった[4]。このような劇的な性能の向上は、オペレーティングシステムでは稀なことでリートケの業績は新たなL4の実装のきっかけとなり、ドレスデン工科大学やニューサウスウェールズ大学などの大学やリートケが1996年に働き始めるIBMなどのいくつもの研究施設でのL4ベースのシステムの研究が始められた。リートケはIBMのトーマス・J・ワトソン研究所で同僚と共にL4とマイクロカーネルシステム一般の研究と特にSawmill OS[5]の研究を続けた。
L4Ka::Hazelnut

1999年、リートケはカールスルーエ大学のシステムアーキテクチャグループを引き継ぐ形でマイクロカーネルシステムの研究を続けた。高級言語による高性能マイクロカーネルの構築が可能であることを証明するためにグループはIA-32およびARMベースのマシンで動作するカーネルのC++版であるL4Ka::Hazelnutを開発した。この試みは成功し、性能は依然許容範囲とみなされた。そのためアセンブリ言語だけの版のカーネルは実質的に開発中止になった。
L4/Fiasco

L4Kaの開発と並行して1998年にTUドレスデン(ドレスデン工科大)のオペレーティングシステムグループがL4/Fiascoと呼ばれるL4カーネルインターフェースの独自のC++実装の開発を始めた。L4Ka::Hazelnutはカーネル内では全く並行動作を認めず、その後継のL4Ka::Pistachioでは特定の割り込みポイントでのみ割り込みが許可されるのに対してL4/Fiascoは割り込みのレイテンシを小さくするために(極めて小さいアトミック処理の部分を除いて)完全プリエンプティブであった。これはTUドレスデンで開発されていたハードリアルタイム処理が可能なオペレーティングシステムDROPSの基礎として使うための必要性からであった。しかし、完全プリエンプティブな設計の複雑さのためFiascoの後継版のカーネルでは限られた割込みポイントを除いてカーネル内では割込みを禁止する従来のL4の方針に戻された。
プラットフォームの非依存化


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:48 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef