システムコールと特権モードとは?しすてむこーるととっけんもーど
システムコールと特権モードとは、資源保護のためにCPUの実行権限をカーネルモードと利用者モードの2段に分け、入出力命令やメモリ管理レジスタの操作を特権側でしか許さない仕組みと、アプリケーションがその向こうへ処理を依頼する窓口の組み。依頼のたびに権限が切り替わり、1回あたりの費用はほぼ固定なので、性能を詰める手は回数を減らすか1回に運ぶ量を増やすかに限られる。
最終更新:2026-10-06
システムアーキテクトを最短で暗記・合格する →背景
保護の無い時代は、どのプログラムも入出力装置とメモリに直接触れられ、1本の不具合が装置ごと巻き込んで停止させた。特権レベルを分けたのは、資源に触れる経路をOSの窓口ひとつに絞るためである。設計者にとってこの境界は性能見積もりの単位でもあり、1回あたりの遷移費用がほぼ固定である以上、遅さを改善する手は「回数を減らす」か「1回で運ぶ量を増やす」かのどちらかしかない。バッファサイズや多重化方式の議論は、突き詰めるとこの2択に帰着する。
具体例
ファイルを1バイトずつ読む実装は読むたびに遷移が起きて極端に遅くなるため、標準ライブラリは利用者空間に数KBのバッファを持ち、まとめてシステムコールを発行する。Linuxではさらにepollで多数のソケットを1回の呼出しでまとめて待ち、io_uringでは発行そのものをキューに積んで遷移回数を削る方向へ進んでいる。
試験での引っ掛け
ライブラリ関数を呼んだからといってシステムコールが発行されるとは限らず、文字列操作のように利用者モード内で完結する処理はモード遷移を伴わない。モード遷移とプロセス切替えも別物で、システムコールでは同じプロセスのまま特権レベルだけが変わり、コストも1桁以上違う——ここを混ぜると性能見積もりの設問で外す。
関連用語
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。