一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

存儲(chǔ)器的金字塔結(jié)構(gòu)

Linux閱碼場 ? 來源:未知 ? 作者:李倩 ? 2018-08-30 08:16 ? 次閱讀

寫在前面

在開始正式的討論前,我先拋出幾個(gè)問題:

談到磁盤時(shí),常說的HDD磁盤和SSD磁盤最大的區(qū)別是什么?這些差異會(huì)影響我們的系統(tǒng)設(shè)計(jì)嗎?

單線程寫文件有點(diǎn)慢,那多開幾個(gè)線程一起寫是不是可以加速呢?

write(2)函數(shù)成功返回了,數(shù)據(jù)就已經(jīng)成功寫入磁盤了嗎?此時(shí)設(shè)備斷電會(huì)有影響嗎?會(huì)丟失數(shù)據(jù)嗎?

write(2)調(diào)用是原子的嗎?多線程寫文件是否要對(duì)文件加鎖?有沒有例外,比如O_APPEND方式?

坊間傳聞,mmap(2)的方式讀文件比傳統(tǒng)的方式要快,因?yàn)樯僖淮慰截悺U媸沁@樣嗎?為什么少一次拷貝?

如果你覺得這些問題都很簡單,都能很明確的回答上來。那么很遺憾這篇文章不是為你準(zhǔn)備的,你可以關(guān)掉網(wǎng)頁去做其他更有意義的事情了。如果你覺得無法明確的回答這些問題,那么就耐心地讀完這篇文章,相信不會(huì)浪費(fèi)你的時(shí)間。受限于個(gè)人時(shí)間和文章篇幅,部分議題如果我不能給出更好的解釋或者已有專業(yè)和嚴(yán)謹(jǐn)?shù)馁Y料,就只會(huì)給出相關(guān)的參考文獻(xiàn)的鏈接,請(qǐng)讀者自行參閱。

言歸正傳,我們的討論從存儲(chǔ)器的層次結(jié)構(gòu)開始。

存儲(chǔ)器的金字塔結(jié)構(gòu)

受限于存儲(chǔ)介質(zhì)的存取速率和成本,現(xiàn)代計(jì)算機(jī)的存儲(chǔ)結(jié)構(gòu)呈現(xiàn)為金字塔型[1]。越往塔頂,存取效率越高、但成本也越高,所以容量也就越小。得益于程序訪問的局部性原理[2],這種節(jié)省成本的做法也能取得不俗的運(yùn)行效率。從存儲(chǔ)器的層次結(jié)構(gòu)以及計(jì)算機(jī)對(duì)數(shù)據(jù)的處理方式來看,上層一般作為下層的Cache層來使用(廣義上的Cache)。比如寄存器緩存CPU Cache的數(shù)據(jù),CPU Cache L1~L3層視具體實(shí)現(xiàn)彼此緩存或直接緩存內(nèi)存的數(shù)據(jù),而內(nèi)存往往緩存來自本地磁盤的數(shù)據(jù)。

本文主要討論磁盤IO操作,故只聚焦于Local Disk的訪問特性和其與DRAM之間的數(shù)據(jù)交互。

無處不在的緩存

如圖,當(dāng)程序調(diào)用各類文件操作函數(shù)后,用戶數(shù)據(jù)(User Data)到達(dá)磁盤(Disk)的流程如圖所示[3]。圖中描述了Linux下文件操作函數(shù)的層級(jí)關(guān)系和內(nèi)存緩存層的存在位置。中間的黑色實(shí)線是用戶態(tài)和內(nèi)核態(tài)的分界線。

從上往下分析這張圖,首先是C語言stdio庫定義的相關(guān)文件操作函數(shù),這些都是用戶態(tài)實(shí)現(xiàn)的跨平臺(tái)封裝函數(shù)。stdio中實(shí)現(xiàn)的文件操作函數(shù)有自己的stdio buffer,這是在用戶態(tài)實(shí)現(xiàn)的緩存。此處使用緩存的原因很簡單——系統(tǒng)調(diào)用總是昂貴的。如果用戶代碼以較小的size不斷的讀或?qū)懳募脑?,stdio庫將多次的讀或者寫操作通過buffer進(jìn)行聚合是可以提高程序運(yùn)行效率的。stdio庫同時(shí)也支持fflush(3)函數(shù)來主動(dòng)的刷新buffer,主動(dòng)的調(diào)用底層的系統(tǒng)調(diào)用立即更新buffer里的數(shù)據(jù)。特別地,setbuf(3)函數(shù)可以對(duì)stdio庫的用戶態(tài)buffer進(jìn)行設(shè)置,甚至取消buffer的使用。

