文案是什么意思?(什么是零拷贝?)
admin
2023-10-27 20:22:57

以名解意

零拷贝,字面意思就是零拷贝,没有数据拷贝。进一步分析,为什么没有数据副本,但是用户层进程没有副本,这个零副本不是真正的零副本。

进一步分析表明,CPU不参与数据复制,CPU和用户进程都没有数据复制,可以节省CPU的工作量,节省用户层和内核层的切换。通过DMA技术、流水线技术和内存区域映射技术,使CPU不参与数据复制,减少用户层和内核层的切换次数,从而提高程序读写性能。

以上是零拷贝的主流思路,就是尽量减少用户层和核心层的上下文切换,尽量不使用CPU拷贝,不使用用户层缓冲。其实零复制还有另外两个思路。

写时复制方案是多个进程共享一个内存空间中的数据,当一个进程需要修改数据时,将数据复制到自己进程的地址空间中;如果只是读操作,就不需要拷贝数据,也就是零拷贝。

用户层直接I/O是指磁盘数据直接拷贝到用户层缓存,而不需要内核层的数据拷贝。

应用场景

零拷贝只能在数据从磁盘流向网卡或其他设备,或者从网卡或其他设备流向磁盘,数据要多次拷贝,用户态和内核态的上下文要多次切换的应用场景下才能发挥作用。

拷贝方式

是否使用用户层缓存

CPU拷贝

DMA拷贝

上下文切换

系统调用

是否零拷贝

传统方式(读写)

2

2

读/写

存储器映射(mmap写入)

一个

2

mmap/写

发送文件

一个

2

2

发送文件

发送文件DMAGatherCopy

0

2

2

发送文件

接合

0

2

2

接合

核心逻辑

传统方式(读写)

拷贝方式

存储器映射(mmap写入)

传统方式(read+write)

发送文件

内存映射(mmap+write)

发送文件DMAGatherCopy

Sendfile

接合

sendfile+DMAGatherCopy

要理解零拷贝,关键是要理解什么是零拷贝,这涉及到硬件设备、内核层和用户层缓存数据区之间的数据拷贝,以及它们之间的数据拷贝所使用的技术,如CPU拷贝、DMA拷贝和内存区映射免拷贝。

理解了这些框架和零拷贝的真正含义,遇到任何问题都一定能解决。

相关内容

热门资讯

金花创建房间/微信金花房卡怎么... 1.微信渠道:(荣耀联盟)大厅介绍:咨询房/卡添加微信:88355042 2.微信游戏中心:打开微...
金花房间卡/金花房卡如何购买/... 金花房间卡/金花房卡如何购买/新超圣金花房卡正版如何购买新超圣是一款非常受欢迎的游戏,咨询房/卡添加...
牛牛创建房间/金花房卡批发/神... 微信游戏中心:神牛大厅房卡在哪里买打开微信,添加客服【88355042】,进入游戏中心或相关小程序,...
链接牛牛/牛牛房卡游戏代理/鸿... 鸿运大厅房卡更多详情添加微:33549083、 2、在商城页面中选择房卡选项。 3、根...
科技实测!牛牛房卡怎么获得/乐... 微信游戏中心:乐酷大厅房卡在哪里买打开微信,添加客服【88355042】,进入游戏中心或相关小程序,...