库初始化后从RAM刷新ELF部分

时间:2010-05-27 20:01:41

标签: linux memory-management elf

我在ELF共享库中有很多代码,只在库初始化期间使用它(它是从静态初始化程序调用的)。如果我把这段代码放在它自己的部分(或者它可以放在.init部分中),我可以使用__attribute__((section(".mysection")))来执行,有没有办法在库加载后强制将该部分分页?

This question是相关的,但结论是内核会在内存不足时分页出未使用的页面,所以没有必要明确地这样做。但是,我正在一个内存非常宝贵的嵌入式环境中工作,而来自磁盘(慢速USB闪存驱动器)的代码分页成本很高。因此,我宁愿显式刷新这段代码,我知道这些代码永远不会被再次使用,而不是内核可能会决定刷新其他可能最终需要重新分页的代码。

我确定我记得读过一个系统调用来要求内核进出某些内存区域,虽然我在任何地方找不到任何引用,所以也许我想象它。这样的事情存在吗?

1 个答案:

答案 0 :(得分:2)

查找有关精灵叠加层的文档。安排你的代码,使你有一个覆盖初始化,另一个用于处理。您可能还想查看关闭的叠加层。在调用下一个叠加层时,应替换叠加层中的代码。