linux启动期间的内存分配?

时间:2013-09-04 10:00:39

标签: linux memory-management linux-kernel

我曾尝试在谷歌和本网站上搜索此主题,但我找不到合适的答案。

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

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

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

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

  4. 如果有明确的方法或链接到这个问题的答案,我真的很感激大家的帮助。基本问题是“我应该在哪里调用”alloc_bootmem“所以它在启动时会起作用吗?”

    谢谢, Shahril

1 个答案:

答案 0 :(得分:2)

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

有关启动内存分配的更多信息,请访问:

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

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

如果您正在寻找大量的继续内存分配,您应该使用不同的分配器来查看:

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