关于装载时重定位,看到这样一句话
“动态链接模块被装载映射到虚拟空间后,指令部分是在多个进程之间共享的,[b]由于装载时重定位的方法需要修改指令[/b],所以没有办法做到同一份指令被多个进程共享,因为指令被重定位后对于每个进程来讲是不同的。”
共享文件的代码段,在物理内存被映射到每个进程的虚拟空间,也就是代码段是共享的,进程需要使用代码段的执行代码,只需要修改跳转地址,也就是装载时重定位。
黑体部分不太理解,修改指令,修改的是本进程的指令(可能有一些地址需要修改),而不是共享文件的指令,和共享文件不能被多个进程共享有什么关系?
查找了网上的一些说法,进程的指令被修改了(跳转地址),导致该进程指令,不能被其他进程使用?结合该问题的解决方法,使用plt,看起来像是这么理解的。但是这和共享文件有什么关系?共享文件完全还是可以使用的啊?
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课