2012-11-12 250 views

回答

3

SHM適用於多個進程中的IPC。在現代操作系統中,每個進程都無法看到彼此的內存空間。使用shmget()的公共密鑰獲取共享內存,並使用shmat()將共享內存頁映射到每個進程內的本地內存地址。映射的共享內存地址可能會因不同的內存使用情況和共享庫加載到每個進程空間而有所不同。 SHM鍵,尺寸是預定義的,並在這些過程中固定。

對於線程的內存,我們可能不會將其稱爲共享內存,因爲線程全部在單個進程內存空間尋址中。他們可以在同一個進程空間中看到和讀寫。

2

老實說,不是很多。在Linux上,沒有OS級別的線程。一個進程,一個線程。所以,當你使用pthreads時,你實際上使用了多個進程,除了線程特定的存儲區域外,它們共享所有的內存。但是,在不同的UNIX上,如OSX,情況可能並非如此。但是,您可以親自看到這一點,您可以製作一個簡單的pthreads進程並對其進行背景處理,然後在shell提示符處鍵入ps