Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

This article is a Private article. Only a writer and users who know the URL can access it.
Please change open range to public in publish setting if you want to share this article with other users.

Linux概要 - オペレーティングシステムの基本概念(3)

Last updated at Posted at 2025-02-24

オペレーティングシステムの基本的概念 3回目

カーネルアーキテクチャ

ほとんどの UNIX カーネルは モノリシックカーネル です。モノリシックカーネルでは、カーネル内の各レイヤが統合され、カレントプロセスの代わりに カーネルモード で動作します。

これに対し、マイクロカーネル 方式のオペレーティングシステムでは、カーネルが提供する機能は最小限に抑えられます。一般的に、マイクロカーネルには以下のような機能のみが実装されます。

  • 同期プリミティブ(排他制御やロック機構)
  • シンプルなスケジューラ(プロセスのスケジューリングを担当)
  • プロセス間通信(IPC)(異なるプロセス間のデータ交換を可能にする)

その他の機能(例:メモリアロケータ、デバイスドライバ、システムコールハンドラなど)は、ユーザ空間で動作するシステムプロセス によって処理されます。

モノリシックカーネル vs. マイクロカーネル

学術的な研究ではマイクロカーネルが注目されていますが、実用上はモノリシックカーネルの方が高速である場合が多いです。これは、異なるレイヤ間の通信にかかるオーバーヘッド(メッセージパッシングのコスト)があるためです。

それでも、マイクロカーネルには以下のような利点があります。

  • モジュール化が強制される → システムが分離され、各コンポーネントの独立性が向上
  • 移植性が高い → ハードウェア依存のコードがカプセル化されているため、別のアーキテクチャへの移植が容易
  • メモリの効率的な使用 → 使われていないシステムプロセスをスワップアウトできる

しかし、性能を維持しつつマイクロカーネルの利点を活かすために、モジュール機能が導入されました。

モジュールとは

モジュールとは、 実行中にカーネルへ動的に組み込む(または削除する)ことができるオブジェクトファイル です。主に、以下のようなカーネルの上位レイヤの機能を提供します。

  • ファイルシステム
  • デバイスドライバ
  • ネットワークプロトコル
  • その他のシステムサービス

モジュールは、マイクロカーネルの「ユーザ空間で動作する外部プロセス」とは異なり、カーネル空間で実行されます。つまり、静的にリンクされたカーネル関数と同様に、カレントプロセスの代わりにカーネルモードで動作します。

モジュールの利点

1. モジュール化による拡張性

モジュールは 実行時にロード/アンロードが可能 なため、新しい機能を容易に追加できます。また、モジュールは 明確に定義されたインターフェース を介してデータにアクセスするため、カーネルのコードを直接変更せずに機能を拡張できます。

2. プラットフォーム非依存性

モジュールは特定のハードウェアに依存しません(ただし、特定のデバイス規格に依存することはあります)。たとえば、SCSI デバイスドライバのモジュールは、異なるアーキテクチャ(例:HP Alpha、IBM 互換機)でも動作します。

3. メモリ使用の効率化

必要なときに 動的にロード し、不要になれば アンロード できるため、RAM の節約につながります。特に、メモリの制約がある 組み込みシステム では重要な特性です。

4. 性能の維持

一度ロードされたモジュールは、静的に組み込まれたカーネルコードと同等の速度で実行されます。マイクロカーネルとは異なり、メッセージパッシングのオーバーヘッドがない ため、処理の遅延を最小限に抑えられます。

まとめ

  • モノリシックカーネルは高速 だが、モジュール化しにくい
  • マイクロカーネルはモジュール化しやすい が、IPC のオーバーヘッドがある
  • カーネルモジュール を導入することで、モノリシックカーネルの 性能を維持しつつ、拡張性を向上させることが可能

このように、カーネルのアーキテクチャは 性能・拡張性・保守性 のバランスを考慮して設計されています。

次の記事へ

前の記事へ

一覧へ戻る

免責事項
本記事は、筆者の理解に基づいて執筆したものです。正確性には十分配慮していますが、内容の誤りや最新の情報と異なる可能性があります。
本記事の内容を参考にしたことによるいかなる損害についても、筆者は責任を負いかねますのでご了承ください。
正確な情報や書籍に書かれている根拠等はサポートしませんので、ご自身で公式ドキュメントをお調べください。
よって、この内容をAIの学習データに活用することはおすすめしません。

0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?