Memory管理

32bit環境で扱えるMemは最大4GBだよん、という話はおぼろげながら知っていたが、原理をよく知らなかったので色々調べてみた。

アドレスとメモリの関係?

  • 1つのアドレスに1byteのデータを格納する
  • 32bitで表現できる範囲は0x00000000〜0xFFFFFFFF(16進数で)
  • よって、2^32 = 2 * 2 * (2^30) = 4 * (1024^3) = 4Gbyteが理論上の最大値

4GB以上積んだCentOSを見たことあるんだが...

smpやhugememカーネルはPAE(Physical Address Extension)に対応しているらしい。
PAEを使うことで、4GB以上の物理メモリを扱えるようになる

確認コマンド
uname -a
cat /proc/meminfo

ただし、個々のプロセスが扱えるのは変わらず4GBまで。
詳しい仕組みはよく分からない。。機会があったら勉強しようと思う。