TL

カーネルモードとユーザーモード

CPU には権限の高いカーネルモードと低いユーザーモードがあり、OS の中核だけを特権で動かして安全を守ります。アプリはシステムコールでカーネルに処理を依頼します。

中級カーネルモードユーザーモード特権モードOS最終更新: 2026-06-06
TL;DR要点だけ先に
  • 1.CPU は特権レベルを持ち、OS の中核はカーネルモード、アプリはユーザーモードで動きます。
  • 2.ユーザーモードではハードを直接触れず、危険な操作はカーネルに依頼するため安全です。
  • 3.その依頼の窓口がシステムコールで、ここでモードがカーネル側へ切り替わります。

なぜモードを分けるのか

もし全プログラムがハードウェアを自由に触れたら、1つのアプリのバグが メモリを壊し、ディスクを消し、他のプログラムや OS ごと巻き込んで システム全体を不安定にできてしまいます。

これを防ぐため、CPU は 特権レベル という仕組みを持ちます。OS の中核(カーネル)だけを高い権限で動かし、一般のアプリは権限を制限した状態で動かす——この 権限の分離 が、現代 OS の安全性とマルチタスクの土台です。

2つのモード

実行モードは大きく2つに分かれます。

観点カーネルモードユーザーモード
権限高い(特権命令を実行可)低い(制限される)
動かす主体OS カーネル・デバイスドライバ一般アプリ
ハード操作直接できる直接はできない
アクセス範囲全メモリ・全資源自プロセスの範囲のみ
障害の影響システム全体に波及しうる原則そのプロセス内で済む

x86 系では特権レベルが リング0(最高)〜リング3(最低) に分かれ、実用上はリング0をカーネル、リング3をユーザーに使います。CPU は 今どのモードか を内部に保持し、ユーザーモードで特権命令を実行しようとすると 例外を発生させて拒否 します。

境界をまたぐ:システムコール

ユーザーモードのアプリは、ファイルを開く・通信する・プロセスを作るといった 特権が要る操作を自分では実行できません。代わりに OS へ「これをやってほしい」と依頼します。この依頼の窓口が システムコール です。

1. アプリが read() を呼ぶ(ユーザーモード)
2. 専用の命令でカーネルへ制御を移す(→ カーネルモードへ切替)
3. カーネルが引数を検査し、実際にディスクから読む
4. 結果を返してユーザーモードへ戻る

ポイントは、勝手にカーネル空間へ飛び込めるわけではない ことです。入口は OS が用意した番号付きの窓口だけで、カーネルは渡された引数を必ず 検査 してから処理します。これにより、不正な依頼を水際で弾けます。

printf も裏ではシステムコール

普段書く printffopen はライブラリ関数で、その内部で writeopen といったシステムコールを呼んでいます。アプリが直接モードを切り替える命令を書くことは、ほとんどありません。

モード切替のコスト

ユーザーとカーネルの行き来は 無料ではありません。レジスタの退避・復元や引数の検査、場合によってはキャッシュやパイプラインへの影響が伴います。

そのため、システムコールを呼びすぎると遅くなる ことがあります。1バイトずつ write を何度も呼ぶより、まとめてバッファリングして一度に書くほうが速いのはこのためです。標準ライブラリの入出力がバッファを持つのも、切替回数を減らす工夫です。

「モード切替」と「コンテキストスイッチ」は別物

システムコールによるモード切替は、同じプロセス内でカーネルへ入って戻るだけです。一方コンテキストスイッチは、CPU で動かすプロセス自体を別のものに入れ替えることを指します。混同しないようにしましょう。

まとめ

  • CPU の 特権レベル で世界を分け、OS の中核は カーネルモード、アプリは ユーザーモード で動かす。
  • 目的は 安全性——1つのアプリの暴走を、その範囲に閉じ込める。
  • 特権が要る操作は システムコール でカーネルに依頼し、そこでモードが切り替わる。

依頼の仕組みの詳細は システムコールとカーネル、切り替えの話は プロセスとスレッド も合わせてどうぞ。

OS Article

カーネルモードとユーザーモードを実務で読む

TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。

解決すること

カーネルモード

比較で見る軸

難易度: intermediate / カテゴリ: OS / タグ数: 4

導入後に効く点

ユーザーモードではハードを直接触れず、危険な操作はカーネルに依頼するため安全です。

先に潰すリスク

用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。

数字・仕様の読み方
難易度
intermediate
カテゴリ
OS
タグ数
4

判断チェックリスト

  • 自社の用途が「カーネルモード / ユーザーモード」に近いか確認する。
  • 強みである「CPU は特権レベルを持ち、OS の中核はカーネルモード、アプリはユーザーモードで動きます。」が本当に評価軸になるか確認する。
  • 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
  • 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
  • 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
  • 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。

次に確認する観点

カーネルモードユーザーモード特権モードOSカーネルモードユーザーモード特権モードOS
参考: 公式情報