gpt4 book ai didi

linux - Linux 上的共享库 : why does the dynamic linker run in user context?

转载 作者:太空宇宙 更新时间:2023-11-04 03:50:11 25 4
gpt4 key购买 nike

阅读Ulrich Dreppers "Shared Lib Howto"我发现了一个奇怪的(据我理解)事实:使用共享库的应用程序是分两步加载的。首先,内核加载应用程序镜像,然后将动态链接器加载程序二进制文件添加到地址空间并将控制权传递给它。动态链接器加载器在用户空间中运行,据称在应用程序的时间片内运行,并拉入其余代码或将引用链接到已加载的共享对象。这就是为什么选择如此复杂的方案的想法(即限制运行时消耗)吗?

最佳答案

why such a complicated scheme was chosen?

因为它比其他替代方案简单。

特别是,它允许在不重新启动的情况下开发 GLIBC 和动态加载器,它允许多个版本的 GLIBC 加载器在同一系统上共存,并且它允许 GLIBC 与其他 libc 实现(将有自己的动态加载器)共存。

why letting the kernel load the primary image in the first place?

内核必须找到并读取主镜像才能从中提取PT_INTERP。我猜测将其保留在内存中比卸载并让解释器重新完成工作要少,而且显然也更快。

关于linux - Linux 上的共享库 : why does the dynamic linker run in user context?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26605568/

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