2010-02-24 51 views
2

好吧,這是一個愚蠢的問題...管道和套接字 - 「消息傳遞」還是「共享內存」?

是管道,FIFO和套接字共享內存消息傳遞 ..?

起初我以爲他們是共享內存,因爲管道使用read()和write(),但現在我完全混淆了。從技術上講,「消息」存儲在內核的地址空間,所以它是一個消息或存儲內存?我有幾個小時的操作系統介紹考試,我只需要清理一下。提前致謝!

回答

5

消息傳遞,因爲它們需要雙方參與,發件人和接收方例如套接字。它們可以使用共享內存來實現,但通信模式是消息傳遞

+0

+1:「共享緩衝區」的存在與否根本沒有關聯 - 這是一個實現細節。一個FIFO當然可以在沒有共享緩衝區的情況下工作 - 它會很慢,但是它會工作。另一方面,共享內存不能在沒有共享內存的情況下工作。共享內存不是實現細節,而是提供的功能。 – 2010-02-24 18:14:53

0

它是消息傳遞。你可以指定一個緩衝區來寫入套接字緩衝區,並且使用getTxAvailable()或其他方法事先知道它有多少空間可用。它不是真正的共享內存,因爲它執行緩衝區溢出操作來幫助封裝套接字。如果你正在談論客戶端上的套接字到服務器上的套接字,那也是消息傳遞。像Java直接緩衝區或文件映射內存一樣是共享內存。

相關問題