1. 簡介
從概念上講,一台計算機可以抽象為下圖的模型
CPU,內存以及I/O設備都由一條系統總線連接起來並通過總線與其他設備通信
2. CPU
CPU是計算機的大腦,它從內存中取出指令並執行。
2.1 CPU的工作流程
從內存中取出指令,對取出的指令進行解碼,執行,CPU就是一直不斷的重復這個過程。
圖1.1CPU工作流程
2.2 超標量CPU
流水線作業效率不高,於是就引入了超標量CPU
超標量CPU是這樣工作的,多個取值和解碼同時進行,取值解碼完成后的指令會進入緩沖區,緩沖區對應多個執行單元,每當緩沖區中有指令且有空閑的執行單元時,就會從緩沖區取出指令進入執行單元執行.
圖1.2超標量CPU工作流程
2.3 內核態和用戶態
多數CPU多有兩種模式,內核態和用戶態
在內核態運行時,CPU可以執行指令集的每一條指令,使用硬件的全部功能
在用戶態運行時,CPU只能執行指令集的一個子集和訪問所有功能的一個自己
在台式機和服務器上,操作系統在內核態運行。在大多數嵌入式系統中,一部分操作系統在內核態運行,其余部分在用戶態運行
3. 存儲器
3.1 存儲器分為四個層次
寄存器 高速緩存 內存 硬盤
圖2.1存儲器的四層
3.2 寄存器
寄存器存在於CPU中,訪問和CPU一樣快,沒有時延
3.3 高速緩存
常用的高速緩存行放置在CPU內部或非常接近CPU的位置
3.3.1 高速緩存命中
當程序需要讀取一個字時,檢查所需要的字是否在高速緩存中,如果在高速緩存中,稱為高速緩存命中
如果高速緩存未命中,就要通過總線,把訪問請求傳遞到內存,這帶來了訪問速度的下降
PS:緩存
大量的資源存在於計算機存儲器的某一處,其中一小部分資源會被頻繁的用到,把頻繁用的資源放到比大量資源更高層次的存儲器中,這就是緩存。
計算機在讀取文件時,將硬盤中頻繁用的文件放入內存中,這就是緩存的應用。
使用緩存時我們需要考慮幾個問題
1)何時把資源放入緩存中
2)把資源放在存儲器的哪一層上
3)在緩存滿了時,把什么內容從緩存中移走
4)移走的內容又該放到何處
3.3.2 內存
內存通常成為隨機訪問存儲器(RAM),速度比磁盤快,程序先進入這里執行,內存具有斷電數據消失的特性。
PS:閃存
速度介於內存和磁盤間,斷電后數據不消失
3.4 磁盤
3.4.1 磁盤工作流程
像是老式的唱片機,一個又一個重疊起的圓盤,每個圓盤上配有一個指針,當從磁盤讀取數據時指針不斷旋轉,讀取一段環形區域,這段環形區域叫做磁道。
圖2.2 磁盤的工作流程
我們常講硬盤的轉速,多少MB每秒,從磁盤的工作流程上我們可以了解到,磁盤的轉速就是磁盤臂旋轉的速度
3.4.2 固態硬盤
固態硬盤和普通磁盤不是同一種工作方式,固態硬盤其實是一種閃存
3.4.3 虛擬內存
計算機的虛擬內存機制就是將磁盤中需要反復讀取的內容放到內存中,加快計算機的速度,也是一種緩存的應用
4. I/O設備
I/O設備分為兩個部分 設備控制器和設備本身
4.1 設備控制器
設備控制器是插在電路板上的一塊芯片或一組芯片,他是操作系統和設備之間的橋梁,配合操作系統操作設備,操作系統對它發成命令,它對操作系統的命令進行復雜的轉換,控制設備。
圖3.1設備控制器
4.2 設備本身
硬盤,鍵盤,鼠標,顯示器等等
設備本身有一個相對簡單的標准化接口,比如創建的SATA硬盤,SATA就是設備的接口名
4.3 設備驅動程序
操作系統如何操作設備控制器呢,這個答案就是在操作系統上安裝設備控制程序,設備控制程序負責與控制器對話,發出命令,接受響應。
4.4 實現輸入輸出的三種方式
1)忙等待:用戶程序發起一個系統調用,內核將其翻譯成一個對應設備驅動程序的過程調用。設備驅動程序啟動I/O,循環的檢查設備是否完成工作,當完成工作后,設備驅動程序將設備返回的數據送到指定的位置,隨后操作系統將控制返回給調用者。
缺點:顯而易見,在設備執行完成前,要一直占用CPU,CPU要一直循環的檢查,這期間用戶什么也不能干
2)中斷控制:設備驅動程序啟動設備,讓該設備在操作完成時發出一個中斷,驅動程序將中斷傳遞給操作系統。
3)直接存儲器訪問:為I/O操作使用一種特殊的芯片(DMA),它無需持續的CPU干預,直接控制內存和控制器之間通信,操作完成后,也發出中斷。
5. 總線
一條連接計算機上所有硬件的線
5.1 PCI總線
多個設備使用同一條導線傳輸數據,當多個設備需要發送數據時,仲裁器決定哪個設備可以使用總線。(已經過時了)
5.2 PCIe總線
端到端的鏈路,即每個設備都擁有單獨的一條導線用來發送數據
6. 啟動計算機
學完了計算機相關的硬件知識,我們來了解一下啟動計算機時,計算機內部是如何工作的
首先,BIOS開始運行,它掃描I/O設備,存儲器是否安裝正常,接着掃描出總線上的所有設備,隨后從硬盤中找出一個啟動裝載模塊,這個啟動裝載模塊負責啟動操作系統(WINDOWS/LINUX),然后,操作系統詢問BIOS獲得每種設備的配置信息,操作系統檢查對應設備的驅動程序是否安裝正常,如果全部正常,操作系統將他們調入內核,創建需要的所有進程,在終端上啟動登錄程序。