【かーねるもーど】

カーネルモード とは?

最終更新:
💡 OSの中核を、アプリより広い権限で実行するCPUのモード

OSの中核であるカーネルなどを実行するCPUの特権モード。ユーザーモードのアプリより広い権限でOSの資源を管理し、システムコールの処理などを行う。アプリがOSへ依頼するときは、カーネル側の処理がこのモードで実行される。

📌 このページのポイント
アプリは依頼し、OS側が処理する ユーザーモード アプリ アプリ アプリ システムコールで依頼 カーネルモード OSの中核などが処理 OS用の資源を管理する特権 戻る モードの切替 ≠ スレッドの切替 カーネル側の異常は、OS全体に影響し得る
矢印はOSへの依頼と復帰の概念的な流れで、別のアプリにCPUを渡す意味ではありません。アプリ自身のコードを特権モードで動かし続けることとも区別します。ドライバーにはユーザーモードで動くものもあります。
ひよこ ひよこ
カーネルモードって何なの?
ペンギン先生 ペンギン先生
OSの中核などを実行するときの、CPUの特権モードだよ。Windowsでは通常のアプリはユーザーモード、OSの中核はカーネルモードで動く。CPUがどんなコードを実行しているかに応じてモードが切り替わるんだ。
ひよこ ひよこ
普通のアプリも、広い権限で動かせば便利じゃない?
ペンギン先生 ペンギン先生
OS用のメモリを誤って書き換えると、他の処理まで壊すおそれがあるよ。アプリをユーザーモードで制限し、OSの機能はシステムコールを通じて依頼する。アプリ自身のコードに、ずっとカーネルの権限を渡すわけではないんだ。
ひよこ ひよこ
システムコールでは、別のアプリへ切り替わるの?
ペンギン先生 ペンギン先生
OSの処理へ入るモードの切替と、実行するスレッドを替えるコンテキストスイッチは区別するよ。システムコールだから必ず別のスレッドになる、とは言えない。一方、処理中に入力などを待つ必要があれば、スケジューラーが別の実行可能なスレッドを動かすことはあるんだ。
ひよこ ひよこ
カーネルモードでバグがあるとどうなるの?
ペンギン先生 ペンギン先生
OS全体に影響し、停止につながることがあるよ。WindowsのカーネルモードのドライバーはOSとアドレス空間を共有するため、間違った場所へ書き込むとOSや他のドライバーのデータを壊し得る。どんな小さな誤りも必ず停止になる、という意味ではないんだ。
ひよこ ひよこ
デバイスドライバーは全部カーネルモードなの?
ペンギン先生 ペンギン先生
Windowsにはユーザーモードで動くドライバーもあるよ。デバイスの種類や必要な処理によって設計が違う。「ドライバー」という名前だけで実行モードを決めつけず、その構成を確認するんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「カーネルモード」って出てきたら「OSの中核を、広い権限で動かすCPUの特権モード」と思えばだいたいOK!
📖 おまけ:英語の意味
「Kernel Mode」 = カーネル動作モード
💬 kernel(核)が動くときの mode(モード)で、OSの核心部分が特権的に動作する状態のことだよ

参考資料

← 用語集にもどる