总是想不明白的零拷贝

蓝咒 提交于 2020-01-20 17:48:24

linux 分用户态和内核态,两者权限不一样,逻辑地址空间不一样

以 write 为例,用户程序可能是把数据写入了自己的缓冲区,然后把用户进程缓冲区的数据拷入内核缓冲区,再刷到磁盘

read 则是,把内核缓冲区的数据拷入用户进程缓冲区,再从用户进程缓冲区取出数据

而对于零拷贝:

mmap 针对文件 IO,我理解用户进程不再使用自己的缓冲区了,通过 mmap 的映射,它可以直接操作内核态的 page cache

sendFile 针对网络 IO,用户进程也是不再使用自己的缓冲区了,直接把数据写入内核态的 socket 缓冲区中

所以,总结就是不再使用用户进程的缓冲区

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!