ページテーブル
英語表記: Page Table
概要
ページテーブルは、オペレーティングシステム(OS)が管理する仮想メモリ機構において、プログラムが使用する「仮想アドレス」を、実際にメモリ(DRAMなど)に存在する「物理アドレス」へ変換するために用いられる重要なデータ構造です。これは、メモリ階層における仮想メモリとアドレッシングの実現に不可欠な、まさに「住所録」の役割を果たしています。CPUが仮想アドレスを発行した際、このテーブルを参照することで、データがメモリのどこに格納されているかを瞬時に特定できる仕組みになっています。この仕組みこそが、現代のマルチタスクOSが安全かつ効率的に動作するための土台となっているのです。
詳細解説
ページテーブルは、現代のマルチタスク環境を支える仮想メモリ機構の中核を担っています。なぜ、このような複雑な仕組みが必要なのでしょうか?それは、複数のプログラムが限られた物理メモリを安全かつ効率的に共有するためです。
目的と背景(タクソノミとの関連)
私たちが今議論しているのは、「メモリ階層」という大きな文脈の中で、特に「仮想メモリとアドレッシング」の技術です。ページテーブルの最大の目的は、プログラムに対して物理メモリの制約を意識させず、広大で連続したメモリ空間(仮想アドレス空間)を提供することにあります。
もしページテーブルがなければ、プログラムは物理メモリの空いている場所を直接探さなければならず、複数のプログラムが同時に動くと、お互いの領域を上書きしてしまう危険性があります。ページテーブルは、各プログラムに独立した仮想空間を与え、アドレス変換というワンクッションを置くことで、セキュリティを確保し、システム全体の安定性を高めているのです。これは、仮想メモリ機構の最も重要な役割です。
動作の仕組み:アドレス変換の心臓部
ページテーブルは、仮想アドレス空間を一定の固定サイズに区切ったブロック(これを「ページ」と呼びます)ごとに管理します。ページテーブル自体は、通常、物理メモリ(DRAM)上に存在し、OSによって厳密に管理されています。
アドレス変換のプロセスは、主にMMU(Memory Management Unit:メモリ管理ユニット)と呼ばれる専用のハードウェアによって実行されます。
- 仮想アドレスの分割: CPUが発行した仮想アドレスは、MMUによって「仮想ページ番号」と「ページ内オフセット」の二つに分割されます。
- テーブル参照: MMUは、仮想ページ番号をインデックスとしてページテーブルを参照します。
- 物理ページフレーム番号の取得: ページテーブルのエントリには、その仮想ページが物理メモリのどこにあるかを示す「物理ページフレーム番号」が格納されています。
- 物理アドレスの生成: MMUは、取得した物理ページフレーム番号と、元の仮想アドレスの「ページ内オフセット」を組み合わせ、DRAM上の正確な位置を示す「物理アドレス」を確定させます。
この一連の変換は、プログラムの実行速度に直結するため、ナノ秒単位で高速に行われる必要があります。そのため、MMU内部にはTLB(Translation Lookaside Buffer)という高速なキャッシュ機構が組み込まれており、頻繁に使用されるページ変換情報はここに一時的に保持されます。TLBのおかげで、私たちは仮想メモリを使っていることを意識せずに、高速にアプリケーションを実行できるわけです。
ページテーブルエントリ(PTE)の重要な役割
ページテーブルの各エントリ(PTE)は、単にアドレス情報を持つだけでなく、OSがメモリを管理するために不可欠なフラグ情報を含んでいます。
- 存在ビット(Valid Bit): このビットが「0」の場合、そのページは現在物理メモリ(DRAM)上にはなく、二次記憶装置(SSDやHDD)に退避されています。この状態でのアクセスが発生すると、ページフォールトとなり、OSは退避されたページをDRAMに読み込む処理(ページイン)を開始します。
- ダーティビット(Dirty Bit): そのページの内容がCPUによって書き換えられたかどうかを示します。書き換えられていれば、OSは後で二次記憶へ書き戻す必要があると判断します。
- アクセス許可ビット: 読み取り専用、書き込み可能、実行可能といった、メモリ保護のための権限情報を定義します。
これらの詳細な管理情報があるからこそ、OSはメモリ階層の様々なレベルをまたいで、効率的かつ安全にメモリを操作できるのです。ページテーブルは
