首页 > 其他 > 详细

总是想不明白的零拷贝

时间:2020-01-20 18:30:13      阅读:65      评论:0      收藏:0      [点我收藏+]

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

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

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

而对于零拷贝:

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

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

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

总是想不明白的零拷贝

原文:https://www.cnblogs.com/allenwas3/p/12218522.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!