0

私は 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 に向かって上向きになることを意味しますか??

4

1 に答える 1