SMPまわりで遊んでみようか

tumblrから移動
なんとなくやってみた。ソースはgistに置いたお。

何をやってるかというと、メモリ上にあるCPUのデータを読んでcpu数とかを表示。何でメモリから読むかというとx86系cpuでマルチプロセッサに対応している場合、物理メモリの0xf5b30から0xffff0の間にMPに関する情報が置かれているから。通常はカーネルがこの範囲のアドレスからデータを読み出して色々処理をしていってます。なんとなく作ったのはLinuxユーザランドで動かすもの。そうすると物理メモリを直接指定するのが厳しいので/dev/memを読んでそこからデータを探します。