成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

阿里終面:為什么 SSD 不能當做內存用?

系統 Linux
SSD能否當做內存來用?這絕不是一個簡單的問題,這涉及到CPU、操作系統、文件系統、存儲設備制造原理等方方面面的問題,你需要對計算機系統有透徹的理解才能回答好這個問題。

 [[411989]]

在回答這個問題之前我們先去某東上逛一圈。

輸入“SSD”隨便找到銷量比較高的一項,在商品詳情頁上有這樣的描述:

注意圖片上顯示的規格,讀速高達3.5GB/s,真實情況下稍差點(尤其是隨機讀寫),但也不會很離譜,可以看到,這個速度是非常快的,基本秒傳高清電影的水平。

那么問題來了,既然現在的SSD讀取速度這么快,那么可以把SSD當做內存來用嗎?

要想回答這個問題,我們先來看看內存的速度。

速度差異

當前采用第四代DDR技術的內存,其帶寬基本上能到20GB - 30GB 左右。

怎么樣,即使SSD的速度很快,但和內存相比還是有一個數量級的差異。

也就是說,如果真的當把SSD當內存使用,那么你的計算機可能會比當前慢上 10 倍左右。

[[411991]]

如果站在用戶的角度你覺得慢點無所謂,那么接下來我們從計算機以及操作系統的角度來看看這樣可不可行。

新建一個文件試試

如果你現在在計算機旁邊可以進行一個小實驗,以下以我的 Win10 機器為例。

新建一個文本文件,隨便寫點什么東西,然后右鍵打開屬性,你會看到:

這個文件大小本身只有816字節,但卻占據了4KB的空間。

讓我們再往這個文件里加些內容,再看一下:

此時內容的大小是5.73KB,占據的空間卻來到了8KB。

這說明什么呢?

很簡單,這說明文件大小是按照塊來分配的,但這又能說明什么問題呢?

訪問內存與訪問硬盤的區別

要知道內存的尋址粒度是byte級別的,也就是說每個字節都有它的內存地址,CPU可以直接通過這個地址獲取到相應的內容。

但對于SSD來說就不是這樣了,從上面的實驗也可以看到,其實SSD是以塊的粒度來管理數據的,至于塊的大小各有差異,這不是重點。

這里的重點是:CPU沒有辦法直接訪問文件中某個特定的字節。

CPU沒有辦法直接訪問存儲在SSD上的任何數據。

那么CPU是怎么訪問文件內容的呢?

文件系統來幫忙

一切皆文件這個概念想必大家都不陌生吧。

在現代操作中,我們以文件的形式來使用SSD,這繞不開操作系統中的文件系統。

文件系統把SSD上的數據以文件的形式呈現出來,程序直接操作文件,讀寫文件時把請求發送給文件系統,文件系統把請求路由給SSD,SSD處理完請求后數據會被copy到相應進程的內存中,此后程序直接操作內存。

完整的過程以及文件系統的實現可以寫成一本書的完整一章,啊哈,博主的《深入理解操作系統》第八章有關于這部分的詳細講解,感興趣的可以去看下。

從這里我們可以看出,CPU沒有辦法像訪問內存那樣直接按照字節粒度去SSD中尋址,CPU訪問SSD(磁盤)通常需要借助文件系統,當然,我們也有辦法繞開文件系統,但CPU依然無法直接訪問SSD(磁盤)中的某個字節。

正是因為CPU無法直接按照字節粒度去訪問SSD,因此CPU無法脫離內存直接在SSD中運行你寫的程序。

操作系統在把SSD當內存用

當然在這里還要插個題外話,盡管操作系統不能把SSD當內存來用,但實際上操作系統在間接把你的SSD當內存來用。

現代操作系統會自動在空閑內存中緩存SSD(磁盤)數據。

當你首次讀取文件時,這次讀請求的確需要經過慢吞吞的SSD(磁盤)來處理,但此后這塊數據就被緩存在了內存當中,下次再訪問這塊數據時就不用訪問SSD(磁盤)了。

而如果你寫入數據,一般來說也是寫到內存,稍后會有一個任務把內存中的數據寫入磁盤。

因此從這里我們可以看出,現代操作系統基本上是在把SSD當內存來用,更不用提磁盤交換空間,是不是很聰明,關于這一部分的詳細闡述請參見《深入理解操作系統》第七章。

ok,這個題外話就到這里。

讓我們回到原問題來。

虛擬內存

現代操作系統的內存管理都采用虛擬內存,這會帶來一個問題。

對于32位操作系統來說,其最大尋址范圍只有4G,也就是說如果你把SSD當做內存,即使SSD有1T,那么操作系統真正能用到的也只有4G,剩下的就都浪費掉了。

[[411996]]

