デマンドページングとは?でまんどぺーじんぐ
デマンドページングとは、プログラム全体を先に読み込まず、実際に参照されたページだけをその都度主記憶へ読み込む仮想記憶の方式。使わない部分を読まずに済むので主記憶を節約でき起動も速いが、参照した瞬間にページフォールトが起きるため、同じ命令列でも読み込みの有無で実行時間が変わる。
最終更新:2026-10-06
エンベデッドSPを最短で暗記・合格する →背景
主記憶が高価で小さかった時代に、実記憶より大きなプログラムを動かすために生まれた仕組みである。組込みで問題になるのはその副作用のほうで、同じコードでも1回目と2回目で所要時間が違う。ハードリアルタイム制御は最悪実行時間で締切を保証するため、「たまに遅い」は「常に遅い」と同じ扱いになる。仮想記憶を持つプロセッサを使う場合でも、制御周期に効く区間はページを主記憶へ固定するのはこのためである。
具体例
組込みLinuxでは、制御スレッドの起動時に mlockall(MCL_CURRENT|MCL_FUTURE) を呼んでプロセスのページを主記憶へ固定し、以後ページフォールトを起こさせない構成が定番である。MMUを持たないMCUではそもそもデマンドページングが存在せず、NORフラッシュ上のコードを主記憶へ写さず直接実行するXIP(eXecute In Place)が使われる。
試験での引っ掛け
先回りしてまとめて読むプリページングとの向きの違いを押さえる。デマンドページングは要求されてから読むので、起動直後とワーキングセットの入替え時にフォールトが集中する。平均スループットが良いことと最悪実行時間が短いことは別で、リアルタイム性を論じる場面で「主記憶を節約できる」を利点として挙げると論点がずれる。
関連用語
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。