カーネルの設計
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/05/04 23:13 UTC 版)
「DragonFly BSD」の記事における「カーネルの設計」の解説
DragonFly BSDには、最近の殆どのカーネルのように、ハイブリッドカーネルが採用されている。つまり、これは、モノリシックカーネルとマイクロカーネルの両方の性質を併せ持ち、必要に応じて両方のメリットを使うということである。例えば、マイクロカーネルのメッセージシステムにあるようなメモリ保護の恩恵を受けるのと同時に、モノリシックカーネルにあるような処理速度は残っている。メッセージサブシステムは、Machのようなマイクロカーネルのデザインと似て、余り複雑ではないものになっている。さらに、これは同期通信と非同期通信の両方に対応しており、状況に応じて最良の性能を出せるようになっている。 デバイスI/Oや仮想ファイルシステム (VFS) はメッセージサブシステムを使うように変更されている。これらの新しい機構に拠り、カーネルの様々な部分をユーザーランドで実行可能になる。ユーザーランドでカーネルの一部を実行すると、その部分はカーネルという大きなプログラムの一部ではなく、小さく独立した1つのプログラムとなる。こうすることで、ユーザーランドで動いているドライバーがクラッシュしても、カーネル全体はクラッシュしなくなるという利点も有る。 システムコールはユーザーランド版とカーネルランド版に分けられ、メッセージとしてカプセル化されるようになった。これに拠って、標準システムコールの実体をユーザーランドにある互換レイヤーに移すときのプログラム量と複雑さを軽減可能になると同時に、新旧のDragonFly BSDの互換性を保ち易くなった。さらに、Linuxやその他のUNIX系OSのアプリケーションを動かすための機構もユーザーランドに移せる。このようなFreeBSD jail上に作られたネイティブなユーザーランド互換レイヤーを使うことで、UMLと同等のことができる。しかし、UMLと異なり、仮想化には実際のハードウェアと通信するための特別なドライバーを必要としない。なお、UMLはLinuxをポーティングしたもので、ホストOSのカーネルを別のハードウェアプラットフォームと見なす実装になっている。
※この「カーネルの設計」の解説は、「DragonFly BSD」の解説の一部です。
「カーネルの設計」を含む「DragonFly BSD」の記事については、「DragonFly BSD」の概要を参照ください。
- カーネルの設計のページへのリンク