第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

直接IO和內(nèi)存映射究竟有何區(qū)別?

直接IO和內(nèi)存映射究竟有何區(qū)別?

牧羊人nacy 2019-05-20 18:29:52
好像都是數(shù)據(jù)復(fù)制中去掉了內(nèi)核緩存?
查看完整描述

2 回答

?
慕哥9229398

TA貢獻(xiàn)1877條經(jīng)驗(yàn) 獲得超6個(gè)贊

一般的read要經(jīng)過磁盤-》內(nèi)核緩沖區(qū)-》用戶區(qū)的兩次拷貝;
內(nèi)存映射是虛擬內(nèi)存技術(shù),把一段文件直接映射到虛擬內(nèi)存,這樣就像訪問內(nèi)存一樣訪問文件(含缺頁中斷)而不需要read的兩次拷貝,虛擬內(nèi)存與物理內(nèi)存的映射操作系統(tǒng)幫你解決,此外內(nèi)存映射還可以用于IPC;
直接IO就是把1里面的內(nèi)核緩沖區(qū)省略了(因?yàn)閮?nèi)核緩沖啥時(shí)候刷盤是由內(nèi)核決定的具有不確定性,當(dāng)然用戶可以顯示sync),用戶可以自己來做緩沖;
                            
查看完整回答
反對 回復(fù) 2019-05-20
?
慕森王

TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超3個(gè)贊

兩個(gè)不是一個(gè)概念。DirectIO和BufferIO相對應(yīng)。DirectIO就是直接把IO請求提交給底層IO設(shè)備,不經(jīng)過緩存處理。
BufferIO就是IO請求經(jīng)過緩存子系統(tǒng)處理,例如Linux上的VFSCache層;寫數(shù)據(jù)會先寫入內(nèi)存,寫入內(nèi)存后就會返回,不等數(shù)據(jù)刷到磁盤上。讀數(shù)據(jù)會從先嘗試從內(nèi)存中讀取,如果內(nèi)存中命中,就不需要從磁盤上讀取了。BufferIO會帶來讀寫性能的大幅度提升,這和在數(shù)據(jù)庫前面加一個(gè)Memcached是一樣的概念。大多數(shù)場景下,BufferIO都是最優(yōu)選擇。
以下情況下我們可能需要考慮DirectIO:
對數(shù)據(jù)寫的可靠性要求很高,必須確保數(shù)據(jù)落到磁盤上,業(yè)務(wù)邏輯才可以繼續(xù)執(zhí)行。
特定場景下,系統(tǒng)自帶緩存算法效率不高,應(yīng)用層自己實(shí)現(xiàn)出更高的算法。
而內(nèi)存映射是另外一個(gè)很大的概念,展開會有很多內(nèi)容;僅看文件IO這部分,像通過Linuxmmap這樣的方式訪問文件,實(shí)際上就是由應(yīng)用分配了一段內(nèi)存,這段內(nèi)存直接充當(dāng)了文件讀寫過程中的緩存,用戶態(tài)可以直接訪問,而不是像普通的read/write方式需要把用戶態(tài)的buffer拷貝到內(nèi)核分配的緩存上,其本質(zhì)還是bufferIO,只是省去了用戶態(tài)到內(nèi)核態(tài)的拷貝開銷。
                            
查看完整回答
反對 回復(fù) 2019-05-20
  • 2 回答
  • 1 關(guān)注
  • 1227 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號