系統(tǒng)調(diào)用的read(2)/write(2)和真實(shí)的磁盤讀寫之間也存在一層buffer,這里用術(shù)語Kernel buffer cache來指代這一層緩存。在Linux下,文件的緩存習(xí)慣性的稱之為Page Cache,而更低一級(jí)的設(shè)備的緩存稱之為Buffer Cache. 這兩個(gè)概念很容易混淆,這里簡單的介紹下概念上的區(qū)別:Page Cache用于緩存文件的內(nèi)容,和文件系統(tǒng)比較相關(guān)。文件的內(nèi)容需要映射到實(shí)際的物理磁盤,這種映射關(guān)系由文件系統(tǒng)來完成;Buffer Cache用于緩存存儲(chǔ)設(shè)備塊(比如磁盤扇區(qū))的數(shù)據(jù),而不關(guān)心是否有文件系統(tǒng)的存在(文件系統(tǒng)的元數(shù)據(jù)緩存在Buffer Cache中)。

綜上,既然討論Linux下的IO操作,自然是跳過stdio庫的用戶態(tài)這一堆東西,直接討論系統(tǒng)調(diào)用層面的概念了。對(duì)stdio庫的IO層有興趣的同學(xué)可以自行去了解。從上文的描述中也介紹了文件的內(nèi)核級(jí)緩存是保存在文件系統(tǒng)的Page Cache中的。所以下篇的討論基本上是討論IO相關(guān)的系統(tǒng)調(diào)用和文件系統(tǒng)Page Cache的一些機(jī)制。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 存儲(chǔ)器
    +關(guān)注

    關(guān)注

    38

    文章

    7615

    瀏覽量

    165999
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11425

    瀏覽量

    212404

原文標(biāo)題:淺墨: 聊聊Linux IO(上)

