メモリマップ Edit

目次 Edit

メモリマップとは Edit

メモリの使用状況を、細かく表にしたものです。
BIOSが使用する場所(予約されている場所)などを知っておかないと意図しない動作をしてしまうかもしれませんし、OSもどのように使ったかを把握しておかないと、場所が重なってしまうこともあります。

正確なメモリマップはBIOSで調べる必要があります。
調べても、表示されない領域があったりするので、安全のために空き領域だけを使うようにするといいでしょう。

一般的なメモリマップ Edit

0x0000 0000 ~ 0x0000 04ffはBIOS用やリアルモード用であるため、プロテクトモード時は不要な領域になる。
ただし、再びリアルモードに戻ったりすると、使うことがあるかもしれない。

0x7c00~は通常、ブートセクタが読み込まれる場所。
FDDブートだと、0x7c00~0x7dffに読み込まれる。

開始アドレスサイズ説明
0x0000 0000768B0x300リアルモード用割り込みテーブル
0x0000 0300256B0x100BIOSスタック領域
0x0000 0400256B0x100BIOSデータ領域
0x0000 0500654,080B0x9FB00空き領域
640KiBの壁
0x000a 0000131,072B0x20000VRAM
0x000c 000032,767B0x8000ビデオBIOS ROM(EGA/VGA)
0x000c 800032,767B0x8000拡張BIOS
0x000d 000065,536B0x10000拡張BIOS
0x000e 000065,536B0x10000システムBIOS
0x000f 000065,536B0x10000システムBIOS
1MiBの壁
0x0001 0000可変可変空き領域
以下はSun VBでの結果なため実機では未保証
可変64KB0xFFFFACPI領域
ただし以下は実機でもあると思われる
0xFFFC00000x40000256KB予約領域

e820で調べたメモリマップ Edit

QEMU(256MiB) Edit

開始アドレスサイズ説明
0x0000 0000654,336B0x9fc00空き領域
0x0009 fc001,024B0x400予約済み
640KiBの壁
0x000a 0000294,912B0x48000不明(表示されず)
0x000e 800098,304B0x18000予約済み
1MiBの壁
0x0010 0000654,336B0x0fef0000空き領域
0x0fff 00000x10000ACPI領域
256MiB
0xfffc 0000262,144B0x40000予約済み

QEMU(512MiB) Edit

開始アドレスサイズ説明
0x0000 0000654,336B0x9fc00空き領域
0x0009 fc001,024B0x400予約済み
640KiBの壁
0x000a 0000294,912B0x48000不明(表示されず)
0x000e 800098,304B0x18000予約済み
1MiBの壁
0x0010 0000535,756,800B0x1fef0000空き領域
0x1fff 000065,536B0x10000ACPI領域
512MiB
0xfffc 0000262,144B0x40000予約済み

実機(512MiB) Edit

開始アドレスサイズ説明
0x0000 0000655,360B0xa0000空き領域
640KiBの壁
0x000a 0000327,680B0x50000不明(表示されず)
0x000f 000065,536B0x10000予約済み
1MiBの壁
0x0010 0000534,437,888B0x1fdae000空き領域
0x1fea e000335,872B0x52000予約済み
0x1ff0 00001,048,576B0x100000予約済み
512MiB
0xffb0 00005,242,880B0x500000予約済み

実機(640MiB) Edit

開始アドレスサイズ説明
0x0000 0000649,216B0x9e800空き領域
0x0009 e8006,144B0x1800予約済み
640KiBの壁
0x000a 0000802,816B0xc4000不明(表示されず)
0x000c e0008,192B0x2000予約済み
0x000d 000065,536B0x10000不明(表示されず)
0x000e 0000131,072B0x20000予約済み
1MiBの壁
0x0010 0000668,925,952B0x27df0000空き領域
0x27ef 000061,440B0xf000ACPI領域
0x27ef f0004,096B0x1000ACPI NVS領域
0x27f0 0000524,288B0x80000空き領域
0x27f8 0000524,288B0x80000予約済み
640MiB
0xff80 00004,194,304B0x400000予約済み
0xffc0 00004,194,304B0x400000予約済み

実機(2GiB) Edit

割と新しいマシンなので、すべてサイズが4KiB単位になっているのがいい感じです。
最初の1MiBまでのコンベンショナルメモリ領域が、0x8f000までしか無いのが痛い。。
メモリの後ろの方はやたらと細々していて面倒くさいです。

開始アドレスサイズ説明
0x0000 0000585,728B0x8f000空き領域
0x0008 f00069,632B0x11000予約済み
640KiBの壁
0x000a 0000262,144B0x40000不明(表示されず)
0x000e 0000131,072B0x20000予約済み
1MiBの壁
0x0010 00002,127,847,424B0x7ed46000空き領域
0x7ee4 60007,929,856B0x79000ACPI NVS領域
0x7eeb f00015,486,976B0xec5000空き領域
0x7fd8 400032,768B0x8000予約済み
0x7fd8 c000647,168B0x9e000空き領域
0x7fe2 a00020,480B0x5000予約済み
0x7fe2 f000503,808B0x7b000空き領域
0x7fea a0008,192B0x2000ACPI領域
0x7fea c000278,528B0x44000ACPI NVS領域
0x7fef 000012,288B0x3000ACPI領域
0x7fef 30004,096B0x1000空き領域
0x7fef 400045,056B0xb000ACPI領域
0x7fef f0004,096B0x1000空き領域
0x7ff0 00001,048,576B0x100000予約済み
2GiB
0xfff0 00001,048,576B0x100000予約済み

関連リンク Edit


Since 2008 July. OS Project Wiki
リロード   新規 下位ページ作成 編集 凍結 差分 添付 コピー 名前変更   ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS