什么是零拷贝?
什么是零拷贝?
题眼:DMA技术,减少上下文切换
使用DMA和SG-DMA技术,让内核态直接将文件从磁盘读到缓冲区然后转给网卡,减少上下文切换和数据拷贝的次数。零拷贝技术的文件传输方式相比传统文件传输的方式,减少了 2 次上下文切换和数据拷贝次数,只需要 2 次上下文切换和数据拷贝次数,就可以完成文件的传输,而且 2 次的数据拷贝过程,都不需要通过 CPU,2 次都是由 DMA 来搬运。
参考答案:
传统 IO 的工作方式,从硬盘读取数据,这个工作由CPU来执行,是一个阻塞操作。为了解决这个问题,出现了DMA技术,它其实就是加一层的思想,CPU告诉DMA我要磁盘里的哪些数据,传给谁,然后CPU就不用再管了,后续的文件读取和传输都有DMA来操作,这样就把CPU解放出来,不需要再阻塞了。这个过程中一共有四次上下文切换和拷贝,没有DMA的话,都需要CPU来参与,有了DMA之后,CPU只需要参与内核态到用户态的切换,DMA来负责内存和硬件设备的交换。这样可以节省大量的时间和资源,大大提高整体的性能。
