作爲一個程序員,內存的這些硬核知識你必須懂!

我們之前講過CPU,也說了CPU和內存的那點事兒,今天咱就再來說說有關內存,作爲一個程序員,你必須要懂的哪那些硬核知識!

大白話聊一聊,很重要!

先來大白話的跟大家聊一聊,我們這裏說的內存啊,其實就是說的我們電腦裏面的內存條,所以嘞,內存就是內存條,數據要放在這上面才能被cpu讀取從而做運算,還有硬盤,就是電腦中的C盤啥的,一個程序需要運行的話需要向內存申請一塊獨立的內存空間,這個程序本身是存放在硬盤上的,申請完內存之後會存放在內存上。

如果一個程序不經常使用,操作系統會把這個程序的數據從內存上移動到硬盤上,如果這個程序再次被喚醒,操作系統會再次將硬盤上的數據重新交換到內存上,這個時候可以聽到硬盤吱吱的響😂

比如我們使用移動硬盤的時候,在電腦上打開移動硬盤上的文件,會聽見移動硬盤響起來,這個就是在讀取硬盤上的文件,這個效率其實是很低的​

內存到底是個啥?

上面我們說了,內存就是內存條,那麼這句話準確嗎?肯定有人說,不對,什麼內存就是內存條啊,淨是瞎扯😒,那到底是不是呢?其實還真不是,那我爲啥還那樣說,形象啊,有助於你理解啊😂,接下來咱們就來深挖一下,過後,你就明白了!

先從內存條說說

前面說過了,內存條嘛,作爲程序員的我們肯定都知道,就是那短短的扁扁的一個小電路板,而且還不便宜,對的,實際存在的這個內存設備也就是我們說的內存條,它是一個電子元件,內存的實質是內存IC(後面會詳細說),這個IC就是集成電路的意思。

內存條不會忘了長啥樣吧?來個圖

在這裏插入圖片描述
我之前經常買金士頓的😁

內存就是內存條?

不過嘞,我們再詳細的來說,內存其實是個比較廣的概念,啥意思嘞,你說這個內存,碰到槓精就會說,你說的內存是物理內存還是虛擬內存啊,我們這裏說的內存肯定是與我們平常寫代碼有密切關係的,也就是保存我們程序數據爲我們的程序運行提供臨時存儲的地方,基於此,我們這裏來明確下我們這裏說的內存

我們這裏說的內存實際上說的是指物理內存,也就是實際存在的一個設備,通常來說就是指我們安裝內存條而獲得的存儲空間,我們使用它的主要作用就是在計算機運行的時候爲操作系統和各種程序提供一種臨時存儲。

現在知道我們這裏說的內存一般是指物理內存,我們習慣了也就直接叫內存了,這個內存更爲正式的來說是隨機存取存儲器,英文名稱是Random Access Memory,縮寫就是取首字母也就是RAM,所以啊記住了,以後再看到RAM就是指的內存,也就是隨機存取存儲器,另外它還叫做主存,也就是主要的存儲器,是電腦中最主要的存儲器,因爲它是直接與CPU進行數據交換,讀寫速度較快,用來加載各種各樣的程序和數據來供CPU直接運行與使用。

現在簡單總結下,作爲程序員來說,我們需要知道的內存指的是能夠與CPU直接進行數據交換的存儲器,放在電腦上就是內存條,正式的名字叫做隨機存取存儲器,也叫做主存,是電腦中最主要的存儲器,英文縮寫是RAM

內存?是不是還有外存?

內存和外存?這個咋理解?內存安裝在裏面,外存安裝在外面?不對吧,內存條是安裝在電腦內部的,硬盤也是安裝在電腦內部的啊?

這裏的內存和外存可不是這樣理解的,簡單來說,內存就是斷電的話保存的數據會丟失,對應的外存斷電后里面保存的數據不會丟失。

DDR3?DDR4?

這個大家熟悉吧,我們要是換內存條的話一定要看看我們的電腦支持是哪一種,不然就是白花錢啊,我之前就買錯過一次,源於自己的太自信😂

我們已經知道了啥是內存,也知道了我們這裏的內存也是主存,RAM,它們都是一個品種,一樣的,這個RAM是一般的隨機存取存儲器,除此之外還有DRAM,這又是啥嘞,RAM是隨機存取存儲器,這個DRAM是動態隨機存取存儲器,對應的還有SRAM叫做靜態存取存儲器

DRAM結構簡單,單位體積內容量高成本低,但是訪問速度慢,耗電大,相應的SRAM結構複雜,成本高等。無論DRAM還是SRAM都屬於內存,也就是斷電會丟失數據,綜合來說DRAM的性價比比較高,擴展性也很好,所以就成了現在廣爲流行的電腦主存,

