私は Linux カーネルのことは初めてで、カーネル ローダーのメモリ レイアウトについて読んでいますが、以下の図と混同しています。
0A0000 +------------------------+
| Reserved for BIOS | Do not use. Reserved for BIOS EBDA.
09A000 +------------------------+
| Command line |
| Stack/heap | For use by the kernel real-mode code.
098000 +------------------------+
| Kernel setup | The kernel real-mode code.
090200 +------------------------+
| Kernel boot sector | The kernel legacy boot sector.
090000 +------------------------+
| Protected-mode kernel | The bulk of the kernel image.
010000 +------------------------+
| Boot loader | <- Boot sector entry point 0000:7C00
001000 +------------------------+
| Reserved for MBR/BIOS |
000800 +------------------------+
| Typically used by MBR |
000600 +------------------------+
| BIOS use only |
この図を説明するステートメントは、私にとって少し混乱します。
bzImage を使用すると、プロテクト モード カーネルが 0x100000 (「ハイ メモリ」) に再配置され、カーネル リアル モード ブロック (ブート セクター、セットアップ、およびスタック/ヒープ) が 0x10000 と下限の間の任意のアドレスに再配置可能になりました。メモリー。
最初に 0x100000 アドレスが上の図のどこにあるか??
2 つ目は、カーネル リアルモード ブロックが「0x10000 からメモリ不足の終わりまでの任意のアドレス」に再配置可能になったということは、0x10000 から 000600 までのアドレスに再配置可能だったことを意味します。
最初にカーネル モード ブロックは 0x10000 から 09A000 の間に配置されます。
一部の新しい BIOS は拡張 BIOS と呼ばれるかなり大量のメモリを割り当て始めているため、「メモリ上限」 (ブートローダーが触れるメモリ不足の最高点) をできるだけ低く保つことが望ましいデータ領域、低メモリの最上部近く」.
低メモリとは、メモリが 000600 に向かって下向きになり、高メモリが 0A0000 に向かって上向きになることを意味しますか??