カーネルモードとユーザモードとは(全体像)
これは、CPUが「どこまで操作してよいか」の権限を2段階に分けるしくみのこと。OS本体には全部を操作できる強い権限を、一般アプリには限られた権限だけを与える。
身近にたとえると、会社の社長と社員だ。カーネルモードは「全部屋・全金庫の鍵を持つ社長」、ユーザモードは「自分の机だけ使える社員」。社員が金庫を開けたいときは、社長にお願いして開けてもらう。この権限の分け方が、会社(システム)の秩序を守る。
押さえるのは、強い権限を持つのはOSだけで、アプリはふだん制限された権限(ユーザモード)で動く、ということ。
詳しく:2モードの違いと切り替えだけ覚えれば戦える
ここが記事の心臓部。まず2つのモードを比べましょう。
カーネルモードとユーザモード
| モード | 権限 | 動くもの | Intel x86での呼び名 |
|---|---|---|---|
| カーネルモード | すべてのハードウェア・メモリにアクセス可(強い) | OS(カーネル)・ドライバ | Ring 0 |
| ユーザモード | 限られたメモリだけ・ハードに直接さわれない | 一般アプリ | Ring 3 |
カーネルモードは、ハードウェアやメモリを何でも操作できる強い権限で、OS本体が動きます。Intelのx86ではRing 0と呼ばれます。ユーザモードは、限られたメモリしか使えない制限された権限で、一般のアプリが動きます。こちらはRing 3です。
ここで取り違えやすいのが「OSは常にカーネルモードで動く」という誤解。実際は、アプリは普段ユーザモードで動き、ハードウェア操作などが必要なときだけカーネルモードに切り替えます。
カーネルモードに切り替わるタイミング
| きっかけ | 例 |
|---|---|
| システムコール | アプリがOSに機能を頼む(ファイルを読むなど) |
| 割り込み | ハードからの通知(I/O完了・タイマー) |
| 例外 | 0で割り算するなどの異常 |
そして、このモードの切り替えには手間(コスト)がかかります。CPUの状態を保存・復元するため、1回の切り替えで数百〜数千サイクルを使います。「切り替えのコストは無視できる」というのは誤りで、頻発するとアプリが遅くなります。
わかりやすく言い換えると
要するに、社長と社員のたとえで覚えるとラクです。
①2モード … カーネルモードは社長(全部の鍵・強い権限・OS)、ユーザモードは社員(自分の机だけ・アプリ)
②普段はユーザモード … アプリは社員として働き、金庫が必要なときだけ社長に頼む(カーネルモードに切替)
③切り替えのコスト … 社長への確認には時間がかかる(頻発するとアプリが遅くなる)
つまり、「強い権限はOSだけ」「普段はユーザモード・必要時だけ切替」、この2点が試験の急所です。
試験のツボ
🔴 一番出る:2モードの違い
①カーネルモード = 何でも操作できる強い権限(OSが動く・Ring 0)
②ユーザモード = 制限された権限(一般アプリが動く・Ring 3)
🔴 次に出る:普段はユーザモード
①アプリは普段ユーザモードで動く
②ハードウェア操作などが必要なときだけカーネルモードに切り替える
🟡 押さえると安定:切り替えのきっかけとコスト
①きっかけ = システムコール・割り込み・例外
②切り替えには手間(コスト)がかかり、頻発すると遅くなる
よくある間違い
①「OSは常にカーネルモードで動いている」→ ✗ アプリは普段ユーザモードで動き、必要なときだけカーネルモードに切り替える。
②「モード切り替えのコストは無視できる」→ ✗ 切り替えにはCPU状態の保存・復元という手間があり、頻発するとアプリが遅くなる。
③「一般アプリもハードウェアに直接アクセスできる」→ ✗ 一般アプリはユーザモードで、ハードに直接さわれない。OSにシステムコールで頼む。
試験での出題パターン
実際の問題でたしかめてみよう。
オリジナル問題1(2モードの違い)
カーネルモードとユーザモードに関する次の記述のうち、正しいものはどれか。
- カーネルモードは強い権限でOSが動き、ユーザモードは制限された権限で一般アプリが動く
- カーネルモードは制限された権限でアプリが動き、ユーザモードは強い権限でOSが動くものだ
- カーネルモードもユーザモードもまったく同じ権限で、違いはないものとされているものだ
- カーネルモードもユーザモードも紙に印刷する装置のことで、権限とは無関係なものとされる
解答は 1 ですよ。
カーネルモードは強い権限でOSが動き、ユーザモードは制限された権限で一般アプリが動くんですね。社長と社員の関係です。
選択肢2のカーネルとユーザが逆、選択肢3の「同じ権限」、選択肢4の「印刷する装置」はどれも誤りですよ。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✓ | カーネルは強い権限・ユーザは制限 |
| 2 | ✗ | カーネルとユーザの説明が逆 |
| 3 | ✗ | 権限が違う |
| 4 | ✗ | 印刷する装置ではない |
オリジナル問題2(普段のモードと切り替え)
モードの使い方に関する次の記述のうち、正しいものはどれか。
- アプリは常にカーネルモードで動き、ユーザモードに切り替わることはないものとされている
- アプリは普段ユーザモードで動き、特権操作が必要なときだけカーネルモードに切り替わる
- アプリはモードを持たず、権限の区別なくハードに直接アクセスできるものとされているのだ
- アプリは紙に印刷するときだけカーネルモードに切り替わるものとされているのだ
解答は 2 ですよ。
アプリは普段ユーザモードで動き、特権操作が必要なときだけカーネルモードに切り替わるんですね。「OSは常にカーネルモード」は誤解です。
選択肢1の「常にカーネルモード」、選択肢3の「権限の区別なし」、選択肢4の「印刷のときだけ」はどれも誤りですよ。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✗ | 普段はユーザモード |
| 2 | ✓ | 必要なときだけカーネルに切替 |
| 3 | ✗ | 権限の区別がある |
| 4 | ✗ | 印刷とは関係ない |
オリジナル問題3(切り替えのコスト)
モード切り替えのコストに関する次の記述のうち、正しいものはどれか。
- モード切り替えにはコストがいっさいなく、何度行っても性能に影響はないものとされている
- モード切り替えは紙に印刷する手順のことで、CPUの状態とは無関係なものとされているのだ
- モード切り替えにはCPU状態の保存・復元という手間があり、頻発するとアプリが遅くなる
- モード切り替えはアプリの権限を必ず最高に固定する操作で、保護をなくすものとされている
解答は 3 ですよ。
モード切り替えにはCPU状態の保存・復元という手間があり、頻発するとアプリが遅くなるんですね。コストは無視できません。
選択肢1の「コストがない」、選択肢2の「印刷する手順」、選択肢4の「権限を最高に固定」はどれも誤りですよ。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✗ | 切り替えにはコストがある |
| 2 | ✗ | 印刷する手順ではない |
| 3 | ✓ | 保存・復元の手間がある |
| 4 | ✗ | 権限を固定する操作ではない |
まとめ
押さえどころ
- 🔴 2モードの違い = カーネルモード(強い権限・OS・Ring 0)/ユーザモード(制限された権限・アプリ・Ring 3)。
- 🔴 普段はユーザモード = アプリは普段ユーザモードで動き、特権操作が必要なときだけカーネルモードに切り替える。
- 🟡 切り替えのコスト = システムコール・割り込み・例外がきっかけ。切り替えには手間があり頻発すると遅くなる。
次に学ぶ
- OS(オペレーティングシステム) ── カーネルモードで動くカーネルを含む、OSの構成と役割。
- プロセス管理 ── モード切り替えとも関わる、プロセスの状態とコンテキストスイッチ。
執筆: SikakuQuest編集部