カーネルモードとユーザモードとは?CPUの権限のレベルを分けるしくみ

公開: 更新: カテゴリ: テクノロジ系

30秒で結論

カーネルモードとユーザモードとは(全体像)

これは、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モードの違い)

📝 オリジナル問題 1 2モードの違い

カーネルモードとユーザモードに関する次の記述のうち、正しいものはどれか。

  1. カーネルモードは強い権限でOSが動き、ユーザモードは制限された権限で一般アプリが動く
  2. カーネルモードは制限された権限でアプリが動き、ユーザモードは強い権限でOSが動くものだ
  3. カーネルモードもユーザモードもまったく同じ権限で、違いはないものとされているものだ
  4. カーネルモードもユーザモードも紙に印刷する装置のことで、権限とは無関係なものとされる
テクマスター
テクマスター 解答・解説

解答は 1 ですよ。

カーネルモードは強い権限でOSが動き、ユーザモードは制限された権限で一般アプリが動くんですね。社長と社員の関係です。

選択肢2のカーネルとユーザが逆、選択肢3の「同じ権限」、選択肢4の「印刷する装置」はどれも誤りですよ。

選択肢判定理由
1カーネルは強い権限・ユーザは制限
2カーネルとユーザの説明が逆
3権限が違う
4印刷する装置ではない

オリジナル問題2(普段のモードと切り替え)

📝 オリジナル問題 2 普段のモードと切り替え

モードの使い方に関する次の記述のうち、正しいものはどれか。

  1. アプリは常にカーネルモードで動き、ユーザモードに切り替わることはないものとされている
  2. アプリは普段ユーザモードで動き、特権操作が必要なときだけカーネルモードに切り替わる
  3. アプリはモードを持たず、権限の区別なくハードに直接アクセスできるものとされているのだ
  4. アプリは紙に印刷するときだけカーネルモードに切り替わるものとされているのだ
テクマスター
テクマスター 解答・解説

解答は 2 ですよ。

アプリは普段ユーザモードで動き、特権操作が必要なときだけカーネルモードに切り替わるんですね。「OSは常にカーネルモード」は誤解です。

選択肢1の「常にカーネルモード」、選択肢3の「権限の区別なし」、選択肢4の「印刷のときだけ」はどれも誤りですよ。

選択肢判定理由
1普段はユーザモード
2必要なときだけカーネルに切替
3権限の区別がある
4印刷とは関係ない

オリジナル問題3(切り替えのコスト)

📝 オリジナル問題 3 モード切り替えのコスト

モード切り替えのコストに関する次の記述のうち、正しいものはどれか。

  1. モード切り替えにはコストがいっさいなく、何度行っても性能に影響はないものとされている
  2. モード切り替えは紙に印刷する手順のことで、CPUの状態とは無関係なものとされているのだ
  3. モード切り替えにはCPU状態の保存・復元という手間があり、頻発するとアプリが遅くなる
  4. モード切り替えはアプリの権限を必ず最高に固定する操作で、保護をなくすものとされている
テクマスター
テクマスター 解答・解説

解答は 3 ですよ。

モード切り替えにはCPU状態の保存・復元という手間があり、頻発するとアプリが遅くなるんですね。コストは無視できません。

選択肢1の「コストがない」、選択肢2の「印刷する手順」、選択肢4の「権限を最高に固定」はどれも誤りですよ。

選択肢判定理由
1切り替えにはコストがある
2印刷する手順ではない
3保存・復元の手間がある
4権限を固定する操作ではない

まとめ

押さえどころ

次に学ぶ


執筆: SikakuQuest編集部

勉強は、クエストになった。

資格の勉強を、冒険に変えるRPG学習アプリ

App Storeで見る