什么是零拷貝

什么是零拷貝?

  • 快速理解

快速理解

要想理解零拷貝,首先要了解操作系統的IO流程,因為有內核態和用戶態的區別,為了保證安全性和緩存,普通的讀寫流程如下:

(對于Java程序而言,還會多了一個堆外內存和堆內存之間的copy)

如圖:

111111
整體的流程我們分析一下:
1.用戶read發起系統調用,由用戶態進入內核態,通過DMA技術將磁盤中的數據copy到內核緩沖區中

2.當DMA完成工作后,會發起一個中斷,通知CPU數據拷貝完成,然后CPU再將內核態中的數據copy到用戶態中

3.由內核喚醒對應線程,同時將用戶態的數據返回給該線程空間;

4.用戶態線程進行業務處理;

5.當服務器對請求進行響應的時候,會發起系統調用,由內核將用戶態的數據copy到內核態中

6.復制完畢以后,再由網絡適配器通過DMA技術將內核態緩沖區中的數據copy到網卡中,完成以后,內核態會返回到用戶態;

7.最后由網卡將數據發送出去。

在這個整個過程中,如果不考慮用戶態的內存拷貝和物理設備到驅動的數據拷貝,我們會發現,這其中會涉及4次數據拷貝。同時也會涉及到4次進程上下文的切換。所謂的零拷貝,作用就是通過各種方式,在特殊情況下,減少數據拷貝的次數 / 減少CPU參與數據拷貝的次數

常見的零拷貝方式有mmap、sendfile、dma、directl/O等等。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/215321.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/215321.shtml
英文地址,請注明出處:http://en.pswp.cn/news/215321.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Windwos server 服務器 安全基線 安全加固操作

目錄 賬號管理、認證授權 賬號 ELK-Windows-01-01-01 ELK-Windows-01-01-02 ELK-Windows-01-01-03 口令 ELK-Windows-01-02-01 ???????ELK-Windows-01-02-02 ???????授權 ELK-Windows-01-03-01 ???????ELK-Windows-01-03-02 ???????ELK-Win…

【LeeCode】54. 替換數字

題目描述 給定一個字符串 s,它包含小寫字母和數字字符,請編寫一個函數,將字符串中的字母字符保持不變,而將每個數字字符替換為number。 例如,對于輸入字符串 "a1b2c3",函數應該將其轉換為 "…

java的long類型超過9位報錯:the literal 987654321000 of type int is out of range

java的long類型超過9位報錯 1、報錯提示2、報錯截圖3、解決辦法4、參考文章 1、報錯提示 the literal 987654321000 of type int is out of range 2、報錯截圖 3、解決辦法 long類型是一種用于表示較大整數的數據類型,范圍比int類型更廣泛。然而,即使…

用PHP和HTML做登錄注冊操作數據庫Mysql

用PHP和HTML做登錄注冊操作數據庫Mysql 兩個HTML頁面&#xff0c;兩個PHP,兩個css,兩張圖片&#xff0c;源碼資源在上方。 目錄 HTML頁面 login.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta nam…

IDEA卡頓,進行性能優化設置(親測有效)——情況二

問題背景與現象 IDEA今天突然顯示到期&#xff0c;于是從同事那邊搞到一個很好用的破解方式&#xff0c;說實話&#xff0c;非常方便&#xff08;后續在安前碼后中分享&#xff09; 破解之后呢&#xff0c;香了一陣子&#xff0c;但是突然顯示開始卡頓&#xff0c;界面幾乎是…

【spring boot】RestTemplate 鏈接帶簽名post請求 400 bad request

由于項目需要從服務端對第三方發起請求&#xff0c;而且第三方沒有提供SDK的情況下&#xff0c;只能根據對方api文檔發送請求了&#xff0c;對方接口的格式是&#xff1a;地址簽名&#xff0c;post請求上送具體參數的方式去請求對方服務。 背景 很簡單的一個需求&#xff0c;然…

Word插件-好用的插件-PPT 素材該怎么積累-大珩助手

PPT 素材該怎么積累&#xff1f; 使用大珩助手中的素材庫功能&#xff0c;將Word中的&#xff0c;或系統中的文本文件、圖片、其他word文檔、pdf&#xff0c;所有見到的好素材&#xff0c;一鍵收納。 步驟&#xff1a;選中文件&#xff0c;按住鼠標左鍵拖到素材庫界面中&…

React-router-dom v6和 v5版本“注冊路由”的差異化

React-router-dom v6和 v5版本“注冊路由”的差異化 Matched leaf route at location “/about” does not have an element. This means it will render an with a null value by default resulting in an “empty” page. v6版本中Switch已經被換成了Routes&#xff0c;點擊鏈…

【軟考】信息系統項目管理師論文方向猜想

