計算機組件簡介
計算機分為5大組件:
1. 運算器
2. 控制器
3. 存儲器
4. 輸入設備
5. 輸出設備
CPU是中央控制器,是控制器和運算器,是一台計算機的運算核心和控制核心;
存儲器主要功能是存儲程序和各種文件;
輸入、輸出設備我們一般統稱為I/0設備,用於連接計算機內外部,而這些組件的連接則需要總線和主板來完成。
主頻
主頻也叫時鍾頻率,用來表示CPU的運算,處理數據的速度。通常,主頻越高,CPU處理數據的速度就越快。
不能單純的以為CPU的主頻越高,性能就越好。是需要在相同條件下的對比才有效。
CPU緩存
cpu緩存位於CPU和內存之間的臨時存儲器,它的容量比內存小,但是交換速度比內存快。
cpu的緩存主要是解決cpu運算速度和內存讀寫速度不匹配的原因,因為cpu運算速度要比內存讀寫快很多,這樣會使cpu花費很長時間等待數據到來或者把數據寫回到內存。
在cpu緩存中的數據是內存中的一部分,但這一小部分是短時間內CPU即將訪問到的,當CPU調用數據時,就可以直接從緩存中取得,
從而加快速度,因此在cpu中加入緩存是一種高效的解決方案這樣這個內存儲器(cache+內存)就變得即有cache高速,又有內存的大容量的存儲系統。
按照數據讀取順序和與CPU結合的緊密程度,CPU緩存可以分為一級緩存,二級緩存,三級緩存,每一級的緩存中的所有數據都是下一級緩存
的一部分。這三種緩存的技術難度和制造成本是相對遞減的,所以其容量也是相對遞增的。當CPU要讀取一個數據時,首先從一級緩存中查找,
如果沒有找到再從二級緩存中查找,如果還是沒有,就從三級緩存中或者內存中找。一般來說,每級緩存的命中率大概都在80%,
也就是說全部數據量的80%都可以從一級緩存中獲取,只剩下20%的總量才需要到二級緩存、三級緩存、內存中讀取,
因此一級緩存是整個CPU緩存架構中最為重要的部分。
Memory
存儲器分為內存存儲器和外存儲器,外存主要是U盤、硬盤等,一般意義上我們會講外存歸類於I/0設備。所以這里的存儲器我們僅僅指的是內存。
內存是計算機中重要的部件之一,它的誕生是為了解決CPU的高速運算和硬盤讀寫速度緩慢的嚴重不匹配,它是與CPU進行溝通的橋梁,是CPU能直接尋址的存儲空間。
我們平時使用的軟件,都是安裝到外存的,但是想要使用軟件,就必須把軟件調入內存中運行起來,才能使用其功能。
內存就是暫時存儲程序和數據的地方,比如當我們使用WPS處理文稿時,當你在鍵盤上敲入字符時,字符就被存入內存中,當你選擇存盤時,內存中的數據才會被存儲外存中。
內存一般采用半導體存儲單元,分為以下三種:
(1)隨機存儲器(RAM)
(2)只讀存儲器(ROM)
(3)高速緩存(CACHE)
ROM
ROM表示只讀存儲器(Read Only Memory),在制造ROM的時候,信息(數據或程序)就被存入並永久保存。這些信息只能讀出,一般不能寫入,即使機器停電,
這些數據都不會丟失。比如 光盤、bios rom
RAM表示隨機存儲器
RAM表示隨機存儲器(Random Access Memory)表示即可以從中讀取數據,也可以從中寫入數據。當機器電源關閉時,存於其中的數據就會丟失。我們通常購買的內存條就是RAM.
CACHE
高速緩沖存儲器(cache)就是cpu緩存。
I/O設備
I/O(input/output),即輸入/輸出設備,每個設備都一個專用的I/O地址。用來處理自己的輸入輸出信息。
輸入設備:鍵盤、鼠標
輸出設備:顯示器、打印機
BUS
總線(bus)是由導線組成的傳輸線束。它是cpu、內存、輸入、輸出設備傳遞信息的公用通道,主機的各個部件通過總線相連接,外部設備通過相應的接口電路再與
總線連接,從而形成了計算機硬件系統。
問:為什么32位系統最大只能支持4G內存?
答:32為代表的是地址總線的位寬,總線的位寬指的是總線能同時傳送的二進制數據的位數,而地址總線的位寬決定了CPU可直接尋址內存空間的大小,由於是二進制
每個尋址空間只能用0、1兩種,所以32位系統的尋址空間就是2^32=4G
按照傳輸方式分類:
(1)串行總線:所有信號復用一對信號線,串行總線通信速率比較低,但在數據通信量不是很大的微型處理器電路中,顯得便捷靈活
(2)並行總線:每個信號都有自己的信號線,並行總線通信速度快,實時性好。但是成本會增加。
主板
主板提供了一系列結合點,供處理器、顯卡、聲卡、硬盤、存儲器、I/O設備接合。
操作系統的作用
屏蔽硬件物理特性和操作細節,向上輸出統一接口,為用戶使用計算機提供了便利。
操作系統將底層計算機所提供的各種計算能力抽象為統一的接口軟件,無論底層是AMD的cpu還是inter的cpu,都統一成一個提供計算能力的,也不管內存是1G、2G、4G
都統一成32位系統4G內存,64位系統多少內存。所以程序員寫程序就大大的簡化了。
問:是不是軟件一定要安裝到操作系統上才能運行?
答:不是絕對的。可以直接對硬件設備進行編程。
操作系統的組成
(1)內核(kernel)
內核,是一個操作系統的核心。從不同的角度來看,內核擔任的角色不同。
從純技術角度來看,內核只是軟件和硬件的一個中間層,它把軟件發來的請求發送給硬件,完成尋址等操作,還充當了底層驅動。
從應用程序的角度來看,內核是對硬件的一個高層次的抽象,應用程序與硬件沒有直接聯系,只與內核有聯系,內核是應用程序知道的最底層。
從多個並發的進程角度來看,內核是一個資源管理器,它完成對進程的切換,調度,共享計算機資源。
從接口的角度來看,內核是一個庫,同系統調用向內核發送各種請求。
(2)系統調用(system call)
在cpu的所有指令中,有一些指令是非常危險的,如果所有程序都能使用這些指令,是非常危險的,一旦出錯就會導致整個系統崩潰。如:清空內存。
所以,CPU將指令分為特權指令和非特權指令。對於危險的特權指令,只允許操作系統的內核使用,普通程序就只能使用非特權指令。
問:一個應用程序肯定是特權指令和非特權指令都要使用到的,怎么辦?
答:操作系統將程序的運行空間分為內核空間和用戶空間(內核態和用戶態)他們分別運行在不同的級別上,邏輯上是相互隔離的。
用戶進程在通常情況下是不允許訪問內核數據的,它也就無法使用內核函數,他們只能在用戶空間操作用數據,調用用戶空間的函數。
cpu將特權級別分為4個特權級別RING0,RING1,RING2,RING3 RING0作為內核空間,沒有使用RING1,RING2 RING3不能訪問RING0的地址空間,包括代碼和數據
(程序 = 指令 + 數據)而系統調用正是操作系統向用戶程序提供支持的接口,系統調用把應用程序的請求傳給內核,調用相應的內核函數完成所需處理,
內核再將處理的結果返回給應用程序。
注意:系統調用並非每一個時刻都在發生,只有那些特權指令才需要通過系統調用接口去請求內核。而一些非特權指令並不需要調用內核而直接可以運行在CPU上。
問:應用程序如何在用戶空間和內核空間切換?
答:當進程在執行用戶自己的代碼時,我們稱為處於用戶空間,此時處理器在特權級別最低的用戶代碼中運行。每當用戶進程使用系統調用時,都自動的將運行模式
從用戶級轉為內核級,此時進程在內核的地址空間中運行。當一個進程執行系統調用而陷入內核代碼中執行時,我們就稱進程處於內核態。此時處理器處於特權
最高的內核代碼中執行。
問:為什么應用程序不能直接調用內核?
答:現代的操作系統都具有多任務處理的功能。通常是靠進程來實現。由於操作系統快速的在每個進程間切換執行,所以一切看起來就會像同時的。
如果每個應用程序都可以直接調用內核,那么一個進程就可以輕易修改另一個進程內存空間中的數據,來導致另一個應用程序的中斷或異常。