相关疑难解决方法(0)

共享库如何被不同进程共享?

我阅读了一些使用 -fPIC 参数编译共享库的文档,.so 的 .text 序列将在进程 fork 的动态链接阶段共享(例如,进程会将 .so 映射到相同的物理地址)

我对谁(内核或 ld.so )以及如何实现这一点感兴趣?也许我应该跟踪代码,但我不知道从哪里开始。

尽管如此,我还是尝试验证该声明。
我决定检查 libc.so 中的 printf 之类的函数地址,以便所有 c 程序都将链接。我得到了进程的printf虚拟地址,需要得到物理地址。尝试编写内核模块并将地址值传递给内核,然后调用 virt_to_phys。但它不起作用,因为 virt_to_phys 仅适用于 kmalloc 地址。

因此,进程页表查找可能是查找虚拟地址到物理地址的解决方案。有没有办法做页表查看?或者其他方式可以适应验证实验?

提前致谢!

linux linux-kernel

2
推荐指数
1
解决办法
4002
查看次数

标签 统计

linux ×1

linux-kernel ×1