【かーねるもーど】

カーネルモード とは?

💡 コンピュータの「管理者室」、何でもできるけど責任重大
📌 このページのポイント
ユーザー空間とカーネル空間 ユーザー空間(Ring 3) 制限付き・安全 ブラウザ エディタ ゲーム その他アプリ システムコール(モード切り替え境界) カーネル空間(Ring 0) 全権限・特権モード プロセス管理 スケジューラ メモリ管理 仮想メモリ ファイル システム デバイスドライバ ネットワーク ハードウェア(CPU・メモリ・ディスク・NIC)
カーネルモードのイメージ
ひよこ ひよこ

カーネルモードって何なの?

ペンギン先生 ペンギン先生

CPUには権限レベルがあって、カーネルモードは一番権限が高い「何でもできるモード」だよ。会社でいうと、サーバー室の鍵を持った管理者だけが入れる部屋みたいなものだね。

ひよこ ひよこ

何でもできるってことは、普通のアプリもカーネルモードで動かせばいいんじゃないの?

ペンギン先生 ペンギン先生

それだとバグのあるアプリがハードウェアを壊したり、他のプログラムのメモリを書き換えたりできちゃうんだ。だから普段のアプリはユーザーモードという制限付きのモードで動かして、必要なときだけシステムコールでカーネルモードに切り替える仕組みになっているよ。

ひよこ ひよこ

システムコールで切り替わるんだね。それって遅くないの?

ペンギン先生 ペンギン先生

確かにモード切り替え(コンテキストスイッチ)にはコストがかかるよ。レジスタの退避・復帰やキャッシュの影響があるからね。だから高性能が求められるアプリではシステムコールの回数を減らす工夫をするんだ。

ひよこ ひよこ

カーネルモードでバグがあるとどうなるの?

ペンギン先生 ペンギン先生

カーネルモードのバグはシステム全体に影響するよ。WindowsならブルースクリーンLinuxならカーネルパニックになってシステムが停止するんだ。だからデバイスドライバの品質が重要で、実際にOSクラッシュの大半はドライバのバグが原因と言われているよ。

ひよこ ひよこ

Intelの「Ring」っていうのもカーネルモードと関係あるの?

ペンギン先生 ペンギン先生

いい着眼点だね。IntelCPUにはRing 0〜Ring 3の4段階の特権レベルがあって、カーネルモードはRing 0、ユーザーモードはRing 3に対応しているよ。Ring 1とRing 2はほとんどのOSでは使われていないけど、仮想化技術ではハイパーバイザがRing 0で動いてゲストOSをRing 1で動かすような使い方もあったんだ。今はVT-xのおかげでRoot/Non-rootモードに分離されているけどね。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「カーネルモード」って出てきたら「OSが全権限を持って動く特権モード」と思えればだいたいOK!
📖 おまけ:英語の意味
「Kernel Mode」 = カーネル動作モード
💬 kernel(核)が動くときの mode(モード)で、OSの核心部分が特権的に動作する状態のことだよ
← 用語集にもどる