文章出處:【微信號(hào):LinuxDev,微信公眾號(hào):Linux閱碼場】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    反射式金字塔波前傳感的仿真

    摘要 與傳統(tǒng)的夏克-哈特曼傳感相比,使用金字塔形棱鏡或反射的波前傳感(PyWFS,用于金字塔波前傳感
    發(fā)表于 01-07 08:54

    VirtualLab Fusion案例:反射式金字塔波前傳感的仿真

    摘要 與傳統(tǒng)的夏克-哈特曼傳感相比,使用金字塔形棱鏡或反射的波前傳感(PyWFS,用于金字塔波前傳感
    發(fā)表于 01-17 09:51

    VirtualLab 應(yīng)用:反射式金字塔波前傳感的仿真

    摘要 與傳統(tǒng)的夏克-哈特曼傳感相比,使用金字塔形棱鏡或反射的波前傳感(PyWFS,用于金字塔波前傳感
    發(fā)表于 04-26 10:39

    PCB工程師金字塔分級(jí)標(biāo)準(zhǔn)

    PCB工程師金字塔分級(jí)標(biāo)準(zhǔn)
    發(fā)表于 08-06 13:21

    自制for循環(huán)打印金字塔

    自制for循環(huán)打印金字塔
    發(fā)表于 09-18 08:46

    基于金字塔模型的地形網(wǎng)格裂縫消除算法

    本文針對(duì)基于多分辨金字塔模型繪制海量地形時(shí)的網(wǎng)格裂縫問題,提出了一種網(wǎng)格裂縫消除算法。該算法利用分裂標(biāo)記表,結(jié)合金字塔模型本身分塊與多分辨率的特性,從整體上
    發(fā)表于 12-30 12:02 ?8次下載

    基于壓縮金字塔核稀疏表示的人臉識(shí)別_周凱

    基于壓縮金字塔核稀疏表示的人臉識(shí)別_周凱
    發(fā)表于 01-08 11:13 ?0次下載

    新型太陽能電池板之光伏金字塔結(jié)構(gòu)反射紅外線

    很好的解決方案。因?yàn)橐环矫嬷鲃?dòng)冷卻方式會(huì)消耗能源,成本較高,另一方面還會(huì)干擾太陽能電池板有效吸收光線。 為了解決這個(gè)問題,近日斯坦福大學(xué)的科學(xué)家們發(fā)明了一種新型太陽能電池板,能夠通過表面的微型三角金字塔結(jié)構(gòu)
    發(fā)表于 10-24 10:47 ?5次下載
    新型太陽能電池板之光伏<b class='flag-5'>金字塔結(jié)構(gòu)</b>反射紅外線

    繪制金字塔程序?qū)崿F(xiàn)

    用c語言編程繪制金字塔
    發(fā)表于 11-27 16:24 ?893次閱讀

    可控特性的金字塔變換

    本文設(shè)計(jì)了一種具有平移不變性、方向和尺度聯(lián)合可控特性的金字塔變換,稱為幾何變形可控金字塔變換(DPT)。此DPT從一種數(shù)值形式表示的方向可控金字塔變換(SPT)發(fā)展而來。我們以SPT的每一個(gè)方向可控
    發(fā)表于 12-14 16:41 ?4次下載
    可控特性的<b class='flag-5'>金字塔</b>變換

    一種金字塔注意力網(wǎng)絡(luò),用于處理圖像語義分割問題

    基于以上觀察,我們提出了特征金字塔注意力模塊 (FPA),該模塊能夠融合來自 U 型網(wǎng)絡(luò) (如特征金字塔網(wǎng)絡(luò) FPN) 所提取的三種不同尺度的金字塔特征。為了更好地提取不同尺度下金字塔
    的頭像 發(fā)表于 06-05 09:21 ?1.2w次閱讀
    一種<b class='flag-5'>金字塔</b>注意力網(wǎng)絡(luò),用于處理圖像語義分割問題

    中國集成電路封裝行業(yè)市場現(xiàn)狀——金字塔的尖頂與基座

    中國集成電路封裝行業(yè)技術(shù)演變路程漫漫集成電路封裝在電子學(xué)金字塔中的位置既是金字塔的尖頂又是金字塔的基座。
    的頭像 發(fā)表于 07-11 14:51 ?3529次閱讀

    晶片表面刻蝕工藝對(duì)碳硅太陽能電池特性的影響

    引言 為了分析不同尺寸的金字塔結(jié)構(gòu)對(duì)太陽能電池特性的影響,我們通過各種刻蝕工藝在硅片上形成了金字塔結(jié)構(gòu)。在此使用一步蝕刻工藝(堿性溶液蝕刻、反應(yīng)離子蝕刻(RIE)和金屬輔助化學(xué)蝕刻)以及兩步蝕刻
    發(fā)表于 01-11 14:05 ?1409次閱讀
    晶片表面刻蝕工藝對(duì)碳硅太陽能電池特性的影響

    DIY自制基于51單片機(jī)的LED金字塔

    電子發(fā)燒友網(wǎng)站提供《DIY自制基于51單片機(jī)的LED金字塔.pdf》資料免費(fèi)下載
    發(fā)表于 10-25 10:27 ?0次下載
    DIY自制基于51單片機(jī)的LED<b class='flag-5'>金字塔</b>

    談?wù)凱CB工程師金字塔分級(jí)標(biāo)準(zhǔn)

    印刷電路板(PCB)工程師是電子行業(yè)中至關(guān)重要的角色,他們的工作直接關(guān)系到電子產(chǎn)品的質(zhì)量和性能。為了明確不同PCB工程師的技能水平和職責(zé)范圍,行業(yè)內(nèi)形成了金字塔分級(jí)標(biāo)準(zhǔn)。下面將談?wù)勥@個(gè)金字塔的分級(jí)標(biāo)準(zhǔn)。
    的頭像 發(fā)表于 12-25 10:02 ?679次閱讀