当前位置: 首页 > news >正文

零拷贝 详述

一句话:零拷贝只做一件事——**把数据从“一个地方”搬到“另一个地方”,但**  
**1. 不让 CPU 亲自搬运**(省 CPU)  
**2. 不让数据绕到用户空间兜一圈**(省内存、省上下文切换)  

具体能干的活儿其实就三类,对应三类“地方”:

1. **文件 → Socket**(最典型)  
   场景:Web 服务器、Kafka Broker、Nginx 把磁盘上的静态文件直接发网卡。  
   效果:  
   - 磁盘 → 内核页缓存 → NIC,全程 CPU 只下指令,不搬数据。  
   - 传统 read+write 要 4 次拷贝、2 次系统调用;sendfile/transferTo 只剩 2 次拷贝、1 次系统调用。

2. **Socket → Socket**(管道转发)  
   场景:代理、负载均衡、Kafka 跨 Broker 副本同步。  
   效果:  
   - NIC → 内核 → NIC,CPU 几乎不碰数据。  
   - splice/tee 系统调用可做到真正的“零”拷贝,Java 需 JNI。

3. **文件 → 文件**(磁盘克隆)  
   场景:备份、快照、容器镜像层 dedup。  
   效果:  
   - copy_file_range 让内核在同一文件系统内做“引用计数”克隆,不写实际数据块。

一句话总结  
**零拷贝不是“加速算法”,而是“省掉不必要的搬运”,最终体现为:更高吞吐、更低 CPU、更低延迟。**

那如果Java写内容到文件 或者读文件内容  零拷贝能干吗?不能。
http://www.dtcms.com/a/301764.html

相关文章:

  • Day4.AndroidAudio初始化
  • Linux学习篇11——Linux软件包管理利器:RPM与YUM详解与实战指南,包含如何配置失效的YUM镜像地址
  • 【RH134 问答题】第 2 章 调度未来任务
  • 第1章 AB实验的基本原理和应用
  • 任务提醒工具怎么选?对比16款热门软件
  • Valgrind Helgrind 工具全解:线程同步的守门人
  • Linux 基础命令大全
  • LC振荡Multisim仿真
  • CPA全国青少年编程能力等级测评试卷及答案 Python编程(二级)
  • 金融市场资金波动模拟程序设计与实现
  • 文件IO——目录操作
  • 大模型蒸馏理论概述
  • 【分布式存储】聊聊一致性哈希算法原理和实现
  • Linux图片元数据提取完全指南:从基础到高级的完整教程
  • day25
  • EPOLLONESHOT 深度解析:Linux epoll 的单次触发机制
  • 单表查询-or优化
  • SpringIoCDI
  • Java 集合进阶:从 Collection 接口到迭代器的实战指南
  • AI入门学习-模型评估示例讲解
  • 解决浏览器无法删除cookie的问题
  • JavaSE知识点(2)
  • mybatis的insert(pojo),会返回pojo吗
  • 2507C++,APC可以干的活
  • Leetcode 3628. Maximum Number of Subsequences After One Inserting
  • mybatis-plus逻辑删除配置
  • 高可用集群KEEPALIVED实战解析
  • Gradio全解8——ChatInterfaceChatbot:聊天界面类与聊天机器人(2)——ChatInterface的自定义函数和界面
  • 芯片库和标准库寻找的方法
  • print(“\033[31m红\033[32m绿\033[34m蓝\033[0m默认色“)