2013-04-09 55 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