外贸网站建设ppt模板下载,请上传网站应用水印图片,建设移动网站,wordpress文章支持多形式零拷贝
什么是零拷贝
零拷贝指的是#xff0c;从一个存储区域到另一个存储区域的copy任务无需CPU参与就可完成。零拷贝的底层是 通过DMA总线技术实现的。零拷贝与具体的编程语言无关#xff0c;完全依赖于OS#xff0c;OS支持就可使用#xff0c;不支持 设置了也不起作用…零拷贝
什么是零拷贝
零拷贝指的是从一个存储区域到另一个存储区域的copy任务无需CPU参与就可完成。零拷贝的底层是 通过DMA总线技术实现的。零拷贝与具体的编程语言无关完全依赖于OSOS支持就可使用不支持 设置了也不起作用。 DMADirect Memory Access直接内存访问是一种计算机系统内部的数据传输技术需要DMA总 线硬件的体系结构的硬件支持。其整个数据传输过程是在DMA控制器下完成的。 零拷贝在计算机内部数据拷贝及网络传输中都大量使用用于减少CPU消耗和内存带宽占用减少用户 空间与内核空间的拷贝过程减少用户态与内核态间的切换次数提高系统效率提升系统性能。例如 远程服务器处理客户端浏览器的主页打开请求过程就是一个零拷贝在网络传输中的典型应用。下面全 部以该场景为例进行分析。
传统拷贝方式
站在服务器角度服务器操作系统经历了以下过程 该拷贝方式共进行了16次用户空间与内核空间的上下文切换以及4次数据拷贝其中两次拷贝存在 CPU参与。
零拷贝方式 该拷贝方式共进行了14次用户空间与内核空间的上下文切换以及3次数据拷贝但整个拷贝过程均没 有CPU的参与这就是零拷贝。
Gather Copy零拷贝
该拷贝方式是由DMA完成当然需要当前主机的DMA支持Gather Copy方式。 该方式中没有数据拷贝到socket buffer。取而代之的是只是将kernel buffer中的数据描述信息写到了socket buffer中。数据描述信息包含了两方面的信息kernel buffer中数据的地址及偏移量。该拷贝方式共进行了14次用户空间与内核空间的上下文切换以及2次数据拷贝并且整个拷贝过程均没有CPU的参与。
mmap零拷贝
mmapMemory Map存储映射。mmap零拷贝是对零拷贝的改进。当然若当前主机的DMA支持 Gather Copymmap同样可以实现Gather Copy DMA的零拷贝。 该方式与普通零拷贝的唯一区别是应用程序与内核共享了Kernel buffer。由于是共享所以应用程序 也就可以操作该buffer了。当然应用程序对于Kernel buffer的操作就会引发用户空间与内核空间的 相互切换。