Zero-Copy
假定我们需要复制一个文件的内容到另一个文件去,使用JAVA我们可能使用如下代码
|
|
即先从文件读取内容然后在写入到另一个文集中。在这个任务中会产生如下操作;
- 读操作 此处会出现两次复制操作和两次context switching
- DMA从disk复制数据至read buffer
- 从read buffer复制数据到application buffer
- 写操作 此处会出现两次复制操作和两次context switching
- 从application buffer复制数据到write buffer
- DMA从write buffer复制数据至disk
为了解决上面多次的数据复制和context切换,引入了Zero Copy,直接在kernel context 下我们从read buffer复制数据到write buffer.