内核 - 引导地址。为什么?

kernel - booting address. Why?

上下文:

阅读内核如何启动。

我在那个页面上: http://www.linuxjournal.com/article/2239

它说内核在 0x10000 加载。

问题:

为什么是这个地址?

从 0x00007E00 到 0x0007FFFF 有一个 480.5 KiB 的区域,保证有可供操作系统使用的空闲 RAM。 重要的是要知道 not all physical addresses are free, usable RAM。有些是为BIOS数据保留的,用作显存,或其他原因。

廉价的 BIOS 和硬件忽视标准或尝试进行巧妙的黑客攻击但最终导致破坏的情况并不少见。这个内存区域是安全的,不受所有恶作剧的影响,它是加载数据的好地方,而且确实看起来运行良好。

您可能知道,引导扇区通常位于 0x00007C00 到 0x00007DFF,正如您的文章所提到的,Linux 将该扇区重新定位到 0x00090000,然后从 0x00010000 开始加载内核的其余部分。这是一个很好的位置,因为它是保证可以免费使用的低内存中最大的(几乎是半个 MiB)RAM 块。