6

我试图在谷歌和这个网站上搜索这个主题,但我找不到正确的答案。

我试图在 Linux 启动过程中在一个设定的物理地址分配一个大的连续内存块(几 MB)。但我仍然不清楚我应该把我的“alloc_bootmem”函数放在哪里。我在 ARM 处理器上运行 Linux。

  1. AFAIK,有一种方法可以创建一个包含对“alloc_bootmem”调用的驱动程序,然后将该驱动程序直接编译到内核中。

  2. 另一种方法是在 Linux 内核源代码的某处添加“alloc_bootmem”。

  3. 我认为存在的最后一种方法是创建一个像 boot.rc?(不确定)这样的设置文件,以便在引导 Linux 期间保留我想要分配的内存。

如果有明确的方法或链接到这个问题的答案,我真的很感谢大家的帮助。基本问题是“我应该在哪里调用“alloc_bootmem”,这样它才能在引导期间工作?”

谢谢,沙里尔

4

1 回答 1

2

看看:http ://lwn.net/Kernel/LDD3/第 8 章,它解释了早期启动阶段的内存分配。

有关引导内存分配的更多信息,请参见此处:

https://www.kernel.org/doc/gorman/html/understand/understand022.html

此功能用于在系统启动期间分配大内存块,它使用物理内存而不是虚拟内存。MMU启动并运行后,无法访问内存AFAIK

如果您正在寻找一个大的连续内存分配,您可能应该使用不同的分配器看看:

http://lwn.net/Articles/396702/

于 2013-09-04T11:06:58.377 回答