热点
深度学习驱动点评闭环:UI测试创业路,reasoning_content:我们要求以UI测试工程师的口吻,写一个与技术、科技相关,关于[深度学习驱动点评闭环:创业成功的创新路径]的标题需要简短精炼,字数30字以内直接输出标题,不要加说明nn思考:UI测试工程师的口吻,可以突出测试、质量、用户体验等角度结合深度学习驱动点评闭环:创业成功的创新路径,核心是深度学习技术驱动用户点评的闭环,从而帮助创业成功可以写成类似UI测试视角:深度学习闭环驱动创业成功或深度学习点评闭环:UI测试工程师的技术创业路径等但要注意字数尝试几个:nn- 深度学习闭环,UI测试赋能创业成功(13字)n- UI测试工程师:深度学习驱动点评闭环创业(16字)n- 深度学习+点评闭环:UI测试的创业创新(15字)n- 用深度学习闭环点评,UI测试驱动创业(14字)n- UI测试视角:深度学习闭环点评创业路径(16字)nn最简洁且符合要求:可能需要包含深度学习驱动点评闭环这个核心短语例如:深度学习驱动点评闭环:UI测试创业路径(16字)或者更精炼:深度学习闭环点评,UI测试创业(12字)但少了驱动nn确保直接输出我选一个:深度学习驱动点评闭环:UI测试创业创新路径(17字)但创新路径有点重复或者:深度学习闭环点评:UI测试技术创业路(16字)最终输出一个
16 9 月 2026, 周三

应用程序要读取磁盘数据,调用read()函数从而实现用户态切换内核态,这是第1次状态切换;

DMA控制器将数据从磁盘拷贝到内核缓冲区,这是第1次DMA拷贝;

CPU将数据从内核缓冲区复制到用户缓冲区,这是第1次CPU拷贝;

CPU完成拷贝之后,read()函数返回实现用户态切换用户态,这是第2次状态切换;

写数据过程:

应用程序要向网卡写数据,调用write()函数实现用户态切换内核态,这是第1次切换;

CPU将用户缓冲区数据拷贝到内核缓冲区,这是第1次CPU拷贝;

DMA控制器将数据从内核缓冲区复制到socket缓冲区,这是第1次DMA拷贝;

完成拷贝之后,write()函数返回实现内核态切换用户态,这是第2次切换;

综上所述:

读过程涉及2次空间切换、1次DMA拷贝、1次CPU拷贝;

写过程涉及2次空间切换、1次DMA拷贝、1次CPU拷贝;

可见传统模式下,涉及多次空间切换和数据冗余拷贝,效率并不高,接下来就该零拷贝技术出场了。

 零拷贝技术

出现原因

我们可以看到,如果应用程序不对数据做修改,从内核缓冲区到用户缓冲区,再从用户缓冲区到内核缓冲区。两次数据拷贝都需要CPU的参与,并且涉及用户态与内核态的多次切换,加重了CPU负担。

我们需要降低冗余数据拷贝、解放CPU,这也就是零拷贝Zero-Copy技术。

解决思路

目前来看,零拷贝技术的几个实现手段包括:mmap+write、sendfile、sendfile+DMA收集、splice等。

mmap是Linux提供的一种内存映射文件的机制,它实现了将内核中读缓冲区地址与用户空间缓冲区地址进行映射,从而实现内核缓冲区与用户缓冲区的共享。

这样就减少了一次用户态和内核态的CPU拷贝,但是在内核空间内仍然有一次CPU拷贝。

分析|零拷贝Zero-Copy技术大公开

dawei

【声明】:毕节站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

您错过了