然後你還要知道SDRAM,這是啥嘞,DRAM是動態隨機存取存儲器,SDRAM是同步動態隨機存取存儲器,也就是比DRAM更牛,升級版,然後還有DDR SDRAM,不用說,這肯定是SDRAM的升級版,這個叫雙倍數據率同步動態隨機存取存儲器,哈哈,這名字可以的,繼續,還有DDR3 SDRAM,知道這個是啥不,對的,第三代雙倍數據率同步動態隨機存取存儲器,哈哈,還有DDR4 SDRAM,知道了吧,那麼我們電腦中的DDR3和DDR4知道怎麼回事了吧。

內存的原本模樣(物理機制)

我們之前已經說過了內存就是主存,也叫做隨機存取存儲器,縮寫是RAM,然後還說了什麼DRAM,SRAM然後還有DDR SDRAM等等,這些其實都是內存,只不過是各自的形式不同,但是實實在在的一個電路板,就我們能拿在手裏的內存條,他們的物理機制其實都差不多,都有什麼電源,地址信號,數據信號和控制信號等等,下面我們來看一張圖你就清楚了

內存引腳配置

啥是內存IC

這個內存IC其實就是內存中用來真正保存數據的地方,也就是內存提供的容量所在,因此,可以說內存的實質就是內存IC,先知道這些,我們繼續往下說,這個內存IC後面還會說的。

剛開始看這個圖一定是懵的,那麼我們先來看一個問題,就是**這個圖代表的內存能夠存儲多少數據呢?**接下來我們就以這個圖開始說,最後如果你能明白這個內存能存儲多少數據,目的就達到了。

上圖的各個標誌已經有說明了,VCC和GND是鏈接電源的地方,通上電之後這玩意就帶電了,我們之前應該知道,數據都是以二進制的形式存放在內存中的,也就是0和1,這個是通識,那麼這個0和1是怎麼表示的呢?

看這個圖,當VCC和GND通上電以後,就可以給其他引腳傳遞1或者0的信號,這裏的引腳就是A0-A9,這是地址信號引腳,D0-D7這是數據信號引腳,1或者0是根據電壓來表示的。

通常嘞,+5V的直流電壓表示1,0V就是0,也就是說啊,通上電以後嘞,這裏的數據信號引腳D0-D7這八個引腳可能是+5V或者是0V,也就是可以表示0或者1,一個引腳相當於一位,這位上可以是0或者1,然後這八個引腳都可以表示對應的0或者1,這樣就可以形成一個八位的用0和1表示的數據,這其實就是二進制啊。

D0-D7可以表示具體的數據,這也是存放在內存中的數據的底層表現形式,同樣的,上面的地址信號引腳也是一樣的道理,每個引腳可以表示1或者0,這樣地址信號引腳和數據信號引腳確定以後,地址信號引腳組成的0和1的這個數據就叫做我們熟知的內存地址,根據它我們就可以找到數據信號引腳代表的數據了。

上面說的可能有點小難懂,不理解的多讀幾遍,對照着圖哦

內存IC的容量怎麼看

那麼這個內存可以存儲多少個數據嘞,我們知道數據信號引腳來表示具體的數據,需要通過地址信號表示的二進制數據來找到它,也就是說每個地址信號代表的的數據是對應着一個數據信號引腳表示的真實數據的,所以嘞,地址信號引腳可以表示多少個數據不就代表這個內存可以存放多少數據嘛,這裏的地址信號引腳有A0-A9,也就是10個,因此它可以表示0000000000----1111111111之間的數據,有多少嘞,一共有1024個。

所以啊,這個內存可以存儲1024個1字節的數據,對了,數據信號引腳八個代表一個字節的數據,也就是一個引腳代表1位,也就是1bit,8bit就是一個字節,也即是1byte,然後1024byte又等於1KB,所以,這個內存IC最終的容量就是1KB

你可能會說,這也太小了點了吧,確實小,作爲程序員的我們,電腦中使用的內存最低也得8GB吧,這得多少個內存IC啊,這裏你可能會有點迷糊,我詳細的說下。

內存引腳配置

再來說內存IC

知道這個吧,我們把這個叫做內存IC,IC是集成電路的意思,這個內存IC其實有兩種,你只需要知道其中一種叫做內存顆粒或者內存芯片的就行,我們這裏說的內存IC更爲準確來說其實就是內存顆粒,是鑲嵌在內存條上的,看個圖就知道了
在這裏插入圖片描述
哈哈,弄來弄去就這兩張圖😂,這個是內存條,都認識吧,上面那黑的一塊一塊的其實就是內存顆粒,也就是我們上面說的內存IC,那麼你可能會說,上面那個內存IC的容量才1KB,我們平常用的話最低也得8GB,這也鑲不下啊,如果都是容量1KB的內存IC,當然鑲不下,因此容量更大的內存條則需要容量更大的內存IC,這個口蹄疫通過內存IC上的引腳數量來實現,不過這個也更加複雜有難度,當然,容量越大,內存條也越貴啊,就是這麼個道理。

