可以想象,动态链接模块被装载映射至虚拟空间后,指令部分是在多个进程之间共享的,由于装载时重定位的方法需要修改指令,所以没有办法做到同一份指令被多个进程共享,因为指令被重定位后对于每个进程来讲是不同的。...我们上面的情况中没有包含定义在模块内部的全局变量的情况。可能你的第一反应就是,这不是很简单吗?跟模块内部的静态变量一样处理不就可以了吗?...有一种很特殊的情况是,当一个模块引用了一个定义在共享对象的全局变量的时候,比如一个共享对象定义了一个全局变量 global,而模块 module c中是这么引用的:
extern int global;...Q&A
Q:如果一个共享对象 lib.so中定义了一个全局变量G,而进程A和进程B都使用了lib.so,那么当进程A改变这个全局变量G的值时,进程B中的G会受到影响吗?
A:不会。...实际上这两种需求都是有相应的解决方法的,多进程共享全局变量又被叫做“共享数据段”,在介绍 Windows DLL的时候会碰到它。