カーネルアーキテクチャ

モノリシックカーネルとモジュール

モノリシックカーネル

Linuxはモノリシックカーネルを採用しています。 すべてのカーネル機能(プロセス管理、メモリ管理、デバイスドライバ等)が 単一のアドレス空間で動作します。マイクロカーネルと比較して高速ですが、 一部の不具合がシステム全体に影響を与える可能性があります。

カーネルアーキテクチャの種類

モノリシック

  • • 全機能が同一アドレス空間
  • • 高速(コンテキストスイッチ少)
  • • 例: Linux, FreeBSD

マイクロカーネル

  • • 最小限の機能のみカーネル
  • • サービスはユーザー空間
  • • 例: Minix, QNX

カーネルモジュール

Linuxはローダブルカーネルモジュール(LKM)をサポート。 再起動なしでデバイスドライバやファイルシステムを動的に追加/削除できます。

1# ロード済みモジュール一覧
2lsmod
3
4# モジュール情報
5modinfo ext4
6
7# モジュールロード
8sudo modprobe <module_name>
9
10# モジュールアンロード
11sudo modprobe -r <module_name>
12
13# モジュール依存関係
14depmod -a
15
16# モジュールファイルの場所
17ls /lib/modules/$(uname -r)/

主要コンポーネント

スケジューラ

CFS(Completely Fair Scheduler)がデフォルト。プロセスにCPU時間を公平に配分。

メモリマネージャ

仮想メモリ、ページング、スラブアロケータ。OOM Killerでメモリ枯渇時に対処。

VFS(Virtual File System)

ファイルシステムの抽象化層。ext4, xfs, NFSなど統一インターフェースで操作。

ネットワークスタック

TCP/IP実装、netfilter(iptables/nftables)、ソケットAPI。

/proc と /sys ファイルシステム

/proc

  • • プロセス情報(/proc/[pid]/)
  • • カーネル情報(/proc/meminfo等)
  • • sysctlパラメータ(/proc/sys/)

/sys

  • • デバイス情報
  • • カーネルオブジェクト
  • • 構造化されたインターフェース
1# CPU情報
2cat /proc/cpuinfo
3
4# メモリ情報
5cat /proc/meminfo
6
7# カーネルパラメータ
8sysctl -a
9cat /proc/sys/net/ipv4/ip_forward
10
11# ブロックデバイス
12ls /sys/block/

SRE/インフラ観点

カーネルパニック対応

  • /var/log/kern.log でカーネルログ確認
  • • kdumpでクラッシュダンプ取得
  • sysctl kernel.panic で自動再起動設定