Multiboot 1引导信息总大小



有没有一种快速可靠的方法可以找出内存中Multiboot 1引导信息的总大小?

只是澄清一下:我不是在问EBX寄存器中的值所指向的结构的大小,我是在问内存中所有信息的总大小

我目前正在开发一个x86 Multiboot 1兼容内核。该标准不能保证GRUB将这些信息放在哪里或其总大小。标准规定:

"多引导信息结构及其相关子结构可以由引导加载程序放置在内存中的任何位置(当然,为内核和引导模块保留的内存除外(。操作系统有责任避免覆盖此内存,直到使用完为止。">

在实践中,它似乎总是在最低1MB的内存中加载。到目前为止,在引导过程中,我使用最低1MB的标识映射初始化引导页面结构,以确保Multiboot信息可访问。找到这个结构的位置很简单,但我还没有找到任何关于找到准确尺寸的信息。(理想情况下不需要在整个结构中行走(。

我后来意识到,Multiboot信息结构指向的数据不能保证连续存储,并且不是GRUB加载到内存中的唯一数据。因此,如果不手动遍历该结构,就没有可靠的方法来测量该存储器的总大小或位置。

考虑到这一限制,最好的做法似乎是确保在实现分页之前,将Multiboot结构所需的所有数据复制到已知位置。

相关内容

  • 没有找到相关文章