メインコンテンツへスキップ

仮想記憶のアドレス変換

·
目次

問題
#

仮想記憶方式において、論理アドレスから物理アドレスへの変換を行うのはいつか。

選択肢

  1. ページを補助記憶にページアウトするとき
  2. ページフォールトが発生したとき
  3. 主記憶に存在するページをアクセスするとき
  4. ページを主記憶にページインするとき

正解:主記憶に存在するページをアクセスするとき
#

基本的な仕組み
#

論理アドレスから物理アドレスへの変換は、CPUがメモリアクセスを行うたびに実行されます。

  • 担当ハードウェア: MMU(メモリ管理ユニット)
  • 使用する対応表: ページテーブル
  • 実行タイミング: 主記憶上のページへアクセスするとき(毎回)
  • 処理速度: 高速(ハードウェア処理)

他の選択肢が不正解な理由
#

ページアウト
#

  • 主記憶の空き容量確保のため、使用頻度の低いページを補助記憶に退避する処理
  • OSによるメモリ管理動作であり、アドレス変換処理そのものではない

ページフォールト
#

  • アドレス変換を試みた結果、失敗したときに発生する例外(割り込み)
  • 変換が行われるタイミングではなく、変換失敗の結果発生する事象

ページイン
#

  • ページフォールト発生後、補助記憶から主記憶にページを読み込む処理
  • ページイン完了後に、改めてアドレス変換が行われる

Q&A:よくある誤解
#

Q1. ページイン・ページアウトでも変換が発生する?
#

A. いいえ、厳密には異なります。

アドレス変換はCPUの命令実行に伴う処理であり、ページイン・ページアウトの最中に行われるわけではありません。

Q2. アドレス変換失敗時の処理フロー
#

A. はい、以下の流れで処理されます。

アドレス変換失敗
    ↓
ページフォールト発生
    ↓
OS介入(ページイン処理)
    ↓
変換成功(メモリアクセス実行)

詳細:各処理とアドレス変換の関係
#

アドレス変換が行われるタイミング
#

CPUがプログラムを実行し、メモリアクセスするたびにMMUが論理アドレスを物理アドレスに変換します。これは主記憶上のページが存在する場合に毎回実行される高速処理です。

ページインとアドレス変換
#

ページインはアドレス変換の失敗がきっかけで発生します。

  1. CPUが論理アドレスにアクセス → MMUがアドレス変換を試行
  2. ページが主記憶に存在しない → 変換失敗 → ページフォールト発生
  3. OSが補助記憶装置から必要なページを主記憶に読み込む(ページイン
  4. ページテーブル更新
  5. 中断していた命令を再開 → MMUが再度アドレス変換を試行 → 成功

ページアウトとアドレス変換
#

ページアウトは、ページインのための空き領域確保を目的としたOSのメモリ管理動作です。

  1. ページフォールト発生 → ページイン必要 → 主記憶に空きがない
  2. OSがページの置き換え対象を決定
  3. 選ばれたページを補助記憶装置に書き出す(ページアウト

CPUによるアドレス変換処理そのものではありません。


まとめ
#

処理役割アドレス変換との関係
アドレス変換MMUによる論理→物理アドレス変換主記憶アクセス時に毎回実行
ページフォールトアドレス変換失敗時の例外変換失敗の結果
ページイン補助記憶→主記憶へのページ読み込み完了後に変換が再実行される
ページアウト主記憶→補助記憶へのページ退避変換処理ではない(メモリ管理)

仮想記憶の処理フロー
#

1. アドレス変換の試行
   ├─ 成功 → メモリアクセス実行
   └─ 失敗 → 2へ

2. ページフォールト発生(例外割り込み)
   └─ OSに制御移行

3. OS処理
   ├─ ページ検索(補助記憶装置)
   ├─ 空き領域確保(必要なら4へ)
   └─ ページイン実行

4. ページアウト(空き容量不足時)
   ├─ 置き換え対象選択
   └─ 補助記憶へ退避

5. ページテーブル更新

6. 処理再開 → 1へ戻る(今度は成功)

重要ポイント: ページイン・ページアウトは、アドレス変換を円滑に動かすためのOSによる裏方の管理作業です。