2013-04-09 28 views
0

我是新來的Linux內核的東西,是閱讀內核加載程序的內存佈局,但混淆如下圖從內核加載器的x86內存佈局困惑

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的地址在上面的圖中?

第二件事是當它的內核實模式塊被重新定位爲「0x10000和低內存結束之間的任何地址」意味着它可重定位到0x10000到000600之間的地址?

內部kernle模式塊位於0x10000到09A000之間。

「由於一些較新的BIOS已經開始分配一些相當大量的內存,所以希望保持」內存上限「(由引導加載程序觸及的低內存中的最高點)儘可能低,稱爲擴展BIOS數據區,靠近低端內存「。

當它說低內存意味着內存下降到000600和高內存上升到0A0000?

+1

參見[這裏](http://wiki.osdev.org/Memory_Map_%28x86%29#.22Low.22_memory_.28.3 C_1_MiB.29)瞭解什麼是低內存。此外,地址0x000000將是低端內存的開始,因此低端內存的結尾意味着更大的地址。 – Shahbaz 2013-04-09 11:41:46

+0

謝謝Shahbaz,你的評論讓我的照片更加清晰。 – 2013-04-09 12:00:15

回答

1

現在第一件東西是0x100000地址在上面的圖中?

0x100000不在圖上,因爲只有第一兆字節是特殊的。除此之外,物理內存至少在15-16MB點之間是連續的。

第二件事是它的內核說實模式塊做重定位到「的0x10000和低內存端之間的任何地址」的意思是重定位爲0x10000之間來解決,以000600什麼時候?

實模式代碼可以在大約1 MB以下的任何地方生活,並且最終可能在那裏,在0x9A000或任何EBDA開始的地方。

當它說低內存意味着內存下降到000600和高內存上升到0A0000?

你有它在圖上,從0xA0000向下,指向0

+0

感謝Alexey的迴應,說實模式代碼可以放在09A000以下的任何位置,並且保護模式內核必須定位到高位內存(0x100000),這個內存位於090000和010000之間。 – 2013-04-09 11:55:01

+1

是的,實模式代碼不能超過這一點。內核的保護模式部分首先加載到1MB以下,然後移動到1MB以上,因爲它使用僅在實模式下工作的BIOS I/O函數加載。理論上,你可以通過小部分的方式加載內核,並通過切換模式複製到1MB以上(真正的<->保護),但看起來它不是實踐中正在做的事情。 – 2013-04-09 12:06:34

+0

還有一點希望得到證實,給定圖中的最高地址0A0000低於最大1MB地址空間。 – 2013-04-09 12:51:34