ページサイズは、コンピュータシステムがメモリを管理する際の基本単位です。この概念は、仮想メモリと物理メモリの対応付けや効率的なメモリ管理において重要な役割を果たします。
目次
ページサイズの概要
1. 仮想メモリと物理メモリ
- 仮想メモリ: プログラムが利用する抽象化されたアドレス空間。
- 物理メモリ: 実際のRAMやストレージ。
仮想メモリと物理メモリを効率的に対応付けるため、メモリ空間は固定サイズのページに分割されます。各ページには、仮想メモリ上のページ番号と物理メモリ上のフレーム番号が関連付けられます。
2. 固定サイズの理由
ページのサイズが固定であることで、以下の利点があります:
- メモリ管理の簡略化(割り当て、解放、再利用が容易)。
- ページテーブル構造が単純化される。
一般的なページサイズ
1. 典型的なサイズ
- 通常のシステム: 4KB (4096バイト)
- 高性能システム: 2MB または 1GB の大ページ (Huge Pages) をサポート。
2. 例: システムごとのページサイズ
- Linux (一般的な環境): 4KB
- RedPitaya: 4KB
- macOS (M1/M2): 16KB
これらの違いは、システム設計やアプリケーション要件に基づいています。
ページサイズの役割
1. メモリ管理の効率化
仮想アドレス空間をページ単位で区切り、必要なページだけを物理メモリに割り当てます。不要なページはディスクにスワップされることもあります。
2. メモリ保護
各ページにアクセス権限を設定することで、異常なメモリアクセスやセキュリティリスクを防ぎます。
3. キャッシュ効率
CPUキャッシュやTLB (Translation Lookaside Buffer) において、ページサイズがキャッシュ効率に影響を与えます。
ページサイズの影響
1. ページサイズが小さい場合
- メリット: メモリの細かい管理が可能。
- デメリット: ページ数が増加し、ページテーブルが大きくなる。TLBミスが多発する可能性。
2. ページサイズが大きい場合
- メリット: ページテーブルのエントリが減少し、管理コストが低下。
- デメリット: 小さなデータで余剰メモリが発生する(内部断片化)。
Linuxでの確認方法
1. ページサイズを確認
getconf PAGESIZE
例: 4096
(4KB)
2. 大ページの確認
cat /proc/meminfo | grep HugePages
大ページの設定状況を確認できます。
ページサイズの設定が必要なケース
- 組み込みシステム: メモリリソースが限られている場合。
- データベースシステム: 大きなデータブロックを扱う際に、TLB効率を考慮してページサイズを変更。
- ハイパフォーマンスコンピューティング: 高速なデータ転送やキャッシュ効率を重視。
まとめ
ページサイズは、メモリ管理の基本単位として、システム設計やパフォーマンスに大きな影響を与える重要な要素です。システムに応じたページサイズの理解と設定は、効率的なメモリ利用や性能最適化に役立ちます。
特に、組み込みシステムや特殊なアプリケーションでは、ページサイズの知識が直接的に開発効率や製品品質に結びつきます。