プロジェクトデータ - Mul_light - メモリマップ
目次
Mul_lightのメモリマップ
Mul_lightのメモリの利用状況を記した表です。
予約済みのものに関してはOS_Project_Wiki:Memory map
を参照してください。
ブートセクタ実行時
ブートセクタ:0x200 = 512B
| 開始アドレス | サイズ | 内容 |
|---|
| 0x0000 0000 | 1,280B | 0x500 | 予約 |
| 0x0000 0500 | 30,464B | 0x7700 | カーネル用予約 |
| 0x0000 7c00 | 512B | 0x200 | ブートセクタ |
| 0x0000 7e00 | 43,776B | 0x4200 | カーネル用予約 |
| 0x0000 c000 | 208KiB | 0x34000 | カーネル後半 |
| 0x0004 0000 | 64KiB | 0x10000 | ブート用スタック領域 |
| 0x0005 0000 | 64KiB | 0x10000 | GDT(8192個*8Byte)用予約 |
| 0x0006 0000 | 16KiB | 0x4000 | ブートローダ |
| 0x0006 4000 | 48KiB | 0xc000 | カーネル前半 |
| 0x0007 0000 | 64KiB | 0x10000 | パラメータ用予約 |
| 0x0008 0000 | 512KiB | 0x80000 | 予約(マシンによって、どこまで使えるかが異なる。だいたい0x0008 0000〜0x0010 0000は使わない方がいい。) |
| 1MiBの壁 |
ブートローダ実行時
ブートローダ:~0x8000 = ~32KiB
| 開始アドレス | サイズ | 内容 |
|---|
| 0x0000 0000 | 256KiB | 0x40000 | カーネル本体 |
| 0x0004 0000 | 64KiB | 0x10000 | ブート用スタック領域 |
| 0x0005 0000 | 64KiB | 0x10000 | GDT(8192個*8Byte) |
| 0x0006 0000 | 16KiB | 0x4000 | ブートローダ |
| 0x0006 4000 | 48KiB | 0xc000 | 空き |
| 0x0007 0000 | 64KiB | 0x10000 | パラメータ |
| 0x0008 0000 | 512KiB | 0x80000 | 予約(マシンによって、どこまで使えるかが異なる。だいたい0x0008 0000〜0x0010 0000は使わない方がいい。) |
| 1MiBの壁 |
カーネル実行時
カーネル:0x4 0000 = 256KiB
| 開始アドレス | サイズ | 内容 |
|---|
| 0x0000 0000 | 256KiB | 0x40000 | カーネル本体 |
| 0x0004 0000 | 64KiB | 0x10000 | 初期化タスク用スタック領域 |
| 0x0005 0000 | 64KiB | 0x10000 | GDT(8192個*8Byte) |
| 0x0006 0000 | 2KiB | 0x800 | IDT(256個*8Byte) |
| 0x0006 0800 | 62KiB | 0xf800 | 空き |
| 0x0007 0000 | 64KiB | 0x10000 | パラメータ→空き |
| 0x0008 0000 | 512KiB | 0x80000 | 予約(マシンによって、どこまで使えるかが異なる。だいたい0x0008 0000〜0x0010 0000は使わない方がいい。) |
| 1MiBの壁 |
| 0x0010 0000 | 3MiB | 0x300000 | メイン・グラフィックス・バッファ(MGB) |
| 0x0040 0000 | 3MiB | 0x300000 | スクリーン・ピクセル・マップ(SPM) |
| 0x0070 0000 | 1MiB | 0x100000 | カーネル用ヒープ領域(4byte単位) |
| 0x0080 0000 | | | ヒープ領域(Page単位) |
メイン・グラフィックス・バッファ(MGB)
裏VRAMのこと。
スクリーン・ピクセル・マップ(SPM)
スクリーンの、どのピクセルがどのウィンドウにあたるのかを配置したビットマップのようなもの。
パラメータ (0x0007 0000〜0x0008 0000:0x10000)
参考
タスク
とりあえず、難しいことを抜きにした、コンソールアプリケーション用タスク。
| 開始アドレス | サイズ | 内容 |
|---|
| 0x0000 0000 | 512B | 0x200 | TSS |
| 0x0000 0200 | 3,584B | 0xE00 | キーボード・マウスデータetc... |
| 0x0000 1000 | 28,672B | 0x7000 | スタック領域 |
よくわからんけど、こんな感じ?
| 開始アドレス | サイズ | 内容 |
|---|
| 0x0000 0000 | 2,048B | 0x800 | TSS |
| 0x0000 0800 | 2,048B | 0x800 | LDT |
| 0x0000 1000 | 可変 | コード・セグメント |
| 0x0000 1000 + Code | 可変 | データ・セグメント |
| 0x0000 1000 + Code + Data | 可変 | スタック・セグメント |
その他
| サイズ | 内容 |
|---|
| ~2KiB | ~0x800 | IDT(~256個*8Byte) |
| ~64KiB | ~0x10000 | GDT(~8192個*8Byte) |
| 4KiB | ~0x1000 | PDE(1024個*4Byte) |
| ~4MiB | ~0x400000 | PTE(~1024個*1024個*4Byte) |