作為一個程式設計師,內存和磁碟的這些事情,你不得不知道啊

java的小本家 發佈 2020-03-02T11:39:59+00:00

所以大家對硬碟這個名詞不陌生,相對的,對磁碟的概念似乎就有點陌生了啥是磁碟首先記住,磁碟是個總的,也就是說磁碟包括硬碟,那麼還要知道磁碟是幹嘛的,磁碟最主要的功能就是保存電腦裡面的信息,但是磁碟又有一些分類,不過我們首先要知道,在計算機中,保存信息的有這麼兩類:第一:內部存儲器這

關於磁碟,你了解多少?

可能大夥聽到的比較多的是硬碟,畢竟這是我們每天使用電腦接觸比較多的一個概念,再加上現在買電腦基本上從之前的機械硬碟都過渡到了現在的固態硬碟。

所以大家對硬碟這個名詞不陌生,相對的,對磁碟的概念似乎就有點陌生了

啥是磁碟

首先記住,磁碟是個總的,也就是說磁碟包括硬碟,那麼還要知道磁碟是幹嘛的,磁碟最主要的功能就是保存電腦裡面的信息,但是磁碟又有一些分類,不過我們首先要知道,在計算機中,保存信息的有這麼兩類:

第一:內部存儲器

這個就是我們說的內存了,是由內存條提供內存空間,特點是存儲信息速度快,但是容量不大,而且很重要的一點就是只要一斷電,裡面什麼玩意兒都沒有了,斷電就會丟失所有的信息。

第二:外部存儲器

這個主要就是磁碟了,對就是磁碟,可不是硬碟,也不是內存,對於外部存儲器也就是磁碟而言,它有這麼些特性,首先就是不像內存那樣一斷電就丟失所有的信息,存儲的數據不會受到斷電的影響,但是它的速度相比內存那就慢的多了。

到了現在起碼知道在計算機中保存信息有兩類存儲器,一是內部存儲器,而是外部存儲器也就是磁碟,下面我們再來說說磁碟,其實磁碟也有分類

磁碟的簡單分類

一是:硬碟

這個我們就比較熟悉了,就是我們電腦中的c盤啊d盤啊,這裡再說一點,還記得之前說的這些其實就是硬碟空間的分區嘛,要記住c盤是主分區,是安裝作業系統的,其他盤可以叫做擴展盤,所以c盤也叫做系統盤,不過他們都屬於硬碟,而硬碟又是屬於磁碟的,這個關係要理清

二是:軟盤

好了到這裡你就要知道磁碟是分為硬碟和軟盤的,硬碟可能我們還比較清楚,這個軟盤估計很多人沒有太多概念,先來看張軟盤的圖片吧:

估計看到圖片有些人就會覺得有那麼點熟悉了,這就是軟盤了,那麼該如何解釋這個軟盤呢?其實你完全可以把軟盤理解之前之前的u盤,只不過在出現了真正的u盤之後,這個軟盤慢慢就都淡出了市場,要知道沒有u盤的時候,軟盤是很受歡迎的。不過科技總歸是在進步的嘛!

知道啥是磁碟緩存不

提到磁碟緩存,應該有不少人會想到CPU緩存,CPU緩存主要是為了解決速度匹配問題,因為CPU快內存慢,為了縮小速度差距帶來的問題引入了緩存,這裡的快慢主要針對的是對於數據的讀取。

那啥是磁碟緩存呢?

會不會有人覺得磁碟緩存在磁碟里?其實不是,磁碟緩存不是在磁碟中,而是在內存中。

對了,我覺得這裡非常有必要說下,我們這裡說的磁碟,一般就是指的咱們電腦上的硬碟,Windows電腦中的什麼C盤,D盤這些,我們的大部分數據信息也都是保存在這上面的。

其實磁碟緩存和CPU緩存的機制差不多。

磁碟緩存是把從磁碟中讀取到的數據保存到內存中,下次讀取該數據的餓時候不會再從磁碟中去讀取,而是直接從內存中讀取

緩存好像經常聽說

作為一個程式設計師,你一定會經常聽說緩存這個概念的,因為緩存在很多方面起到了很重要的作用,因為它的存在解決了很多問題,那啥是緩存啊。

