2010-10-14 100 views
3

在Linux中,當我們在使用共享內存的兩個或多個進程之間共享數據時,共享內存分配到哪裏?共享內存在哪裏分配?

它會在運行時成爲進程地址空間的一部分嗎?因爲進程無法訪問其地址空間之外的內存。

有人能澄清一下嗎?

回答

4

當您擁有共享內存時,該內存將被映射到共享內存的每個進程的虛擬地址空間中(不一定在每個進程中的虛擬地址相同)。虛擬內存管理器確保虛擬地址映射到相同的物理地址,以便實際共享。

+0

謝謝Adam!它會成爲進程地址空間中任何段的一部分嗎?像堆或數據段? – Teja 2010-10-14 00:55:44

0

假設系統V:一個進程需要在其進程空間內分配的內存,並通過IPC使其他人可用。分享它最常見的方式是將內存映射到其他進程的虛擬地址空間。在這種情況下,他們可以訪問內存,就好像它們是他們贏得的地址空間的一部分。