首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对内核加载器的x86内存布局感到困惑

对内核加载器的x86内存布局感到困惑
EN

Stack Overflow用户
提问于 2013-04-09 19:19:29
回答 1查看 760关注 0票数 0

我是Linux内核的新手,正在阅读关于内核加载器的内存布局的文章,但对下面的示意图感到困惑

代码语言:javascript
复制
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之间的地址?

最初,内核模式块被放置在0x10000到09A000之间。

由于一些较新的BIOSes已经开始分配一些相当大的内存,称为扩展的基本输入输出系统数据区,接近低内存的顶部,所以希望尽可能地保持“内存上限”--启动加载程序触及的低内存中的最高点。

当它说低内存意味着内存下降到000600,高内存上升到0A0000??

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-09 19:39:23

现在第一件事是0x100000地址在上面的图表中是哪里??

0x100000不在图表上,因为只有第一兆字节是特殊的。超过这一点,物理内存是连续的,至少直到15-16MB为止。

的第二件事是,当它说内核实数模式块被重新定位到“0x10000和内存不足的末尾之间的任何地址”时,意味着它被重新定位到0x10000到000600之间的地址?

实模式代码可以位于大约1MB以下的任何地方,结束可能就在那里附近,在0x9A000或EBDA开始的任何地方。

说低内存意味着内存下降到000600,高内存上升到0A0000??

你可以在图表上看到它,从0xA0000往下到0。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15900456

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档