緩存英文是cache,是不是很熟悉,我們現在提到緩存覺得它應該是一種技術,實現某種功能或者解決某個問題的一種方式,但是在最開始,緩存似乎並不是這樣的。

還記得之前說的RAM嗎?內存也即是主存的意思,然後還有DRAM(動態隨機存取存儲器)和SRAM(靜態隨機存取存儲器),之前的緩存其實是一種SRAM。

但是嘞,現在的緩存概念被擴展了,現在的緩存更代表一塊數據,比如我這麼這裡說的磁碟緩存,其實就是把磁碟中的部分數據保存到內存中,那麼保存到內存中的這塊數據其實就是緩存,下次如果要從磁碟中讀取數據會先從內存這裡的磁碟緩存中讀取,看看是不是有自己需要的數據,畢竟從內存中讀取數據要比從磁碟中讀取快太多了。

緩存概念的擴充

所以啊,對於現在的緩存,不僅CPU和內存之間有CPU緩存,在內存和磁碟之間也存在我們這次說的磁碟緩存,甚至在硬碟和網絡之間也存在緩存,比如網絡內容緩存。

這裡舉個例子吧,比如我們上網瀏覽一張圖片,第一次瀏覽加載該圖片的時候其實是比較慢得,但是我們下次再次打開該網的這個圖片,速度就會快很多,那是因為這張圖片數據保存在了我們的硬碟上,再次讀取是直接從我們的硬碟上讀取,而不是從伺服器上拉取了。

所以啊,看了那麼多,其實緩存這玩意就是把低速設備的數據保存在高速設備上,需要的時候直接從高速設備上將其讀取。

不讀入內存就無法運行?

這是咋回事,相信看了我之前幾篇分析CPU和內存的文章就知道我這裡說的什麼意思了,CPU被設計成只能從內存中讀取數據來運行相關程序,而內存中的數據是哪裡來的呢?

我們平常寫的程序啥的都是保存在本地硬碟中,好吧,是磁碟,我們上面說的磁碟,但是你得知道磁碟和硬碟他們之間啥關係啊。

要想這個程序被運行,那麼首先需要把這段程序數據加載進內存,只有進了內存才能被CPU讀取運行啊,也就是這麼個圖:

簡單來說,就這麼個情況。

虛擬內存很有料

虛擬機內存這塊包含的知識點我個人覺得挺複雜的,可以單獨拿出來講一講了,不過在這裡不打算鋪開來將,其實大部分時候,我們還真沒有必要一下就把這些知識弄得很深深透。

啥是虛擬內存

不是不可,只是目前不是很有必要,我們只需要只能一些就差不多了。

那麼對於虛擬內存來說,我們首先要搞清楚,什麼是虛擬機內存?

有個概念是這麼說的:

虛擬機內存是把磁碟的一部分作為假想的內存來使用

聽起來有點魔幻,不是那麼好理解,不直觀,首先虛擬內存肯定不是真的內存,雖然不是真的是虛擬的,但是人家也叫內存,所以,虛擬內存能夠起到內存的一些作用,啥意思嘞?

我們知道,程序需要加載進內存供CPU讀取運行,如果內存空間不夠,如何運行大內存程序呢?

比如說現在內存空間僅剩10M,但是現在有個大小20M的程序需要運行,在沒有虛擬內存的情況下,這個程序是無法被運行的,但是有了虛擬內存就可以,虛擬內存通過特定技術把磁碟中的一部分容量作為內存來使用,也就是說會把這個20M大小的程序的部分數據存放在磁碟中的這塊虛擬內存中,然後在真正的內存中也存放部分這個程序的數據,在運行這個程序的時候,如果所需要的數據沒有在內存中,而是在磁碟中的虛擬內存中,那麼就會發生數據交換,把虛擬內存中需要現在用到的數據與內存中這段程序暫時不用的數據進行交換,以此來保證程序的正常運行。

這,就是虛擬內存了。

其實吧,關於虛擬內存還有很多可以說的,但是,還是之前那句話,沒必要非得現在把它們全部搞定,只了解那些必要的知識,這才是所謂的高效學習。

關鍵字: