1分鐘讀懂【零拷貝】

一塞椎、概念

指在計算機(jī)執(zhí)行操作時桨仿,CPU不需要先將數(shù)據(jù)從一個內(nèi)存區(qū)域復(fù)制到另一個內(nèi)存區(qū)域,從而減少上下文切換以及 CPU 的拷貝案狠。所有的數(shù)據(jù)都是通過 DMA 直接內(nèi)存訪問技術(shù)來進(jìn)行傳輸?shù)摹?/p>

二服傍、作用

是在數(shù)據(jù)從網(wǎng)絡(luò)設(shè)備到用戶程序空間傳遞的過程中,減少數(shù)據(jù)拷貝次數(shù)骂铁,減少系統(tǒng)調(diào)用吹零,實(shí)現(xiàn) CPU 的零參與,徹底消除 CPU 在這方面的負(fù)載从铲。

三瘪校、技術(shù)

實(shí)現(xiàn)零拷貝用到的最主要技術(shù)是 DMA直接內(nèi)存訪問 和 mmap內(nèi)存映射文件。

3.1 DMA

  • 定義: DMA 是一種計算機(jī)系統(tǒng)中的技術(shù)名段,它允許外設(shè)直接訪問系統(tǒng)內(nèi)存,而無需經(jīng)過中央處理器(CPU)的干預(yù)泣懊。

  • 用途: 主要用于高速數(shù)據(jù)傳輸伸辟,例如從磁盤到內(nèi)存,從網(wǎng)絡(luò)適配器到內(nèi)存等馍刮。它可以提高數(shù)據(jù)傳輸效率信夫,減輕 CPU 的負(fù)擔(dān)。

  • 關(guān)系: DMA 通常用于設(shè)備之間的數(shù)據(jù)傳輸卡啰,而不是直接訪問文件系統(tǒng)中的數(shù)據(jù)静稻。DMA 是一種用于直接傳輸數(shù)據(jù)的硬件機(jī)制。

  • 從圖中可以看到匈辱,零拷貝技術(shù)就是把cpu在這其中拷貝的工作去掉了振湾,不需要在內(nèi)核態(tài)和用戶態(tài)之間數(shù)據(jù)傳輸,直接由dma操作把磁盤數(shù)據(jù)讀取到內(nèi)核頁緩沖區(qū)中亡脸,再由內(nèi)核頁緩沖區(qū)發(fā)送到網(wǎng)絡(luò)中去押搪,實(shí)現(xiàn)了cpu的零拷貝。

    3.2 mmap

  • 定義: mmap 是一種將文件內(nèi)容映射到內(nèi)存的機(jī)制浅碾。它允許應(yīng)用程序直接在內(nèi)存中操作文件數(shù)據(jù)大州,而無需通過 read 和 write 等系統(tǒng)調(diào)用。

  • 用途: 主要用于文件 I/O 操作垂谢,允許應(yīng)用程序像訪問內(nèi)存一樣訪問文件厦画。修改內(nèi)存映射的數(shù)據(jù)將自動反映到底層文件。

  • 關(guān)系: mmap 是一種文件 I/O 操作的方式滥朱,適用于需要頻繁訪問文件數(shù)據(jù)的場景根暑,但它不是 DMA 的直接替代品力试。在一些情況下,DMA 可能與內(nèi)存映射結(jié)合使用购裙,例如在網(wǎng)絡(luò)數(shù)據(jù)包的接收中懂版,可以使用 DMA 將網(wǎng)絡(luò)數(shù)據(jù)直接傳輸?shù)絻?nèi)存,然后通過 MMAP 將內(nèi)存映射到用戶空間躏率,以便應(yīng)用程序訪問數(shù)據(jù)躯畴。

  • 從圖中可以看到,讀寫文件都需要經(jīng)過?頁緩存薇芝,所以?mmap?映射的正是文件的?頁緩存蓬抄,而非磁盤中的文件本身。

    ?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
    • 序言:七十年代末夯到,一起剝皮案震驚了整個濱河市嚷缭,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌耍贾,老刑警劉巖阅爽,帶你破解...
      沈念sama閱讀 219,539評論 6 508
    • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異荐开,居然都是意外死亡付翁,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
      沈念sama閱讀 93,594評論 3 396
    • 文/潘曉璐 我一進(jìn)店門晃听,熙熙樓的掌柜王于貴愁眉苦臉地迎上來百侧,“玉大人,你說我怎么就攤上這事能扒∮犊剩” “怎么了?”我有些...
      開封第一講書人閱讀 165,871評論 0 356
    • 文/不壞的土叔 我叫張陵初斑,是天一觀的道長辛润。 經(jīng)常有香客問我,道長越平,這世上最難降的妖魔是什么频蛔? 我笑而不...
      開封第一講書人閱讀 58,963評論 1 295
    • 正文 為了忘掉前任,我火速辦了婚禮秦叛,結(jié)果婚禮上晦溪,老公的妹妹穿的比我還像新娘。我一直安慰自己挣跋,他們只是感情好三圆,可當(dāng)我...
      茶點(diǎn)故事閱讀 67,984評論 6 393
    • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般舟肉。 火紅的嫁衣襯著肌膚如雪修噪。 梳的紋絲不亂的頭發(fā)上,一...
      開封第一講書人閱讀 51,763評論 1 307
    • 那天路媚,我揣著相機(jī)與錄音黄琼,去河邊找鬼。 笑死整慎,一個胖子當(dāng)著我的面吹牛脏款,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播裤园,決...
      沈念sama閱讀 40,468評論 3 420
    • 文/蒼蘭香墨 我猛地睜開眼撤师,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了拧揽?” 一聲冷哼從身側(cè)響起剃盾,我...
      開封第一講書人閱讀 39,357評論 0 276
    • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎淤袜,沒想到半個月后痒谴,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
      沈念sama閱讀 45,850評論 1 317
    • 正文 獨(dú)居荒郊野嶺守林人離奇死亡铡羡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
      茶點(diǎn)故事閱讀 38,002評論 3 338
    • 正文 我和宋清朗相戀三年闰歪,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蓖墅。...
      茶點(diǎn)故事閱讀 40,144評論 1 351
    • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖临扮,靈堂內(nèi)的尸體忽然破棺而出论矾,到底是詐尸還是另有隱情,我是刑警寧澤杆勇,帶...
      沈念sama閱讀 35,823評論 5 346
    • 正文 年R本政府宣布贪壳,位于F島的核電站,受9級特大地震影響蚜退,放射性物質(zhì)發(fā)生泄漏闰靴。R本人自食惡果不足惜,卻給世界環(huán)境...
      茶點(diǎn)故事閱讀 41,483評論 3 331
    • 文/蒙蒙 一钻注、第九天 我趴在偏房一處隱蔽的房頂上張望蚂且。 院中可真熱鬧,春花似錦幅恋、人聲如沸杏死。這莊子的主人今日做“春日...
      開封第一講書人閱讀 32,026評論 0 22
    • 文/蒼蘭香墨 我抬頭看了看天上的太陽淑翼。三九已至腐巢,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間玄括,已是汗流浹背冯丙。 一陣腳步聲響...
      開封第一講書人閱讀 33,150評論 1 272
    • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留遭京,地道東北人胃惜。 一個月前我還...
      沈念sama閱讀 48,415評論 3 373
    • 正文 我出身青樓,卻偏偏與公主長得像洁墙,于是被迫代替她去往敵國和親蛹疯。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
      茶點(diǎn)故事閱讀 45,092評論 2 355

    推薦閱讀更多精彩內(nèi)容