内存分配在Linux启动?

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

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

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

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

  3. 我认为存在的最后一个方法是创build一个像boot.rc?(不确定)的设置文件,以便在启动时Linux将保留我想分配的内存。

如果有一个明确的方式或链接到这个问题的答案,我真的很感激大家的帮助。 基本的问题是“我应该在哪里调用”alloc_bootmem“,这样在启动过程中才能工作?

谢谢Shahril

看看http://lwn.net/coreel/LDD3/第8章,它解释了在早期引导阶段的内存分配。

有关启动内存分配的更多信息可以在这里找到:

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

此功能用于在系统启动过程中分配较大的内存块,并使用物理内存而不是虚拟内存。 MMU启动并运行后,没有办法访问内存AFAIK

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

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