カーネルアーキテクチャ
モノリシックカーネルとモジュール
モノリシックカーネル
Linuxはモノリシックカーネルを採用しています。 すべてのカーネル機能(プロセス管理、メモリ管理、デバイスドライバ等)が 単一のアドレス空間で動作します。マイクロカーネルと比較して高速ですが、 一部の不具合がシステム全体に影響を与える可能性があります。
カーネルアーキテクチャの種類
モノリシック
- • 全機能が同一アドレス空間
- • 高速(コンテキストスイッチ少)
- • 例: Linux, FreeBSD
マイクロカーネル
- • 最小限の機能のみカーネル
- • サービスはユーザー空間
- • 例: Minix, QNX
カーネルモジュール
Linuxはローダブルカーネルモジュール(LKM)をサポート。 再起動なしでデバイスドライバやファイルシステムを動的に追加/削除できます。
1 # ロード済みモジュール一覧 2 lsmod 3 4 # モジュール情報 5 modinfo ext4 6 7 # モジュールロード 8 sudo modprobe <module_name> 9 10 # モジュールアンロード 11 sudo modprobe -r <module_name> 12 13 # モジュール依存関係 14 depmod -a 15 16 # モジュールファイルの場所 17 ls /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情報 2 cat /proc/cpuinfo 3 4 # メモリ情報 5 cat /proc/meminfo 6 7 # カーネルパラメータ 8 sysctl -a 9 cat /proc/sys/net/ipv4/ip_forward 10 11 # ブロックデバイス 12 ls /sys/block/
SRE/インフラ観点
カーネルパニック対応
- •
/var/log/kern.logでカーネルログ確認 - • kdumpでクラッシュダンプ取得
- •
sysctl kernel.panicで自動再起動設定