【发布时间】:2011-02-24 20:25:44
【问题描述】:
我在 ELF 共享库中有很多代码,这些代码仅在库初始化期间使用(它从静态初始化程序中调用)。如果我把这段代码放在它自己的部分(或者它可以放在 .init 部分),我可以使用__attribute__((section(".mysection"))) 来做,有没有办法在库加载后强制这个部分被分页?
This question 是相关的,但结论是内核在内存不足时会分页出未使用的页面,因此无需显式这样做。但是,我在嵌入式环境中工作,内存非常宝贵,从磁盘(慢速 USB 闪存驱动器)中分页代码的成本很高。因此,我宁愿明确地刷新这段代码,我知道它永远不会被再次使用,而不是让内核可能决定刷新一些最终可能需要重新分页的其他代码。
我确定我记得读过一个系统调用来要求内核对某些内存区域进行分页或分页,尽管我在任何地方都找不到对此的任何引用,所以也许是我想象的。有这种事吗?
【问题讨论】:
-
madvise系统调用,特别是带有 MADV_WILLNEED/MADV_DONTNEED 参数的,是我的想法。但是,我仍然想知道是否有一种简单的方法可以强制将特定的 ELF 部分换出。
标签: linux memory-management elf