Linux上的共享库:为什么动态链接器在用户上下文中运行?

Vroomfondel

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

受雇于俄罗斯

为什么选择了这么复杂的方案?

因为它没有其他方法那么复杂。

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

为什么要让内核首先加载主映像?

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Linux上的共享库:为什么动态链接器在用户上下文中运行?

来自分类Dev

在用户代理的上下文中,U,I和N是什么意思?

来自分类Dev

AWS 访问密钥在用户上下文中意味着什么

来自分类Dev

在Linux上与GLUT共享上下文

来自分类Dev

为什么querySkuDetails需要在IO上下文中运行?

来自分类Dev

为什么编译器允许在静态上下文中创建非静态类的对象?

来自分类Dev

在Linux内核的上下文中,什么是硬件“门”?

来自分类Dev

为什么编译器不将“此”链接转换为与上下文无关的变量?

来自分类Dev

为什么Tokio返回错误“在不允许阻塞的上下文中不能删除运行时”?

来自分类Dev

什么是git上下文中的“ Maildir”?

来自分类Dev

为什么编译器会给出错误“当前上下文中不存在名称'identifier'”?

来自分类Dev

为什么两个相同但连接不同的字符串在用python调用的shell上下文中具有不同的结果?

来自分类Dev

为什么两个相同但连接不同的字符串在用python调用的shell上下文中具有不同的结果?

来自分类Dev

为什么我的数据库上下文被处置

来自分类Dev

从我的数据库上下文中基于ID删除用户

来自分类Dev

在Python上下文中什么是运行时?它由什么组成?

来自分类Dev

如何将库或前奏导入到运行GHC.runGhc的上下文中

来自分类Dev

在解释器或编译器的上下文中什么是单元格?

来自分类Dev

当应用断点时如何在当前上下文中的对象上运行代码

来自分类Dev

将非commonJS库包含到Webpack上下文中的好方法是什么?

来自分类Dev

什么是软件库和框架开发上下文中的符号

来自分类Dev

在以下代码的上下文中,为什么“ cout << c”是合法的而“ c =“ x””是非法的?

来自分类Dev

为什么匿名类在静态上下文中有效

来自分类Dev

为什么在静态上下文中进行数组初始化?

来自分类Dev

为什么此代码会引发“在无效上下文中无用的匿名哈希({})”警告。

来自分类Dev

为什么列表上下文中的替换不返回捕获列表?

来自分类Dev

为什么“包含”在全局上下文中的行为不同于在类中的行为?

来自分类Dev

为什么此svg在不同的上下文中呈现不同的外观?

来自分类Dev

为什么在Windows Form Hub上下文中Context.User.Identity.Name为null?

Related 相关文章

  1. 1

    Linux上的共享库:为什么动态链接器在用户上下文中运行?

  2. 2

    在用户代理的上下文中,U,I和N是什么意思?

  3. 3

    AWS 访问密钥在用户上下文中意味着什么

  4. 4

    在Linux上与GLUT共享上下文

  5. 5

    为什么querySkuDetails需要在IO上下文中运行?

  6. 6

    为什么编译器允许在静态上下文中创建非静态类的对象?

  7. 7

    在Linux内核的上下文中,什么是硬件“门”?

  8. 8

    为什么编译器不将“此”链接转换为与上下文无关的变量?

  9. 9

    为什么Tokio返回错误“在不允许阻塞的上下文中不能删除运行时”?

  10. 10

    什么是git上下文中的“ Maildir”?

  11. 11

    为什么编译器会给出错误“当前上下文中不存在名称'identifier'”?

  12. 12

    为什么两个相同但连接不同的字符串在用python调用的shell上下文中具有不同的结果?

  13. 13

    为什么两个相同但连接不同的字符串在用python调用的shell上下文中具有不同的结果?

  14. 14

    为什么我的数据库上下文被处置

  15. 15

    从我的数据库上下文中基于ID删除用户

  16. 16

    在Python上下文中什么是运行时?它由什么组成?

  17. 17

    如何将库或前奏导入到运行GHC.runGhc的上下文中

  18. 18

    在解释器或编译器的上下文中什么是单元格?

  19. 19

    当应用断点时如何在当前上下文中的对象上运行代码

  20. 20

    将非commonJS库包含到Webpack上下文中的好方法是什么?

  21. 21

    什么是软件库和框架开发上下文中的符号

  22. 22

    在以下代码的上下文中,为什么“ cout << c”是合法的而“ c =“ x””是非法的?

  23. 23

    为什么匿名类在静态上下文中有效

  24. 24

    为什么在静态上下文中进行数组初始化?

  25. 25

    为什么此代码会引发“在无效上下文中无用的匿名哈希({})”警告。

  26. 26

    为什么列表上下文中的替换不返回捕获列表?

  27. 27

    为什么“包含”在全局上下文中的行为不同于在类中的行为?

  28. 28

    为什么此svg在不同的上下文中呈现不同的外观?

  29. 29

    为什么在Windows Form Hub上下文中Context.User.Identity.Name为null?

热门标签

归档