【发布时间】:2020-09-04 00:32:33
【问题描述】:
我正在阅读一本教科书,上面写着:
现代系统编译共享模块的代码段,以便 它们可以加载到内存中的任何位置,而无需修改 链接器。使用这种方法,共享模块的单个副本 代码段可以被无限数量的进程共享,并且 每个进程仍将获得自己的读/写数据副本 段。
但是每个进程如何获得自己的共享模块数据段的副本?这不是冲突吗?例如共享库的数据段在内存中的地址是0x400500到0x400600,代码段的地址是0x400600到0x400700。
0x400600 到 0x400700 可以被多个进程共享,因为函数没有状态,但是如果 0x400500 到 0x400600 也被多个进程共享,任何进行修改的进程(例如对全局变量)都会影响其他进程,对吗?
【问题讨论】: