零拷贝

传统IO存在的问题在 Linux 系统中,传统的访问方式是通过 write() 和 read() 两个系统调用实现的,通过 read() 函数读取文件到到缓存区中,然后通过 write()方法把缓存中的数据输出到网络端口,伪代码如下: read(file_fd, tmp_buf, len); write(socket_fd, tmp_buf, len); 下图分别对应传统 I/O 操作的数据...

如何完成一次IO

什么是IO学术的说 I/O 是信息处理系统(计算机)与外界(人或信息处理系统)间的通信。如计算机,即 CPU 访问任何寄存器和 Cache 等封装以外的数据资源都可当成 I/O ,包括且不限于内存,磁盘,显卡。 软件开发中的 I/O 则常指磁盘、网络 IO Unix 系统下,不论是标准输入还是借助套接字接受网络输入,都有两个步骤: 等待数据准备好(Waiting for the data ...

系统调用 mmap

概述将磁盘文件映射到进程的虚拟地址空间, 通过对这段内存的读取和修改,来实现对文件的读取和修改,而不需要再调用read,write等操作。但需注意,直接对该段内存写时不会写入超过当前文件大小的内容。 当使用mmap映射文件到进程后,就可以直接操作这段虚拟地址进行文件的读写等操作,不必再调用read,write等系统调用。但需注意,直接对该段内存写时不会写入超过当前文件大小的内容。 采用共享内...