套接字IO是否涉及磁盘IO?

Kaa*_*aan 13 sockets linux io file

如果一个进程通过套接字将数据发送到同一台机器上的另一个进程,那么在传输过程中磁盘读/写的可能性有多大?似乎有一个套接字文件类型,如果有空闲内存,这些是否保证在内存中?

cod*_*eim 10

不是直接的.TCP/UDP网络套接字,localhost或UNIX域套接字将在内存中运行.UNIX域套接字通常是使用模块进入内核空间之外的最快选择.

localhost管道上的套接字几乎就像用户空间和内核空间之间的几个memcpy一样简单.在TCP情况下,您有堆栈开销.

文件和套接字共享描述符表的内核抽象,但这并不意味着实际文件.

当然,由于您的事务,数据库可能会触发对日志的一些写入.


Ben*_*igt 7

在POSIX模型以及许多其他内核中,文件不仅存在于磁盘中.相反,每个设备都由"特殊文件"表示.它们存在于目录或某种命名空间中,但访问它们不是磁盘访问,即使它们放在磁盘上的目录中也是如此.

如果您有内存压力,那么您的某些数据缓冲区可能会被换出.但这与设备的"文件"性质无关.它只是将磁盘用作额外的RAM.

所以"是的,套接字I/O是文件I/O,但不是磁盘读/写."