程序員眼中的內存

上面我們把內存稍微深入的說了一遍,相信你看下來一定有不少收穫吧,當然,我不排除你沒有看懂😂,如果真的沒有看懂,可以多看幾遍,當然,也許你是個大神,發現我哪裏說錯了,如果是這樣,還勞煩指教一下哦😁

那麼我們作爲一個程序員,每天就是寫寫代碼,我們需要知道什麼內存IC,什麼這信號那引腳的嗎?

其實吧,我覺不是很有必要,但是知道總比不知道強,不過下面的這些你可一定要知道啊。

如何形象的去理解內存

在之前的文章中曾經介紹過內存,那時候說我們可以把內存看成一個個的小格子,就像這樣

在這裏插入圖片描述
這樣的一個個的小格子,裏面主要存放數據和一些指令,然後每個格子還有對應的編號,這個編號就叫做內存地址,想想,這裏的編號是不是就是上面說的內存IC中的地址信號引腳組成的數據,然後每個格子中存放的數據和指令就是通過內存IC中的數據信號引腳來表示的。然後你還可以想象成,每個格子可以存放1字節的數據,也就是內存IC中的那八個信號引腳,對應起來了吧,那麼一個容量爲1KB的內存(只含有一個內存顆粒,容量就爲1KB),這樣的格子就有1024個,畫成圖就是這樣的

在這裏插入圖片描述
然後我們還知道在java中是有數據類型的,數據類型的作用簡單說就是決定數據在內存中暫用多少內存空間,這裏也就是要佔用多少個小格子,我們知道在java中int代表整型佔4個字節,這裏一個格子可以保存1字節的數據,那麼int就需要佔用4個小格子。對於作爲程序員的我們,就應該這樣來理解內存,這樣更加形象,有助於我們更好的編程。

這些硬核真的硬?

看到這裏,你想一下,瞭解了上述知識,下載在當你寫下一個

int a = 10;

的時候,你是不是會想,int向內存申請四個小格子,每個格子有對應的內存地址,然後10轉換成二進制數據存放在這些小格子裏,實際上是內存IC中的數據信號引腳按照轉換後的二進制,也就是0和1來決定每個引腳是+5V直流電壓還是0V電壓,當然,內存地址即使地址信號引腳啦……

然後巴拉巴拉想一大堆,你看,瞭解了這些關於內存的硬核知識,我們寫代碼是不是就不僅知其然還知其所以然了😁

好啦,關於內存,咱就先聊這些,這可都是你必須知道的硬核知識啊,對了,推薦和以下幾篇一起食用,風味更佳!

作爲一個程序員,CPU的這些硬核知識你必須會!

一個程序在計算機中是如何運行的?超級乾貨!!!

相信看過這三篇文章以後,你一定能收穫很多幹貨!,喜歡的話別忘了點贊哦!😍

感謝閱讀

大學的時候選擇了自學Java,工作了發現吃了計算機基礎不好的虧,學歷不行這是沒辦法的事,只能後天彌補,於是在編碼之外開啓了自己的逆襲之路,不斷的學習Java核心知識,深入的研習計算機基礎知識,所有心得全部書寫成文,整理成有目錄的PDF,持續原創,PDF在公衆號持續更新,如果你也不甘平庸,那就與我一起在編碼之外,不斷成長吧!

其實這裏不僅有技術,更有那些技術之外的東西,比如,如何做一個精緻的程序員,而不是“屌絲”,程序員本身就是高貴的一種存在啊,難道不是嗎?

非常歡迎你的加入,未來的日子,編碼之外,有你有我,一起做一個人不傻,錢很多,活得久的快樂的程序員吧!

回覆關鍵字“PDF”,獲取技術文章合集,已整理好,帶有目錄,歡迎一起交流技術!

另外回覆“慶哥”,看慶哥給你準備的驚喜大禮包,只給首次關注的你哦!

任何問題,可以加慶哥微信:H653836923,另外,我有個交流羣,我會***不定期在羣裏分享學習資源,不定時福利***,感興趣的可以說下我邀請你!

對了,如果你是個Java小白的話,也可以加我微信,我相信你在學習的過程中一定遇到不少問題,或許我可以幫助你,畢竟我也是過來人了!

在這裏插入圖片描述

感謝各位大大的閱讀🥰

發佈了152 篇原創文章 · 獲贊 4171 · 訪問量 53萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章