2014-09-18 74 views
1

我正在通過linux進程,我有以下疑問。爲什麼2個相同文件的linux進程不能共享文本段?

如果我從不同shell執行兩次相同的程序,將創建2個進程。我始終認爲文本段將由這兩個進程共享。但是一些網頁建議文本段不會在進程間共享。任何人都可以讓我知道爲什麼它不能在不同的過程之間共享?

+1

@shekharsuman:我很難共同把你的評論與問的問題聯繫起來:) – kadina 2014-09-18 21:09:07

+0

@kadina謝謝,我以爲這只是我。 – 2014-09-18 21:43:09

+0

@ kadina - 離開那,至少你得到了你想要的! – 2014-09-19 13:47:27

回答

2

在像Linux和Windows這樣的現代操作系統中,按照定義,所有進程都被關閉到自己的沙箱中。共享庫(so/dll)由操作系統進行重複數據刪除,但它們只共享代碼,沒有任何存儲內存。當一個進程嘗試訪問它自己的進程空間之外的內存時,CPU的MMU(內存管理單元)部分將生成一個硬信號,如果沒有被捕獲或明確處理,該信號將終止進程。在Linux中,這被稱爲「段錯誤」或段錯誤,在Windows中,它是「訪問違規」。

要建立進程間通信(IPC),程序必須通過同步對象和方法(如匿名/命名管道,內存映射文件,信號,信號量等)主動發起此操作,具體取決於操作系統。

相關問題