---
title: "マイクロカーネルとは？モノリシックカーネルとの違い【基本情報技術者試験】"
description: "マイクロカーネルを、OSの中核機能を最小限にし、ファイルシステムやデバイスドライバなどをサーバプロセスとして動かす方式として整理し、モノリシックカーネルとの違いをFE科目A向けに解説します。"
last_modified_at: "2026-07-23"
canonical_url: "https://stemtazoo.github.io/fe/microkernel/"
section: "fe"
---

## まず結論

**マイクロカーネル**とは、OSの中核であるカーネルに置く機能を最小限にし、ファイルシステムやデバイスドライバなどを、カーネルの外側で動くサーバプロセスとして実現する設計方式です。

基本情報技術者試験では、次の表現が出たらマイクロカーネルを選びます。

```text
カーネルの機能を最小限にする
＋
他のOS機能をサーバプロセスとして動かす
```

反対に、多くのOS機能をカーネル内部にまとめる方式は、モノリシックカーネルです。

## 直感的な説明

マイクロカーネルは、会社の本部を小さくして、専門業務を各部門に分けるイメージです。

```text
本部
→ 最低限の調整だけ行う

専門部門
→ ファイル管理や機器制御を担当する
```

OSでも同じように、カーネルは最小限の管理だけを担当し、ファイルシステムやデバイスドライバなどは別のプロセスに任せます。

ここでいう「サーバプロセス」は、Webサーバだけを指す言葉ではありません。

ほかのプロセスにOS機能を提供する役割を持つプロセスです。

```text
ファイルシステム用のサーバ
デバイス管理用のサーバ
```

などが該当します。

## 定義・仕組み

### カーネルとは

カーネルは、OSの中核部分です。

主に、次のような基本機能を担当します。

- プロセス管理
- メモリ管理
- 割込み処理
- プロセス間通信

マイクロカーネルでは、この中核部分をできるだけ小さく保ちます。

一方、次のような機能はカーネルの外へ分離します。

- ファイルシステム
- デバイスドライバ
- ネットワーク機能

分離された機能は、ユーザーモードで動くサーバプロセスとして提供されます。

大まかな流れは次のとおりです。

```text
アプリケーション
↓ 要求
サーバプロセス
↓ 通信
マイクロカーネル
↓
ハードウェア
```

アプリケーションとサーバプロセス、サーバプロセスとカーネルの間では、プロセス間通信が使われます。

### モノリシックカーネルとの違い

モノリシックカーネルは、多くのOS機能をカーネル内部にまとめる設計です。

| 観点 | マイクロカーネル | モノリシックカーネル |
|---|---|---|
| カーネル内の機能 | 必要最小限 | 多くの機能を含む |
| ファイルシステムなど | サーバプロセスとして分離 | カーネル内で動作 |
| 障害の影響 | 分離しやすい | カーネル全体へ影響しやすい |
| 機能間通信 | 増えやすい | カーネル内で直接呼び出しやすい |
| 性能 | 通信のオーバーヘッドに注意 | 高速になりやすい |

公式の出題範囲やシラバスは、[IPA：基本情報技術者試験](https://www.ipa.go.jp/shiken/kubun/fe.html)から確認できます。

## 科目Aでどう出る？

科目Aでは、OSの構造を説明した選択肢から、該当する用語を選ぶ問題が出ます。

### 選択肢を切る判断ワード

| 問題文の表現 | 選ぶ用語 |
|---|---|
| カーネル機能を最小限にする | マイクロカーネル |
| ファイルシステムをサーバプロセスで実現 | マイクロカーネル |
| 多くのOS機能をカーネル内に持つ | モノリシックカーネル |
| 管理者だけが利用する保守モード | シングルユーザーモード |
| 1プロセス内で複数の処理単位を動かす | マルチスレッド |

試験中は、まず「OSの構造の話か」を確認します。

```text
利用者数の話
→ シングルユーザーモード

処理単位の話
→ マルチスレッド

カーネル内外への機能配置の話
→ マイクロカーネル／モノリシックカーネル
```

### 試験中の判断手順

```text
1. カーネルに残す機能は多いか少ないか
2. ファイルシステムやドライバはどこで動くか
3. サーバプロセスという表現があるか
```

「最小限」「サーバプロセス」「カーネル外へ分離」がそろえば、マイクロカーネルです。

## どんな場面で使う？

マイクロカーネルは、機能ごとの独立性や保守性を高めたい場面で使われます。

あるサーバプロセスで障害が起きても、ほかの機能やカーネル本体への影響を抑えやすいことが利点です。

また、機能を個別に交換・修正しやすいため、拡張性や保守性も高めやすくなります。

一方で、機能間の通信が増えるため、性能面では不利になることがあります。

```text
分離する
→ 信頼性・保守性を高めやすい

通信が増える
→ オーバーヘッドが増えやすい
```

試験では、どちらが優れているかではなく、構造と特徴の違いを判断します。

## よくある誤解・混同

### マイクロカーネルはOS全体が小さい

誤りです。

「マイクロ」はOS全体の容量ではなく、**カーネルに残す機能が少ない**ことを表します。

### サーバプロセスはネットワークサーバだけ

誤りです。

ここでいうサーバプロセスは、ほかのプロセスへOS機能を提供するプロセスです。

ファイル管理やデバイス管理もサーバプロセスとして実現できます。

### モノリシックカーネルは悪い設計

一概にはいえません。

モノリシックカーネルは、機能間の呼出しをカーネル内で行えるため、性能面で有利になる場合があります。

### マイクロカーネルとマルチスレッドは同じ

異なります。

```text
マイクロカーネル
→ OSの構造

マルチスレッド
→ 1プロセス内の処理単位
```

### シングルユーザーモードは小さなカーネル

異なります。

シングルユーザーモードは、管理者だけが利用する保守用の動作モードです。

カーネル構造の分類ではありません。

## まとめ（試験直前用）

- マイクロカーネルは、カーネルの機能を必要最小限にする
- ファイルシステムやドライバなどは、サーバプロセスとして分離する
- モノリシックカーネルは、多くのOS機能をカーネル内に持つ
- マイクロカーネルは、信頼性・保守性を高めやすい
- プロセス間通信が増えるため、性能のオーバーヘッドに注意する
- 「最小限・サーバプロセス・カーネル外へ分離」が判断ワード
- シングルユーザーモードは利用形態、マルチスレッドは処理単位の話
