程序員需要了解系列:CPU,內存

什麼是CPU?

CPU 的全稱是 Central Processing Unit,它是你的電腦中最硬核的組件,這種說法一點不爲過。CPU 是能夠讓你的計算機叫計算機的核心組件,但是它卻不能代表你的電腦CPU 與計算機的關係就相當於大腦和人的關係。它是一種小型的計算機芯片,它嵌入在臺式機、筆記本電腦或者平板電腦的主板上。通過在單個計算機芯片上放置數十億個微型晶體管來構建 CPU。 這些晶體管使它能夠執行運行存儲在系統內存中的程序所需的計算,也就是說 CPU 決定了你電腦的計算能力

CPU的內部結構

CPU 的核心是從程序或應用程序獲取指令並執行計算。此過程可以分爲三個關鍵階段:提取,解碼和執行。CPU從系統的 RAM 中提取指令,然後解碼該指令的實際內容,然後再由 CPU 的相關部分執行該指令。

CPU 負責的就是解釋和運行最終轉換成機器語言的內容。

CPU 主要由兩部分構成:控制單元 和 算術邏輯單元(ALU)

控制單元:從內存中提取指令並解碼執行
算數邏輯單元(ALU):處理算數和邏輯運算

CPU 是計算機的心臟和大腦,它和內存都是由許多晶體管組成的電子部件。它接收數據輸入,執行指令並處理信息。它與輸入/輸出(I / O)設備進行通信,這些設備向 CPU 發送數據和從 CPU 接收數據。

從功能來看,CPU 的內部由寄存器、控制器、運算器和時鐘四部分組成,各部分之間通過電信號連通。

什麼是內存?

計算機所有程序的運行都是在內存中運行的,內存又被稱爲主存,其作用是存放 CPU 中的運算數據,以及與硬盤等外部存儲設備交換的數據。只要計算機在運行中,CPU 就會把需要運算的數據調到主存中進行運算,當運算完成後CPU再將結果傳送出來,主存的運行也決定了計算機的穩定運行。

主存通過控制芯片與 CPU 進行相連,由可讀寫的元素構成,每個字節(1 byte = 8 bits)都帶有一個地址編號,注意是一個字節,而不是一個位。CPU 通過地址從主存中讀取數據和指令,也可以根據地址寫入數據。注意一點:當計算機關機時,內存中的指令和數據也會被清除。

內存(Memory)是計算機中最重要的部件之一,它是程序與CPU進行溝通的橋樑。計算機中所有程序的運行都是在內存中進行的,因此內存對計算機的影響非常大,內存又被稱爲主存,其作用是存放 CPU 中的運算數據,以及與硬盤等外部存儲設備交換的數據。只要計算機在運行中,CPU 就會把需要運算的數據調到主存中進行運算,當運算完成後CPU再將結果傳送出來,主存的運行也決定了計算機的穩定運行。

主要分爲三種存儲器

隨機存儲器(RAM):內存中最重要的一種,表示既可以從中讀取數據,也可以寫入數據。當機器關閉時,內存中的信息會 丟失。

只讀存儲器(ROM):ROM 一般只能用於數據的讀取,不能寫入數據,但是當機器停電時,這些數據不會丟失。

高速緩存(Cache):Cache 也是我們經常見到的,它分爲一級緩存(L1 Cache)、二級緩存(L2 Cache)、三級緩存(L3 Cache)這些數據,它位於內存和 CPU 之間,是一個讀寫速度比內存更快的存儲器。

數組定義

數組是指多個相同的數據類型在內存中連續排列的一種形式。作爲數組元素的各個數據會通過下標編號來區分,這個編號也叫做索引,如此一來,就可以對指定索引的元素進行讀寫操作。

首先先來認識一下數組,我們還是用 char、short、long 三種元素來定義數組數組的元素用[value] 擴起來,裏面的值代表的是數組的長度

數組定義的數據類型,也表示一次能夠讀寫的內存大小,char 、short 、long 分別以 1 、2 、4 個字節爲例進行內存的讀寫。

關於棧和隊列:

棧(stack)
一種很重要的數據結構,棧採用 LIFO(Last In First Out)即後入先出的方式對內存進行操作
。它就像一個大的收納箱,你可以往裏面放相同類型的東西,比如書,最先放進收納箱的書在最下面,最後放進收納箱的書在最上面,如果你想拿書的話, 必須從最上面開始取,否則是無法取出最下面的書籍的。

棧的數據結構就是這樣,你把書籍壓入收納箱的操作叫做壓入(push),你把書籍從收納箱取出的操作叫做彈出(pop)

隊列
隊列和棧很相似但又不同,相同之處在於隊列也不需要指定元素的地址,不同之處在於隊列是一種 先入先出(First In First Out) 的數據結構。隊列在我們生活中的使用很像是我們去景區排隊買票一樣,第一個排隊的人最先買到票,以此類推,俗話說: 先到先得。

隊列的實現一般有兩種:順序隊列 和 循環隊列。
循環隊列一般是以環狀緩衝區(ring buffer)的方式實現的,它是一種用於表示一個固定尺寸、頭尾相連的緩衝區的數據結構,適合緩存數據流。

鏈表
下面我們來介紹一下鏈表和 二叉樹,它們都是可以不用考慮索引的順序就可以對元素進行讀寫的方式。通過使用鏈表,可以高效的對數據元素進行添加 和 刪除操作。而通過使用二叉樹,則可以更高效的對數據進行檢索。

鏈表的添加不涉及到數據的移動,所以鏈表的添加和刪除很快,而數組的添加涉及到數據的移動,所以比較慢,通常情況下,使用數組來檢索數據,使用鏈表來進行添加和刪除操作。

二叉樹
二叉樹也是一種檢索效率非常高的數據結構,二叉樹是指在鏈表的基礎上往數組追加元素時,考慮到數組的大小關係,將其分成左右兩個方向的表現形式。二叉樹是由鏈表發展而來,因此二叉樹在追加和刪除元素方面也是同樣有效的。這一切的演變都是以內存爲基礎的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章