共享内存在主机操作系统和客户操作系统之间不起作用,但 Unix 域套接字(特别是 udp)可以在两者之间进行通信,这是真的吗?
如有深入的解释,将不胜感激,谢谢!
答案1
一般来说,Unix 域套接字无法在主机操作系统和客户操作系统之间进行通信。
Unix 域套接字(例如命名管道)绑定到操作系统内核。如果在主机和来宾中打开相同的 Unix Domain Socket 文件节点,您将获得两个不同的虚拟网络连接。一份在主机内核中,一份在客户内核中。它们是完全独立的,不能相互通信。
如果主机操作系统和来宾操作系统共享相同的内核,则这不适用,例如,当使用 Linux 命名空间/容器而不是真实的虚拟化。然后就可以使用 Unix Domain Sockets 在系统之间进行通信。
对于两个不同操作系统内核之间的通信,您需要使用真实的网络协议(例如 IPv4/IPv6)或特定于所使用的虚拟化软件的措施。