管道和插座 - “消息传递”或“共享内存”?

时间:2010-02-24 18:04:26

标签: pipe

好的,这是一个愚蠢的问题......

管道,FIFO和套接字共享内存消息传递 ..?

起初我以为它们是共享内存,因为管道使用read()和write(),但现在我只是完全糊涂了。从技术上讲,“消息”存储在内核的地址空间中,所以它是一条消息还是存储的内存?我在几个小时内参加了OS的简介考试,我只需要清理它。提前谢谢!

2 个答案:

答案 0 :(得分:5)

消息传递,因为它们需要参与双方,例如插座的发送方和接收方。它们可以使用共享内存实现,但通信模式是消息传递

答案 1 :(得分:0)

这是消息传递。您可以指定一个缓冲区来写入套接字缓冲区,并使用getTxAvailable()或其他方法预先知道它有多少可用空间。它不是真正的共享内存,因为它执行缓冲区blit操作来帮助封装套接字。如果你在谈论客户端上的套接字到服务器上的套接字,那也是消息传递。像Java直接缓冲区或文件映射内存这样的东西是共享内存。