ページテーブル
英語表記: Page Table
概要
ページテーブルは、コンピュータの構成要素の中でも、特に制御装置(命令の解釈と制御信号)の機能の一部を担うメモリ管理ユニット(MMU)が利用する、非常に重要なデータ構造です。これは、プログラムが利用する論理的な「仮想アドレス」と、実際に物理メモリ(RAM)上にデータが存在する「物理アドレス」との対応関係を一覧にして記録した表のことです。このテーブルを参照することで、CPUは複数のプログラムがメモリを効率的かつ安全に共有することを可能にし、仮想記憶システムを実現する中核的な役割を果たしています。ページテーブルは、複雑なメモリ空間の管理を裏側で支える、驚くべき仕組みなのですね。
詳細解説
MMU内での役割と目的
ページテーブルの存在意義は、一言で言えば「メモリの抽象化と保護」にあります。プログラムは、自分が単独で広大なメモリ空間を占有しているかのように振る舞うことができますが、これは仮想記憶という技術によって実現されています。ページテーブルは、この仮想記憶を実現するためにMMUが参照する「翻訳辞書」のようなものです。
MMUは制御装置の一部として、CPUから発行された命令に含まれる仮想アドレスを受け取ります。もしページテーブルがなければ、CPUは物理メモリ上のどこにデータがあるかを直接把握しなければならず、プロセスの分離やセキュリティの確保が極めて困難になります。
ページテーブルが提供する主な機能と目的は以下の通りです。
- アドレス変換(マッピング): 仮想アドレス(VA)を物理アドレス(PA)に変換します。これにより、プログラムは実際のメモリ配置を気にすることなく動作できます。
- メモリ保護: 各プロセスが自分の領域外のメモリにアクセスするのを防ぎます。ページテーブルのエントリには、そのページが「読み取り専用」か「書き込み可能」かといったアクセス権限の情報も含まれており、セキュリティを確保します。
- 物理メモリの効率的な利用(ページング): 物理メモリが断片化していても、ページテーブルがあれば、プログラムの論理的な連続性を保ちつつ、物理的にはバラバラな場所にデータを配置できます。
動作の仕組みと構造
ページテーブルは、ページングというメモリ管理手法の基盤となります。ページングでは、仮想メモリ空間と物理メモリ空間をそれぞれ固定長のブロックに分割します。
- ページ (Page): 仮想アドレス空間のブロック。
- ページ枠 (Page Frame): 物理アドレス空間のブロック(ページと同じサイズ)。
ページテーブルは、この仮想ページ番号と、対応する物理ページ枠番号(フレーム番号)を一対一で記録しています。
アドレス変換のプロセス
制御装置内のMMUは、アドレス変換を行う際に以下の手順を踏みます。
- 仮想アドレスの分割: CPUが生成した仮想アドレスは、「仮想ページ番号」と「ページ内オフセット(変位)」に分割されます。
- ページテーブルの検索: MMUは、仮想ページ番号をインデックスとして、ページテーブル内の対応するエントリを探します。
- 物理ページ枠番号の取得: エントリが見つかると、そこには対応する物理ページ枠番号(フレーム番号)が記録されています。
- 物理アドレスの生成: 取得した物理ページ枠番号と、元の仮想アドレスから取り出したページ内オフセットを結合し、最終的な物理アドレスが確定します。
この物理アドレスが、実際にメモリチップ(RAM)にアクセスするために使用されることになります。
性能と階層化
ページテーブルは非常に巨大になる可能性があるため、通常はメモリ上に格納されています。しかし、CPUが命令を実行するたびにメモリ上のページテーブルを参照すると、処理速度が大幅に低下してしまいます。このボトルネックを解消するため、制御装置にはTLB(Translation Lookaside Buffer:アドレス変換キャッシュ)という高速なキャッシュが搭載されています。MMUはまずTLBをチェックし、目的のエントリがなければ初めてメモリ上のページテーブルを参照します。
また、広大な仮想空間に対応するため、ページテーブル自体を階層化(マルチレベルページテーブル)して、使用していない領域のテーブルはメモリにロードしないようにする工夫も行われています。これにより、メモリの利用効率を高めているのです。
このように、ページテーブルは、コンピュータの構成要素のなかでも、特に制御装置の効率と安全性を担保する、きわめて重要な役割を担っていることがわかります。
具体例・活用シーン
ページテーブルの仕組みは、私たちが普段利用している郵便局の転送サービスに例えることができます。
具体例:郵便局の転送サービス(メタファー)
あなたが引っ越しをしたとしましょう。友人や企業は、以前の住所(仮想アドレス)宛に郵便物を送ってきます。しかし、郵便局は、あなたがどこに引っ越したかを知っているため、その郵便物を新しい住所(物理アドレス)に正確に転送します。
- ページテーブル: 郵便局の内部にある「転送先リスト」です。「旧住所A宛ての郵便物は、新住所Xに転送せよ」という対応関係が記録されています。
- MMU(制御装置): 郵便物の処理を担当する郵便局員です。旧住所のラベル(仮想アドレス)を見て、転送リスト(ページテーブル)をチェックし、新しい住所(物理アドレス)を特定します。
- ページング: 郵便物を封筒(ページ)単位で扱い、転送先(ページ枠)に誘導するプロセス全体です。
もし転送リスト(ページテーブル)がなければ、郵便局員は住所が間違っていると判断して郵便物を届けることができません。ページテーブルがあるおかげで、送信者(プログラム)は古い認識(仮想アドレス)のままでいながら、システム全体(物理メモリ)は効率的に運用できるのです。
活用シーン
- 仮想記憶システム: 物理メモリよりも大きなプログラムを実行可能にします。ページテーブルによって、使用頻度の低いページを一時的に補助記憶装置(HDD/SSD)に退避させるスワッピングが可能になります。
- マルチタスク環境: 複数のプロセスが同時に実行されている場合、各プロセスは独立したページテーブルを持ちます。これにより、あるプロセスが別のプロセスのメモリ領域を誤って上書きするのを防ぎ、システムの安定性を保っています。
資格試験向けチェックポイント
IT系の資格試験、特に基本情報技術者試験や応用情報技術者試験では、メモリ管理の仕組みが頻繁に出題されます。ページテーブルは、その核心をなす概念です。
| 項目 | 試験で問われるポイント |
| :— | :— |
| 定義と役割 | ページテーブルが「仮想アドレス」と「物理アドレス」の対応付けを行うデータ構造であることを確実に理解してください。これがMMUの主要機能であることを結びつけて覚えましょう。 |
| ページング | ページテーブルはページング方式で利用されます。セグメンテーション方式との違い(固定長ブロック vs. 可変長ブロック)を区別できるようにしておく必要があります。 |
| 関連用語 | ページフォールト (Page Fault) の発生条件を問われます。これは、アクセスしようとした仮想アドレスに対応するページが主記憶(物理メモリ)に存在せず、補助記憶装置(ディスク)にある場合に発生する割込みです。このとき、MMUはページテーブルに「存在しない」マークが付いていることを検出します。 |
| 高速化機構 | ページテーブルの検索を高速化するために、制御装置内部のキャッシュである TLB(アドレス変換キャッシュ) が利用されることを覚えておきましょう。TLBは、ページテーブル全体ではなく、直近で利用されたマッピング情報の一部を保持しています。 |
| 配置場所 | ページテーブル自体は主記憶上に置かれますが、その起点アドレス(開始位置)を示すレジスタはCPU(制御装置の一部)内に保持されている、という点も重要です。 |
関連用語
ページテーブルを理解するためには、以下の用語を合わせて学習することが推奨されます。
- MMU (Memory Management Unit)
- 仮想記憶 (Virtual Memory)
- ページング (Paging)
- ページフォールト (Page Fault)
- TLB (Translation Lookaside Buffer)
- スワッピング (Swapping)
※関連用語の詳しい説明については、情報不足のため、別途それぞれの用語の項目を参照してください。