阿久津良和 氏の「ハイブリッドカーネル」の説明がおかしいので、正しいハイブリッドカーネルを説明します。

阿久津良和氏によるマイナビニュースの「【レポート】Windows 8キーワード – 「カーネル」とは」のWindows 8のカーネルの説明はだいたい正確に記述されているにもかかわらず

サーバーとクライアントという異なる役割を担うことから「ハイブリッドカーネル」と称されることもある。

という最後の2行が誤った内容のため、正しい「ハイブリッドカーネル」の説明をいたします。

といってもWikipediaのカーネルの項目を見ればそのものズバリの答えが書いてあるのですがより簡潔にカーネルってだいたいこんなものだよっていう感じで書きたいと思います。

カーネルは大きく分けて「モノリシックカーネル」「マイクロカーネル」「ハイブリッドカーネル」の3つあり、それぞれ実装方法が違うものの、役割としてはハードウェアとソフトウェアの橋渡しをし、プロセス管理(実行しているプログラムの管理)、メモリ管理、デバイス管理(周辺機器の制御)、システムコール(アプリケーションがOSの機能を呼び出すこと)などがあります。

モノリシックカーネル

「モノリシックカーネル」はOSの中核となるカーネルとその他のOSの機能を1つのメモリ空間で動かします。
利点としては1つのメモリ空間で動かすため動作が速いです。
しかし欠点として全てが1つのメモリ空間で動いているので何か1つでもデバイスドライバなどが悪さをしてしまうとOSごとダウンしてしまいます。
Windows 95や98はモノリシックカーネルを採用したOSでした。これらのOSは何か操作をしているとブルースクリーンが表示されて、マウスもキーボードも反応しなくなることが頻繁に起こりましたが、これはモノリシックカーネルを採用したOSの宿命です。
モノリシックカーネルを採用したOSとして、上記のWindows 9x系の他、MS-DOSやLinux、UNIXなどがあります。

マイクロカーネル

「モノリシックカーネル」の欠点を解消するために実装されたのが「マイクロカーネル」です。
マイクロカーネルはOSの必要最低限の機能をカーネル空間で実行させ、その他の機能をサーバー(Windowsのサービス、Unix系のDaemonなどと同じようにExcelなどとは違いウィンドウの無いプログラムみたいなものです。)としてユーザー空間として実行させます。
利点としては、あるサーバーが障害を起こしても、システム全体には影響を与えず、サーバーを再起動するだけで復旧することができ、システムを安定化させることができます。
欠点としては常にカーネルとサーバーとでプロセス通信(IPC)を行うため、速度が遅くなってしまいます。
マイクロカーネルを採用したOSとしてMach(NeXTSTEPとその後継のOS XやiOSのカーネルの一部)、Windows NT3.51以前のWindows NTシリーズ、QNXなどがあります。

ハイブリッドカーネル

「ハイブリッドカーネル」は「マイクロカーネル」のパフォーマンスの悪さを補うために考えられた実装方法で、一部のサーバーをカーネル空間で実行させます。
例えば、Windows NT4.0ではディスプレイドライバをカーネル空間で動作させるようにし、パフォーマンスを改善することに成功しました。しかし、その代償としてディスプレイドライバが原因でシステム全体をダウンさせてしまうことが起こります。このようにカーネル空間で動作するサーバーが増えたことにより、システムがマイクロカーネルより不安定になりながら、実用面でのパフォーマンスを重視するためにモノリシックカーネル的な実装を一部採用したカーネルになります。
Windows NT4.0以降のWindows NT系やWindows Phoneをはじめ、OS XやiOSもマイクロカーネルのMachにBSDコンポーネント(プログラムの部品)を追加したハイブリッドカーネルになっています。

如何でしょうか?「ハイブリッドカーネル」は阿久津氏の言う

クライアント向けOSであるWindows 8とサーバーOSであるWindows Server 2012は同一のカーネルを採用(カーネルが同じなのは本当です)。サーバーとクライアントという異なる役割を担うことから「ハイブリッドカーネル」と称されることもある。

とは全く別のこととご理解できればと思います。
関連コンテンツ

シェアする

フォローする