

高岡智則
年齢:33歳 性別:男性 職業:Webディレクター(兼ライティング・SNS運用担当) 居住地:東京都杉並区・永福町の1LDKマンション 出身地:神奈川県川崎市 身長:176cm 体系:細身〜普通(最近ちょっとお腹が気になる) 血液型:A型 誕生日:1992年11月20日 最終学歴:明治大学・情報コミュニケーション学部卒 通勤:京王井の頭線で渋谷まで(通勤20分) 家族構成:一人暮らし、実家には両親と2歳下の妹 恋愛事情:独身。彼女は2年いない(本人は「忙しいだけ」と言い張る)
ページフォルトとは何か
ページフォルトは、CPUがメモリにアクセスしたとき、要求したデータがRAMに見つからなかったときに起こる現象です。このときCPUは一時的に処理を止め、OS が必要なデータを探して読み込みます。この仕組みのおかげで私たちはたくさんのデータを同時に使えるのに、実際のRAMは限られているという現実をうまくやりくりすることができます。
この考え方の背景には仮想メモリという仕組みがあります。OS は各プログラムに独立した仮想的な住所空間を与え、実際のデータは物理メモリとディスクの両方にまたがって管理します。プログラムは仮想アドレスを使ってデータを参照しますが、実際の場所はOS が管理する地図のようなページテーブルを使って決められます。
仮想メモリとページテーブル
仮想メモリでは、住所空間を小さな区画である「ページ」という単位に分けます。CPU は仮想アドレスを参照し、それを物理メモリ上の場所へ対応づける情報がページテーブルです。もし探しているページがこの地図上に存在していてもRAMに物理データがまだロードされていなければ、ページフォルトが発生します。
このときOS はディスク上のデータをRAMに読み込み、ページテーブルを書き換えて再度処理を再開します。つまり「今使えないデータ」を「必要なときにだけ取り出す」ことで、少ないRAMでも多くのプログラムを同時に動かせるのです。
ページフォルトが起きたときの処理の流れ
以下のような流れで解決されます。
| ステップ | 説明 |
|---|---|
| 1 | CPU がページフォルトを検知する |
| 2 | OS がフォルトを処理する準備を始める |
| 3 | ページテーブルを確認し、必要なページがRAMに無いことを特定する |
| 4 | ディスク上のデータをRAMへ読み込み、ページテーブルを更新する |
| 5 | 処理を再開して、元の命令を実行させる |
この一連の流れは速くはありませんが、RAMを節約しつつ多くのデータを扱うために不可欠な仕組みです。
ハードページフォルトとソフトページフォルト
ページフォルトには二つのタイプがあります。ハードページフォルトは、要求したページがRAMに無く、ディスクから読み込む必要がある状態を指します。これが起きると実際のディスクI/O が発生し時間がかかります。ソフトページフォルトは、RAMには無いが必ずしもディスクからの読み込みを伴わないケースを指します。例えばファイルのキャッシュやコピーオンライトの準備段階など、ディスクI/O を伴わずに解決できる場合があります。
| 種類 | 意味 |
|---|---|
| ハードページフォルト | RAMにデータがなく、ディスクから読み込む必要がある状態 |
| ソフトページフォルト | RAMに無いがディスク読込を必ずしろと決まっていない状態。キャッシュやファイルマッピングで解決する場合がある |
なぜ遅くなるのかと対策
ページフォルトが多いほど、ディスクI/O の回数が増え、処理全体が遅くなります。特に大量のページフォルトが連続して起きると、いわゆる「スラッシング」という現象が起き、プログラム全体の動作がガクッと遅くなります。対策としては RAMを増やす、効率的なページ置換アルゴリズムを使う、不要なプログラムを閉じる、ソフトウェア側でのメモリの使い方を見直すなどがあります。OS はここを極力うまく調整して、ページフォルトの発生頻度を抑えるよう日々工夫しています。
身近なイメージで理解する
本棚にある辞書を思い浮かべてください。辞書は机の上に置いておくと便利ですが、スペースが限られています。必要なページが机の上に見当たらないときは、本棚から取りに行く必要があります。取りに行く時間を短くするために、頻繁に使うページだけを机の上に置くイメージです。このように、ページフォルトはデータの「場所」を最適に使い分けるための工夫でもあります。
要点をもう一度まとめると、ページフォルトは仮想メモリの仕組みの中で起こる現象であり、RAM にないデータをOS が適切にディスクから読み込み、ページテーブルを更新して処理を再開させる、という流れです。正しく理解すれば、なぜ現代のパソコンが大きなメモリ空間を提供できるのかが見えてきます。
要点として覚えておきたいのは、ページフォルトは必ずしも悪いものではなく、RAMの制約を超えて多くのプログラムを同時に動かすための重要な仕組みだということです。RAMが増えればページフォルトは減りますが、現代のソフトはそれでも仮想メモリを活用するため、ページフォルトの仕組みを理解しておくとパソコンの動作がもっと身近に感じられます。
ページフォルトの同意語
- ページフォールト
- 仮想メモリ管理において、アクセスした仮想ページが現在物理メモリにロードされていない状態で、OS がそのページをディスクから読み込み、実メモリへ展開する処理を開始するイベント。
- ページ欠落
- 仮想メモリ上のページが物理メモリに存在しない状態を指す表現。ページフォルトと同義で使われることがある。
- ページ欠陥
- 同義語として使われる表現。必要なページがRAM上にない状態を指す語。
- 未ロードページ
- まだ物理メモリにロードされていない仮想ページを指す語。ページフォルトの原因となる実体。
- 未配置ページ
- まだ物理メモリへ割り当てられていない仮想ページを表す表現。
- 仮想メモリページフォルト
- 仮想メモリの仕組みで発生するページフォルトの別称。ページがメモリに無い為ディスクから読み込む必要が生じる状態。
- 仮想メモリのページフォルト
- 仮想メモリ管理下で発生するページフォルトの別表現。ページが物理メモリに読み込まれていない状態を指す。
ページフォルトの対義語・反対語
- ページヒット
- 要求されたページが物理メモリ(RAM)に既にロード済みで、ページフォルトを起こさずに参照できる状態。ディスクアクセスが不要な高速参照です。
- RAM内ヒット
- 同様に、RAM内にそのページが存在しており、ページフォルトが発生しない参照のこと。ページヒットとほぼ同義です。
- 物理メモリ内参照
- 要求されたページが物理メモリ内にあり、ページフォルトを伴わない参照。ディスクアクセスなしの状態を指します。
- ページフォルトなし
- ページフォルトが発生しないこと。通常はRAM内にページがあるか、まだロード済みであることを意味します。
- ディスクアクセス回避参照
- ディスクにアクセスせずにRAM内のページを参照している状態。高速な参照が可能です。
ページフォルトの共起語
- 仮想メモリ
- 実RAM容量を超える大きなメモリ空間を仮想的に提供する仕組み。ページフォルトはこの仮想空間のデータが物理RAMに無いときに発生します。
- 物理メモリ
- RAM。現在すぐに使える実データを格納する場所。ページフォルト発生時にはここに必要なページが無いことがあります。
- ページング
- 仮想メモリを固定サイズのページに分割して管理する技術。ページフォルトはこの仕組みの要となる現象です。
- ページテーブル
- 仮想ページと物理フレームの対応を記録する表。フォールト時にはこの表のエントリが無効・欠落していることがあります。
- アドレス変換
- 仮想アドレスを物理アドレスへ変換する処理。MMUとページテーブルを使って行われます。
- 仮想アドレス
- プログラムが使用する見かけのアドレス。実際には物理アドレスへ変換されます。
- 物理アドレス
- RAMの中の具体的な位置を指すアドレス。ページテーブルの変換結果として決まります。
- MMU
- メモリ管理ユニット。アドレス変換をハードウェアで素早く行います。
- TLB
- Translation Lookaside Buffer。直近のアドレス変換情報をキャッシュして変換を速くします。
- TLBミス
- TLBに必要な変換情報が無い状態。ページテーブル参照などで対応します。
- ページフォルト割り込み
- 仮想ページがRAM上にないときOSへ通知される割り込み信号。
- ページフォルト処理
- OSのハンドラが実行され、欠けているページをロードしたり置換したりする一連の処理。
- ディスクI/O
- ディスクへデータを読み書きする操作。ページのロードや退避で頻繁に発生します。
- スワップ領域
- ディスク上の専用領域。RAMが不足したときページを退避する場所です。
- スワップファイル
- スワップ領域の実ファイル版。退避データをディスクに保存します。
- ページ置換アルゴリズム
- RAM上のページをどれを追い出すか決定する戦略。LRUやFIFOなどがあります。
- LRU
- 最近最も使われていないページを置換対象とする代表的なアルゴリズム。
- FIFO
- 最も古くに現れたページを置換するアルゴリズム。
- 大ページ / 巨大ページ
- 1ページあたりのサイズを大きくして転送量を減らす最適化。例: 2MB、1GBなど。
- ページサイズ
- 1ページの固定長。一般的には4KBなどが用いられます。
- アクセス権限
- 読み取り・書き込み・実行の権限。権限が違う場合はページフォルトが発生することがあります。
- カーネル
- OSの中核部分。ページフォルト処理を実装するコードを含みます。
ページフォルトの関連用語
- ページフォルト
- 仮想アドレスが参照された際、そのページが物理メモリに読み込まれていない状態で発生するイベント。OSはディスクから該当ページを読み込み、実行を再開させる。
- 仮想メモリ
- 実際のRAM容量より大きな連続アドレス空間を概念的に用意し、ページ単位で実体メモリとディスクを組み合わせて管理する仕組み。
- ページテーブル
- 仮想ページと物理フレームの対応を管理するデータ構造。PTEには物理フレーム番号、権限、参照/変更ビットなどが含まれる。
- ページフレーム
- 物理メモリを固定サイズのブロックとして表す単位。仮想ページがここに割り当てられる。
- TLB
- Translation Lookaside Buffer。仮想アドレスから物理アドレスへの変換を高速化する小さなキャッシュ。
- ページイン
- ディスク上のページを物理メモリに読み込み、実行中のプロセスがそのページを参照できるようにする操作。
- ページアウト
- 使用されなくなったページを物理メモリから解放し、ディスクのスワップ領域へ退避する操作。
- スワップ領域
- ディスク上の領域で、ページを一時的に保存しておく場所。スワップファイルやスワップパーティションの形で存在。
- 需要ページング (Demand paging)
- 必要になった時点でページを読み込む、遅延ロードの一種。初期起動時の不要なページのロードを避ける。
- ページ置換アルゴリズム
- メモリ不足時に、どのページを物理メモリから解放するか決めるルール。例: LRU、CLOCK、FIFO等。
- 有効参照ビット
- 最近そのページが参照されたかを示す旗。置換判断の材料になることが多い。
- 変更ビット (Dirty bit)
- ページに変更が加えられたかを示す旗。変更済みページは書き戻しが必要な場合が多い。
- アクセス権/保護ビット
- 各ページの読み/書き/実行の権限を設定。違反時にページフォルトが発生することがある。
- ページフォールトハンドラ
- ページフォルト発生時にOSが呼ぶ処理ルーチン。必要ページのロードや置換を実行する。
- ページフォールトの原因
- イベントの原因を表す。主には not-present(ページが物理メモリに無い)と protection fault(権限違反)など。
- TLBミス
- TLBに該当エントリがない状態。ページテーブルを参照して新しいエントリをロードすることで対処。
- セグメンテーション fault / Segmentation fault
- アクセス権のない領域への参照や未割り当て領域へのアクセスで発生する現象。環境によってはページフォールトとして扱われる。
- 大ページ / Huge pages
- 4KBより大きい単位のページ。TLBの効果を高め、ページ数を減らすことがある。
- ページサイズ
- 仮想/物理の最低単位となるページの大きさ。代表例は4KB、巨大ページは数MB級など。
- 多段階ページテーブル
- 仮想アドレスを物理アドレスに変換するために、複数の階層のテーブルを辿る手法。x86の4〜5段階構造など。
ページフォルトのおすすめ参考サイト
- ページフォールトとは - ITを分かりやすく解説
- ページフォールトとは - IT用語辞典 e-Words
- ページフォールトとは - IT用語辞典 e-Words
- 基本情報技術者平成29年秋期問20 ページフォールトを増加させる要因
- ページフォールトとは?起こる原因は?何回発生する? | IT連絡帳
- ページフォールトとは? わかりやすく解説 - Weblio辞書



