因此,現代操作系統對內存的管理方式也無法讓我們把SSD當內用,除非修改操作系統。

當然,對于64位操作系統則不存在這個問題,因為64位操作系統可尋址空間足夠大,盡管這個空間足夠可觀也需要意識到這是有上限的。

使用壽命

SSD的制造原理決定了這類存儲設備是有固定使用壽命的。

你會發現SSD這貨就和車一樣,當跑出一定里程后就會出問題,在SSD中的里程數就是所謂的總寫入字節,TBW,全稱是Max Terabytes Written,最多能寫多少TB,以下是某種型號的SSD其TBW規格。

一般來說普通的 SSD 其 TBW 在幾百 TB,也就是說如果你的SSD寫入上百TB,那么很可能就要報廢了。

有的同學可能覺得這使用壽命也太短了吧,但實際上作為普通用戶,你的電腦不會有那么頻繁的寫SSD場景,每天寫磁盤的量應該會很小,當然頻繁下小電影除外,因此作為普通用戶你可以不用在意SSD的使用壽命問題。

但就像剛才說的,SSD畢竟是有TBW這個限制的,內存則沒有這個問題。

因此如果你把SSD當內存用的話,相信很快你的SSD就會被CPU寫死。

展望未來

受限于當代的存儲設備制造技術,我們還沒有辦法直接把SSD當做內存來用,我們的各種軟件包括操作系統、文件系統以及各種硬件包括CPU等都沒有做好把SSD當做內存來用的準備。

但隨著技術的進步,這一點未來可能會有改觀。

Intel已經發布了一種存儲設備,該設備就像SSD,但同時又可以支持像內存那樣隨機尋址。

也許在未來我們的內存也可以像SSD那樣,即使斷電內容也不會丟失,那樣的話你的電腦就沒有“關機”這種操作了,電腦加電后根本就沒有“啟動”一說,是不是很有趣。

[[411997]]

如果內存和磁盤一樣斷電后也不丟內容,那么會帶來什么有趣的新功能呢?

總結

SSD能否當做內存來用?這絕不是一個簡單的問題,這涉及到CPU、操作系統、文件系統、存儲設備制造原理等方方面面的問題,你需要對計算機系統有透徹的理解才能回答好這個問題。 

 

責任編輯:龐桂玉 來源: 良許Linux
相關推薦

2021-07-30 06:49:40

SSD內存CPU

2020-12-04 06:35:20

TCPUDP阿里

2022-10-18 08:38:16

內存泄漏線程

2020-01-14 11:23:16

SSDOP磁盤

2021-09-08 07:58:58

字節系統雙寫

2025-01-14 10:28:34

業務主表讀寫冷熱分離

2022-01-24 08:19:19

業務CRUD場景

2023-09-07 08:59:30

海量數據方案

2021-10-27 20:54:24

分庫分表高并發

2025-05-12 01:55:00

MySQL存儲數據

2021-03-24 09:23:45

代碼阿里應用分層

2021-03-16 16:35:39

網關Java代碼

2022-08-15 08:34:08

OauthCAS登錄

2021-03-17 15:54:32

IO零拷貝方式

2021-04-25 09:58:48

mmapJava面試

2025-04-30 10:49:11

Java序列化反序列化

2025-06-05 03:10:00

mmapmalloc共享內存

2024-10-30 09:42:43

固態硬盤SSD閃存

2023-02-26 17:24:53

8G內存線程

2024-03-22 13:31:00

線程策略線程池
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 第一区在线观看免费国语入口 | 国产三级 | 亚洲成人中文字幕 | 久久狠狠 | 香蕉久久网 | 亚洲一区二区三 | 99在线观看视频 | 男女羞羞视频在线观看 | 日韩视频在线免费观看 | 99视频在线 | 翔田千里一区二区 | 久久久久成人精品亚洲国产 | 91麻豆精品国产91久久久久久 | 九九九精品视频 | 免费麻豆视频 | 欧美a区 | 日韩和的一区二区 | 91视频进入 | 中国一级特黄真人毛片免费观看 | 亚洲精品三级 | 99热在线播放 | 国产精品免费一区二区 | 亚洲 欧美 综合 | 国产精品久久久久久吹潮日韩动画 | 亚洲不卡在线观看 | 中文字幕在线看 | 狠狠操你 | 日韩精品久久一区 | 在线视频日韩 | 一级一级一级毛片 | 日韩中文字幕免费在线观看 | 黄网免费看 | 久久久久久久久久性 | 久久久久国产 | 免费在线观看av网站 | 国产在线播 | 国产免费麻豆视频 | 日本高清不卡视频 | 亚洲乱码国产乱码精品精98午夜 | 亚洲免费人成在线视频观看 | 色综网 |