代码之家  ›  专栏  ›  技术社区  ›  jchl

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

  •  8
  • jchl  · 技术社区  · 14 年前

    我在一个ELF共享库中有很多代码只在库初始化时使用(它是从静态初始化器调用的)。如果我把这段代码放在它自己的部分(或者它可以放在.init部分),我可以使用 __attribute__((section(".mysection")))

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

    我肯定记得我读过一篇关于系统调用的文章,它要求内核对内存的某些区域进行分页,尽管我在任何地方都找不到任何引用,所以可能是我想象出来的。这样的事情存在吗?

    1 回复  |  直到 7 年前
        1
  •  2
  •   BillThor    14 年前

    查找elf覆盖的文档。安排你的代码,使你有一个覆盖初始化,另一个处理。您可能还需要查看关闭的覆盖。当调用下一个覆盖时,应该替换覆盖中的代码。