“共享库文本”和“共享库数据”有什么区别?另外,共享库数据“预重定位”是什么意思?这个问题涉及到一些涉及共享库的特定于 AIX 的特性。
Andrew
问问题
442 次
2 回答
4
啊,这是一个棘手的问题。
好的,所以要回答这个问题,你必须知道一个可执行文件有两个*段:一个“文本”部分和一个“数据”部分。
“数据”段包含“不会被执行的东西”。例如,程序中的字符串(例如,字符串“Command not found”将在/bin/sh
二进制文件的数据段中)。
“文本”段包含“将被执行的东西”——机器指令。
而且,“预搬迁”......这里有一个很好的解释为什么需要搬迁:http: //people.redhat.com/drepper/textrelocs.html以及这里涉及的内容:http://en .wikipedia.org/wiki/Relocation_(computer_science)。
这有帮助吗?
*: nitpicker 注意:它有两个以上,但现在这并不重要
于 2009-03-12T20:35:33.480 回答
2
内存分为 4 段 - 代码、数据、堆栈和堆。
“共享库文本”是共享库的代码部分——实现库中功能的实际指令。
“共享库数据”是共享库的数据部分——全局变量、常量、静态内容等,在加载库时立即分配。
至于“预搬迁”图书馆,这是概念。当一个共享库被加载时,它被映射到一个共享地址空间。一个“预重定位”库是用一个“提示”构建的,它告诉操作系统应该在共享地址空间的哪个位置加载它。由于我无法理解的原因,这应该可以提高性能。
于 2009-03-12T20:36:27.503 回答