報喜不報憂&#xff0c;每天都在為雞零狗碎推諉扯皮&#xff0c;屬實是有辱師門。 通過軟考&#xff0c;目前算是真正有意義的事情。 雖然都說高項的論文是個玄學&#xff0c;但是道聽途說了一些通關感想還是蠻有啟發的。 文件要求 參考了一份廣西省高級工程師評審的文件&am…

Leetcode704二分查找、折半查找(Java實現)

好久沒有更新算法題&#xff0c;今天來寫一道二分查找的題目。題目要求如下&#xff0c; 那么這道題的解題思路如下&#xff0c;我們尋找的過程是首先去訪問數組的中間位置mid&#xff0c;如果nums[mid]大于了targe那么說明&#xff0c;我們要找的數在mid的左半邊&#xff0c;…

IAR開發stm8系列,C語言實現16位乘法器和32位除法器函數

stm8是8位單片機&#xff0c;在ADC采樣采用12bit采樣值進行定點整型運算的時候&#xff0c;為了保證精度需要通過16位乘法器 進行擴大&#xff0c;通過32位除法器縮小運算。但是用c語言直接用“*"和"/"計算是無法實現。c語言的math函數庫也沒有提供這樣的計算函…

CSDN博客遷移至Hexo

實現思路&#xff1a; 獲取博客列表獲取博客詳情解析博客詳情html&#xff0c;找出 #article_content部分通過jsoup解析博客內容&#xff0c;轉成md格式文件 依賴 <dependency><groupId>com.alibaba.fastjson2</groupId><artifactId>fastjson2</art…

Linux實用操作篇-下篇

Linux實用操作篇-上篇&#xff1a;Linux實用操作-上篇-CSDN博客 一、網絡傳輸 1.1 ping命令 網絡是否可聯通 可以通過ping命令&#xff0c;檢查指定的網絡服務器是否是可聯通狀態 語法: ping [-c num] ip或主機名 選項&#xff1a;-c&#xff0c;檢查的次數&#xff0c;…

嵌入式SOC芯片選型

摘要&#xff1a; 本文主要探討的是如果涉及芯片選型&#xff0c;需要考慮哪些方面&#xff1f; 將相關的需求列出來&#xff0c;供后續實踐的時候參考。 SOC芯片選型 能力參數指標備注算力編碼能力VPU處理能力YUV算法資源媒體audiovideoCPU運行主頻架構DDRDDR規格DDR帶寬DD…

cmake常用設置命令及參數大全

CMake是一個跨平臺的開源構建工具,用于管理軟件項目的構建過程。它使用簡單的配置文件(CMakeLists.txt)來定義構建過程的規則。 以下是一些常用的CMake設置和命令: 1. cmake_minimum_required(VERSION x.x):指定需要的CMake版本。 2. project(project_name):設置項目的…

深入理解Java虛擬機---垃圾收集算法

深入理解Java虛擬機---垃圾收集算法 如何判定對象是否存活引用計數法可達性分析法 Java引用類型垃圾回收算法標記-清除算法復制算法標記-整理算法分代收集算法 HotSpot的算法實現枚舉根節點安全點安全區域 如何判定對象是否存活 引用計數法 引用計數算法利用額外的內存空間來…

Dockerfile創建鏡像介紹

1.介紹 Docker 提供了一種更便捷的方式&#xff0c;叫作 Dockerfile&#xff0c;docker build命令用于根據給定的Dockerfile構建Docker鏡像。 docker build語法&#xff1a; # docker build [OPTIONS] <PATH | URL | -> 常用選項說明 --build-arg&#xff0c;設置構建時的…

上海亞商投顧:滬指探底回升 AI應用方向再度爆發

上海亞商投顧前言&#xff1a;無懼大盤漲跌&#xff0c;解密龍虎榜資金&#xff0c;跟蹤一線游資和機構資金動向&#xff0c;識別短期熱點和強勢個股。 一.市場情緒 三大指數昨日探底回升&#xff0c;早盤一度均跌超1%&#xff0c;午后集體拉升翻紅&#xff0c;深成指、創業板…

FFmpeg的AVcodecParser

文章目錄 結構體操作函數支持的AVCodecParser 這個模塊是AVCodec中的子模塊&#xff0c;專門用來提前解析碼流的元數據&#xff0c;為后面的解碼做準備&#xff0c;這一點對cuda-NVdec非常明顯&#xff0c;英偉達解碼器的元數據解析是放在CPU上的&#xff0c;所以就非常依賴這個…

為什么Vue3的proxy需要Reflect呢

何為proxy Proxy 對象用于定義或修改某些操作的自定義行為&#xff0c;可以在外界對目標對象進行訪問前&#xff0c;對外界的訪問進行改寫。 var proxy new Proxy(target, handler)ES6 中的proxy目前提供了13種可代理操作攔截的行為。 何為reflect ES6 標準中&#xff0c;…