1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        阿里終面:為什么SSD不能當(dāng)做內(nèi)存用?

        共 2820字,需瀏覽 6分鐘

         ·

        2021-07-04 15:11

        在回答這個(gè)問(wèn)題之前我們先去某東上逛一圈。
        輸入“SSD”隨便找到銷量比較高的一項(xiàng),在商品詳情頁(yè)上有這樣的描述:
        注意圖片上顯示的規(guī)格,讀速高達(dá)3.5GB/s,真實(shí)情況下稍差點(diǎn)(尤其是隨機(jī)讀寫),但也不會(huì)很離譜,可以看到,這個(gè)速度是非??斓模久雮鞲咔咫娪暗乃?。
        那么問(wèn)題來(lái)了,既然現(xiàn)在的SSD讀取速度這么快,那么可以把SSD當(dāng)做內(nèi)存來(lái)用嗎?
        要想回答這個(gè)問(wèn)題,我們先來(lái)看看內(nèi)存的速度。

        速度差異

        當(dāng)前采用第四代DDR技術(shù)的內(nèi)存,其帶寬基本上能到20GB - 30GB 左右。
        怎么樣,即使SSD的速度很快,但和內(nèi)存相比還是有一個(gè)數(shù)量級(jí)的差異。
        也就是說(shuō),如果真的當(dāng)把SSD當(dāng)內(nèi)存使用,那么你的計(jì)算機(jī)可能會(huì)比當(dāng)前慢上 10 倍左右。
        如果站在用戶的角度你覺得慢點(diǎn)無(wú)所謂,那么接下來(lái)我們從計(jì)算機(jī)以及操作系統(tǒng)的角度來(lái)看看這樣可不可行。

        新建一個(gè)文件試試
        如果你現(xiàn)在在計(jì)算機(jī)旁邊可以進(jìn)行一個(gè)小實(shí)驗(yàn),以下以我的 Win10 機(jī)器為例。
        新建一個(gè)文本文件,隨便寫點(diǎn)什么東西,然后右鍵打開屬性,你會(huì)看到:
        這個(gè)文件大小本身只有816字節(jié),但卻占據(jù)了4KB的空間。
        讓我們?cè)偻@個(gè)文件里加些內(nèi)容,再看一下:
        此時(shí)內(nèi)容的大小是5.73KB,占據(jù)的空間卻來(lái)到了8KB。
        這說(shuō)明什么呢?
        很簡(jiǎn)單,這說(shuō)明文件大小是按照塊來(lái)分配的,但這又能說(shuō)明什么問(wèn)題呢?

        訪問(wèn)內(nèi)存與訪問(wèn)硬盤的區(qū)別
        要知道內(nèi)存的尋址粒度是byte級(jí)別的,也就是說(shuō)每個(gè)字節(jié)都有它的內(nèi)存地址,CPU可以直接通過(guò)這個(gè)地址獲取到相應(yīng)的內(nèi)容。
        但對(duì)于SSD來(lái)說(shuō)就不是這樣了,從上面的實(shí)驗(yàn)也可以看到,其實(shí)SSD是以塊的粒度來(lái)管理數(shù)據(jù)的,至于塊的大小各有差異,這不是重點(diǎn)。
        這里的重點(diǎn)是:CPU沒(méi)有辦法直接訪問(wèn)文件中某個(gè)特定的字節(jié)。
        CPU沒(méi)有辦法直接訪問(wèn)存儲(chǔ)在SSD上的任何數(shù)據(jù)。
        那么CPU是怎么訪問(wèn)文件內(nèi)容的呢?

        文件系統(tǒng)來(lái)幫忙
        一切皆文件這個(gè)概念想必大家都不陌生吧。
        在現(xiàn)代操作中,我們以文件的形式來(lái)使用SSD,這繞不開操作系統(tǒng)中的文件系統(tǒng)。
        文件系統(tǒng)把SSD上的數(shù)據(jù)以文件的形式呈現(xiàn)出來(lái),程序直接操作文件,讀寫文件時(shí)把請(qǐng)求發(fā)送給文件系統(tǒng),文件系統(tǒng)把請(qǐng)求路由給SSD,SSD處理完請(qǐng)求后數(shù)據(jù)會(huì)被copy到相應(yīng)進(jìn)程的內(nèi)存中,此后程序直接操作內(nèi)存。
        完整的過(guò)程以及文件系統(tǒng)的實(shí)現(xiàn)可以寫成一本書的完整一章,啊哈,博主的《深入理解操作系統(tǒng)》第八章有關(guān)于這部分的詳細(xì)講解,感興趣的可以去看下。
        從這里我們可以看出,CPU沒(méi)有辦法像訪問(wèn)內(nèi)存那樣直接按照字節(jié)粒度去SSD中尋址,CPU訪問(wèn)SSD(磁盤)通常需要借助文件系統(tǒng),當(dāng)然,我們也有辦法繞開文件系統(tǒng),但CPU依然無(wú)法直接訪問(wèn)SSD(磁盤)中的某個(gè)字節(jié)。
        正是因?yàn)镃PU無(wú)法直接按照字節(jié)粒度去訪問(wèn)SSD,因此CPU無(wú)法脫離內(nèi)存直接在SSD中運(yùn)行你寫的程序。

        操作系統(tǒng)在把SSD當(dāng)內(nèi)存用
        當(dāng)然在這里還要插個(gè)題外話,盡管操作系統(tǒng)不能把SSD當(dāng)內(nèi)存來(lái)用,但實(shí)際上操作系統(tǒng)在間接把你的SSD當(dāng)內(nèi)存來(lái)用。
        現(xiàn)代操作系統(tǒng)會(huì)自動(dòng)在空閑內(nèi)存中緩存SSD(磁盤)數(shù)據(jù)。
        當(dāng)你首次讀取文件時(shí),這次讀請(qǐng)求的確需要經(jīng)過(guò)慢吞吞的SSD(磁盤)來(lái)處理,但此后這塊數(shù)據(jù)就被緩存在了內(nèi)存當(dāng)中,下次再訪問(wèn)這塊數(shù)據(jù)時(shí)就不用訪問(wèn)SSD(磁盤)了。
        而如果你寫入數(shù)據(jù),一般來(lái)說(shuō)也是寫到內(nèi)存,稍后會(huì)有一個(gè)任務(wù)把內(nèi)存中的數(shù)據(jù)寫入磁盤。
        因此從這里我們可以看出,現(xiàn)代操作系統(tǒng)基本上是在把SSD當(dāng)內(nèi)存來(lái)用,更不用提磁盤交換空間,是不是很聰明,關(guān)于這一部分的詳細(xì)闡述請(qǐng)參見《深入理解操作系統(tǒng)》第七章。
        ok,這個(gè)題外話就到這里。
        讓我們回到原問(wèn)題來(lái)。

        虛擬內(nèi)存
        現(xiàn)代操作系統(tǒng)的內(nèi)存管理都采用虛擬內(nèi)存,這會(huì)帶來(lái)一個(gè)問(wèn)題。
        對(duì)于32位操作系統(tǒng)來(lái)說(shuō),其最大尋址范圍只有4G,也就是說(shuō)如果你把SSD當(dāng)做內(nèi)存,即使SSD有1T,那么操作系統(tǒng)真正能用到的也只有4G,剩下的就都浪費(fèi)掉了。
        因此,現(xiàn)代操作系統(tǒng)對(duì)內(nèi)存的管理方式也無(wú)法讓我們把SSD當(dāng)內(nèi)用,除非修改操作系統(tǒng)。
        當(dāng)然,對(duì)于64位操作系統(tǒng)則不存在這個(gè)問(wèn)題,因?yàn)?4位操作系統(tǒng)可尋址空間足夠大,盡管這個(gè)空間足夠可觀也需要意識(shí)到這是有上限的。

        使用壽命
        SSD的制造原理決定了這類存儲(chǔ)設(shè)備是有固定使用壽命的。
        你會(huì)發(fā)現(xiàn)SSD這貨就和車一樣,當(dāng)跑出一定里程后就會(huì)出問(wèn)題,在SSD中的里程數(shù)就是所謂的總寫入字節(jié),TBW,全稱是Max Terabytes Written,最多能寫多少TB,以下是某種型號(hào)的SSD其TBW規(guī)格。
        一般來(lái)說(shuō)普通的 SSD 其 TBW 在幾百 TB,也就是說(shuō)如果你的SSD寫入上百TB,那么很可能就要報(bào)廢了。
        有的同學(xué)可能覺得這使用壽命也太短了吧,但實(shí)際上作為普通用戶,你的電腦不會(huì)有那么頻繁的寫SSD場(chǎng)景,每天寫磁盤的量應(yīng)該會(huì)很小,當(dāng)然頻繁下小電影除外,因此作為普通用戶你可以不用在意SSD的使用壽命問(wèn)題。
        但就像剛才說(shuō)的,SSD畢竟是有TBW這個(gè)限制的,內(nèi)存則沒(méi)有這個(gè)問(wèn)題。
        因此如果你把SSD當(dāng)內(nèi)存用的話,相信很快你的SSD就會(huì)被CPU寫死。

        展望未來(lái)
        受限于當(dāng)代的存儲(chǔ)設(shè)備制造技術(shù),我們還沒(méi)有辦法直接把SSD當(dāng)做內(nèi)存來(lái)用,我們的各種軟件包括操作系統(tǒng)、文件系統(tǒng)以及各種硬件包括CPU等都沒(méi)有做好把SSD當(dāng)做內(nèi)存來(lái)用的準(zhǔn)備
        但隨著技術(shù)的進(jìn)步,這一點(diǎn)未來(lái)可能會(huì)有改觀。
        Intel已經(jīng)發(fā)布了一種存儲(chǔ)設(shè)備,該設(shè)備就像SSD,但同時(shí)又可以支持像內(nèi)存那樣隨機(jī)尋址。
        也許在未來(lái)我們的內(nèi)存也可以像SSD那樣,即使斷電內(nèi)容也不會(huì)丟失,那樣的話你的電腦就沒(méi)有“關(guān)機(jī)”這種操作了,電腦加電后根本就沒(méi)有“啟動(dòng)”一說(shuō),是不是很有趣。
        如果內(nèi)存和磁盤一樣斷電后也不丟內(nèi)容,那么會(huì)帶來(lái)什么有趣的新功能呢?歡迎大家在本文留言區(qū)討論這個(gè)問(wèn)題。

        總結(jié)
        SSD能否當(dāng)做內(nèi)存來(lái)用?這絕不是一個(gè)簡(jiǎn)單的問(wèn)題,這涉及到CPU、操作系統(tǒng)、文件系統(tǒng)、存儲(chǔ)設(shè)備制造原理等方方面面的問(wèn)題,你需要對(duì)計(jì)算機(jī)系統(tǒng)有透徹的理解才能回答好這個(gè)問(wèn)題。
        最后,順便不吹牛的說(shuō)一下,這個(gè)問(wèn)題是小風(fēng)哥我自己想出來(lái)的,就問(wèn)你無(wú)聊不無(wú)聊。
        參考資料
        1,《深入理解操作系統(tǒng)》第七章、第八章,關(guān)注公眾號(hào)“碼農(nóng)的荒島求生”并回復(fù)“操作系統(tǒng)”即可
        2,讀取文件時(shí)底層發(fā)生了什么?
        3,你管這破玩意叫CPU?

        — 【 THE END 】—
        本公眾號(hào)全部博文已整理成一個(gè)目錄,請(qǐng)?jiān)诠娞?hào)里回復(fù)「m」獲取!

        最近面試BAT,整理一份面試資料Java面試BATJ通關(guān)手冊(cè),覆蓋了Java核心技術(shù)、JVM、Java并發(fā)、SSM、微服務(wù)、數(shù)據(jù)庫(kù)、數(shù)據(jù)結(jié)構(gòu)等等。

        獲取方式:點(diǎn)“在看”,關(guān)注公眾號(hào)并回復(fù) PDF 領(lǐng)取,更多內(nèi)容陸續(xù)奉上。

        文章有幫助的話,在看,轉(zhuǎn)發(fā)吧。

        謝謝支持喲 (*^__^*)


        瀏覽 33
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            91一区二区三区在线观看 | 黄色片三极片 | 成人午夜精品无码区久久app | 亚洲第一色在线 | 亚洲第一天堂久久 | 无码在线视频一区二区三区四区五区 | 国产福利视频导航 | 成人毛片18毛片女人 | 古典武侠综合AV第一页 | 综合色婷婷一区二区亚洲欧美国产 |