首頁  >  問答  >  主體

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

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

高洛峰高洛峰2742 天前812

全部回覆(1)我來回復

  • 巴扎黑

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

    如果一個程式運行了兩個實例,很遺憾,這兩個程式的程式碼並不會共享,因為程式碼在程式執行時就被裝載到內存,第二個程式再啟動時,系統沒法判斷也不會判斷這個程式是否還是原來的程式(如果程式被更新或更改),所以仍然會把程式碼重新載入到記憶體的另一塊區域。

    程式碼的共享體現應該是链接库中,特別是动态链接库中。因為函式庫被設計成動態連結的,所以程式可以在運行後再確定程式碼所在的記憶體位址,這也就能實現多個程式呼叫同一塊程式碼了。

    回覆
    0
  • 取消回覆