カーネルモードとユーザモードとは?かーねるもーどとゆーざもーど
カーネルモードとユーザモードとは、CPUが備える実行特権の区分。カーネルモードでは入出力命令やMMU・MPUの設定などの特権命令を実行できるが、ユーザモードで同じ命令を出すとフォールトになる。アプリの暴走がハードウェアや他タスクへ波及しない境界をハードウェアの側で作る仕組みである。
最終更新:2026-10-06
エンベデッドSPを最短で暗記・合格する →背景
もとは1台を複数の利用者が共有する計算機で、1本のバグが全体を落とすのを防ぐために生まれた。組込みでは長らく全タスクを特権で走らせるのが普通だったが、混在度の異なるソフトウェアの分離を求める機能安全規格が広まり、MPUでタスクごとに領域を区切って非特権で走らせる設計が採られるようになった。信頼性という非機能要件を、構成そのもので担保する判断である。
具体例
FreeRTOSのMPU対応版はタスクを非特権モードで動かし、そのタスクが触れてよい領域だけをMPUに設定する。特権が要る処理はMPU_接頭辞のAPIを呼び、SVC命令でカーネルへ入る。領域外を触った瞬間にMemManageフォールトで止まるため、暴走したタスクが他タスクのスタックを壊す事故を設計時に封じられる。
試験での引っ掛け
管理者権限(root)とカーネルモードは別物で、rootのプロセスもユーザモードで動く。Arm Cortex-Mでは、ThreadモードとHandlerモードという実行文脈の区別と、特権/非特権という権限の区別が別軸である点も混同しやすい。割込みハンドラは常に特権で動く。
関連用語
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。