比較表
比較基準 | マイクロカーネル | モノリシックカーネル |
---|---|---|
基本 | マイクロカーネルユーザサービスとカーネルでは、サービスは別々のアドレス空間に保存されます。 | モノリシックカーネルでは、ユーザーサービスとカーネルサービスの両方が同じアドレス空間に保持されます。 |
サイズ | マイクロカーネルはサイズが小さい。 | モノリシックカーネルはマイクロカーネルよりも大きいです。 |
実行 | 実行が遅い | 高速実行 |
拡張可能 | マイクロカーネルは容易に拡張可能である。 | モノリシックカーネルは拡張が困難です。 |
セキュリティ | サービスがクラッシュした場合、マイクロカーネルの動作に影響します。 | サービスがクラッシュすると、システム全体がモノリシックカーネルでクラッシュします。 |
コード | マイクロカーネルを書くためには、もっと多くのコードが必要です。 | モノリシックカーネルを書くために、より少ないコードが必要です。 |
例 | QNX、Symbian、L4Linux、特異点、K42、Mac OS X、Integrity、PikeOS、HURD、Minix、Coyotos。 | Linux、BSD(FreeBSD、OpenBSD、NetBSD)、Microsoft Windows(95, 98、Me)、Solaris、OS-9、AIX、HP-UX、DOS、OpenVMS、XTS-400など。 |
マイクロカーネルの定義
カーネルであるMicrokernelはすべてのシステムリソースを管理します。 しかし、マイクロカーネルでは、 ユーザーサービスとカーネルサービスは異なるアドレス空間に実装されています。 ユーザーサービスはユーザーアドレス空間に保存され、カーネルサービスはカーネルアドレス空間に保存されます 。 これにより 、カーネルのサイズが縮小され、さらにオペレーティングシステムのサイズが縮小されます。
アプリケーションとシステムのハードウェア間の通信に加えて、マイクロカーネルは最小限のプロセスおよびメモリ管理サービスを提供します。 クライアントプログラム/アプリケーションとユーザアドレス空間で実行されているサービスとの間の通信はメッセージパッシングを通して確立される。 彼らは直接対話することはありません。 これはマイクロカーネルの実行速度を低下させます。
マイクロカーネルでは、ユーザーサービスはカーネルサービスから分離されているため、ユーザーサービスが失敗してもカーネルサービスには影響しないため、オペレーティングシステムには影響がありません 。 これはマイクロカーネルの利点の1つです。 マイクロカーネルは容易に拡張可能である 。 新しいサービスを追加する場合、それらはユーザーアドレス空間に追加されるため、カーネル空間は変更を必要としません。 マイクロカーネルはまた、容易に持ち運びでき、安全で信頼性がある。
モノリシックカーネルの定義
モノリシックカーネルは、アプリケーションとシステムのハードウェア間のシステムリソースを管理します。 しかし、マイクロカーネルとは異なり、ユーザーサービスとカーネルサービスは同じアドレス空間で実装されています。 これにより、カーネルのサイズが大きくなり、オペレーティングシステムのサイズがさらに大きくなります。
モノリシックカーネルは、システムコールを通じて、CPUスケジューリング、メモリ管理、ファイル管理、およびその他のオペレーティングシステム機能を提供します。 ユーザーサービスとカーネルサービスはどちらも同じアドレス空間に常駐するため、オペレーティングシステムの実行速度が速くなります。
モノリシックカーネルの欠点の1つは、1つのサービスがシステム全体をクラッシュさせることに失敗した場合です。 新しいサービスをモノリシックカーネルに追加する場合は、オペレーティングシステム全体を変更する必要があります。
マイクロカーネルとモノリシックカーネルの主な違い
- マイクロカーネルとモノリシックカーネルを区別する基本的な点は、 マイクロカーネルはユーザサービスとカーネルサービスを異なるアドレス空間に実装し、 モノリシックカーネルはユーザサービスとカーネルサービスの両方を同じアドレス空間に実装することです。
- カーネルアドレス空間にはカーネルサービスだけが存在するため、マイクロカーネルのサイズは小さくなります。 ただし、カーネルサービスとユーザーサービスの両方が同じアドレス空間に存在するため、モノリシックカーネルのサイズはマイクロカーネルよりも比較的大きくなります。
- アプリケーションとハードウェア間の通信がシステムコールを使用して確立されるため、モノリシックカーネルの実行は高速になり ます 。 一方、マイクロカーネルの実行は、アプリケーションとシステムのハードウェアとの間の通信がメッセージの受け渡しを通じて確立されるため、 遅くなり ます 。
- マイクロカーネルを拡張するのは簡単です。新しいサービスは、カーネル空間から分離されたユーザーアドレス空間に追加されるため、カーネルを変更する必要はありません。 新しいサービスがモノリシックカーネルに追加されることになっている場合、反対に、モノリシックカーネルの場合があります。そして、カーネル全体を修正する必要があります。
- マイクロカーネルでサービスが失敗した場合でも、オペレーティングシステムは影響を受けないため 、マイクロカーネルはモノリシックカーネルよりも安全です。 一方、モノリシックカーネルでサービスが失敗すると、システム全体が失敗します。
- モノリシックカーネル設計では必要なコードが少なくて済み 、さらにバグも少なくなります。 その一方で、マイクロカーネル設計にはより多くのコードが必要であり、それがさらにバグにつながります。
結論:
マイクロカーネルは、モノリシックカーネルよりも低速ですが、より安全で信頼性があります。 モノリシックカーネルは高速ですが、サービスに何らかの障害が発生するとシステムがクラッシュする可能性があるため、セキュリティが低下します。