gpt4 book ai didi

linux - ELF 的代码段何时加载到内存中?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:51:41 29 4
gpt4 key购买 nike

当一个ELF格式的可执行文件在linux环境下运行时,文件的实际内容是在什么时候加载到物理内存中的?

操作系统的哪一部分对此负责?

最佳答案

LWN上有一篇关于这个的详细文章:https://lwn.net/Articles/631631/

特别是,代码由 load_elf_binary() 加载:http://lxr.free-electrons.com/source/fs/binfmt_elf.c?v=3.18#L571

该函数是从 do_execve_common() 中(间接)调用的,它当然是从 execve() 和 friend 中调用的:http://lxr.free-electrons.com/source/fs/exec.c?v=3.18#L1513

您可能已经知道,execve() 和 friend 通常在创建新进程后立即被调用(通过 fork())。因此,“创建进程”和“加载 ELF”之间几乎没有什么区别。

最后,页面错误处理程序将代码从虚拟内存加载到物理内存,页面错误处理程序由 MMU 的硬件异常调用。

关于linux - ELF 的代码段何时加载到内存中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32960533/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com