ページフォルト・とは?初心者にもわかる基本ガイド共起語・同意語・対義語も併せて解説!

  • このエントリーをはてなブックマークに追加
ページフォルト・とは?初心者にもわかる基本ガイド共起語・同意語・対義語も併せて解説!
この記事を書いた人

高岡智則

年齢:33歳 性別:男性 職業:Webディレクター(兼ライティング・SNS運用担当) 居住地:東京都杉並区・永福町の1LDKマンション 出身地:神奈川県川崎市 身長:176cm 体系:細身〜普通(最近ちょっとお腹が気になる) 血液型:A型 誕生日:1992年11月20日 最終学歴:明治大学・情報コミュニケーション学部卒 通勤:京王井の頭線で渋谷まで(通勤20分) 家族構成:一人暮らし、実家には両親と2歳下の妹 恋愛事情:独身。彼女は2年いない(本人は「忙しいだけ」と言い張る)


ページフォルトとは何か

ページフォルトは、CPUがメモリにアクセスしたとき、要求したデータがRAMに見つからなかったときに起こる現象です。このときCPUは一時的に処理を止め、OS が必要なデータを探して読み込みます。この仕組みのおかげで私たちはたくさんのデータを同時に使えるのに、実際のRAMは限られているという現実をうまくやりくりすることができます。

この考え方の背景には仮想メモリという仕組みがあります。OS は各プログラムに独立した仮想的な住所空間を与え、実際のデータは物理メモリとディスクの両方にまたがって管理します。プログラムは仮想アドレスを使ってデータを参照しますが、実際の場所はOS が管理する地図のようなページテーブルを使って決められます

仮想メモリとページテーブル

仮想メモリでは、住所空間を小さな区画である「ページ」という単位に分けます。CPU は仮想アドレスを参照し、それを物理メモリ上の場所へ対応づける情報がページテーブルです。もし探しているページがこの地図上に存在していてもRAMに物理データがまだロードされていなければ、ページフォルトが発生します。

このときOS はディスク上のデータをRAMに読み込み、ページテーブルを書き換えて再度処理を再開します。つまり「今使えないデータ」を「必要なときにだけ取り出す」ことで、少ないRAMでも多くのプログラムを同時に動かせるのです。

ページフォルトが起きたときの処理の流れ

以下のような流れで解決されます。

ステップ説明
1CPU がページフォルトを検知する
2OS がフォルトを処理する準備を始める
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段階構造など。

ページフォルトのおすすめ参考サイト


インターネット・コンピュータの人気記事

awstatsとは?初心者でもわかる使い方と基本解説共起語・同意語・対義語も併せて解説!
14099viws
bing・とは?初心者のための基本ガイド:検索エンジンの仕組みと使い方共起語・同意語・対義語も併せて解説!
1958viws
着信転送とは?初心者向けガイドで分かる使い方と設定のコツ共起語・同意語・対義語も併せて解説!
843viws
リマインドメールとは?初心者にもわかる基本ガイドと使い方のコツ共起語・同意語・対義語も併せて解説!
587viws
com端子・とは?初心者にも分かる基礎ガイド|シリアルポートの使い方と歴史を解説共起語・同意語・対義語も併せて解説!
571viws
充電アダプターとは何かを徹底解説|初心者でも分かる基本と選び方のコツ共起語・同意語・対義語も併せて解説!
539viws
pinロックとは?初心者が知っておくべき基本と使い方ガイド共起語・同意語・対義語も併せて解説!
528viws
asp・とは?初心者向けに徹底解説する基本と使い方ガイド共起語・同意語・対義語も併せて解説!
460viws
16進数カラーコード・とは?初心者でもつまずかない基礎と使い方ガイド共起語・同意語・対義語も併せて解説!
446viws
ローカルポート・とは?初心者にも分かる基本と使い方ガイド共起語・同意語・対義語も併せて解説!
425viws
7zファイル・とは?初心者でもわかる使い方と特徴を解説共起語・同意語・対義語も併せて解説!
374viws
全角文字とは?初心者向け解説|全角と半角の違いをやさしく学ぶ共起語・同意語・対義語も併せて解説!
348viws
差し込み印刷・とは?初心者でもすぐわかる使い方と仕組みガイド共起語・同意語・対義語も併せて解説!
344viws
ワンタイムコード・とは?初心者でも分かる基本と使い方ガイド共起語・同意語・対義語も併せて解説!
319viws
select句・とは?初心者でも分かるSQLの基本と使い方共起語・同意語・対義語も併せて解説!
302viws
none とは?初心者にもやさしく解説する意味と使い方ガイド共起語・同意語・対義語も併せて解説!
300viws
csvダウンロードとは?初心者が今すぐ使える基本ガイド共起語・同意語・対義語も併せて解説!
295viws
ダイレクトチャットとは?初心者向けガイドで使い方と注意点を徹底解説共起語・同意語・対義語も併せて解説!
295viws
解像度スケールとは?初心者でも分かる解像度スケールの基礎と使い方共起語・同意語・対義語も併せて解説!
275viws
sha256とは?初心者が知るべき暗号ハッシュの基礎と使い道共起語・同意語・対義語も併せて解説!
235viws

新着記事

インターネット・コンピュータの関連記事