登录

linux - 进程之间是如何共享代码段的?

如果一个程序运行了两个实例,那么有两个进程,这两个进程应该共享代码吧。
但是网上虚拟地址空间的布局中,每个进程都有代码段。那么进程是怎么共享代码的?难道是后来产生的进程的代码段指向前面产生进程的代码段?

# Linux
高洛峰高洛峰2146 天前543 次浏览

全部回复(1) 我要回复

  • 巴扎黑

    巴扎黑2017-04-17 14:44:13

    如果一个程序运行了两个实例,很遗憾,这两个程序的代码并不会共享,因为程序代码在程序运行时就被装载到内存,第二个程序再启动时,系统没法判断也不会判断这个程序是否还是原来的程序(如果程序被更新或更改),所以仍然会把程序代码重新加载到内存的另一块区域。

    代码的共享体现应该是链接库中,特别是动态链接库中。因为库被设计成动态链接的,所以程序可以在运行后再确定代码所在的内存地址,这也就能实现多个程序调用同一块代码了。

    回复
    0
  • 取消回复发送