計算機基本體系結構
CPU(運算器、控制器、寄存器)
運算器:進行數字運算、邏輯運算
控制器:控制數據的存取
寄存器:運算過程中數據的暫存位置
RAM
數據存儲單元,每8位一個存儲單元,稱為cell
每個cell都有一個唯一的十六進制地址標識,0x00,00x01
為了確保CPU能在內存中尋址尋找數據,中間需要一個中間件,稱為north bridge
CPU采用線路復用(32位電路)的方式完成數據尋址、數據存儲等,例如00表示尋址、01表示數據讀取等
PAE Physical Address Extension 物理地址擴展
在32位電路上又加了4位電路, 使32位CPU支持能夠使用大於4G的內存
CPU緩存
將RAM中具有熱區的數據緩存,加快CPU讀取數據速度(20%)
當緩存占滿時,會使用一定的置換策略進行數據置換(例如LRU),用於確保當后續數據需要被載入時有足夠的空間
依賴於程序局部性
空間局部性:緩存加載數據時,除了加載對應cell的數據外,還會加載其附近的數據
時間局部性:一段數據被訪問一次,其可能在一段時間內會再被訪問
緩存類型:
一級緩存
一級指令緩存
一級數據緩存
二級緩存
三級緩存
一級、二級緩存對於多個CPU或者多核CPU來說是獨有的
三級緩存是所有CPU共享的
由於RAM與緩存的空間相差太大,會導致緩存命中率低,采用了N路關聯技術(一路關聯、二路關聯、四路關聯、八路關聯)
CPU處理寫操作時,由於CPU是直接和一級緩存打交道,也就意味着該數據的修改會通知一級緩存、二級緩存、三級緩存、內存,此技術稱為通寫write through
另外一種技術稱為write back,回寫,CPU對緩存數據進行修改后,不會立即更新到RAM,只有數據要被緩存通過某種置換策略丟棄時才會被同步到RAM
顯卡 同樣需要北橋與CPU進行大量數據交換
I/O設備[磁盤、網卡、鍵盤、鼠標等]通過插入South Bridge,再通過North Bridge與CPU進行關聯
高速IO PCI-E插槽,接入North Bridge
低速IO PCI[外部設備互聯]插槽,接入South Bridge
CPU架構
SMP 對稱多處理器
NUMA 非一致性內存訪問
CPU如何區分不同的I/O設備? I/O Port
任何一個I/O設備為了和CPU進行數據交互,都要向CPU申請一片連續的I/O port
I/O設備控制器/適配器
將對應的I/O設備的信息轉換成總線上可以傳輸的信號、進行信號的校驗等
CPU如何獲知哪個外部設備來了數據?
Poll:CPU輪詢,效率低
通知機制
為了確保I/O設備與CPU進行數據信號交互,每個I/O設備需要向CPU中斷控制器注冊信號通路
CPU中斷控制器[Interrupt Controller],即CPU暫停處理當前的事務,來接收外部設備來的信號,最起碼先把信號加載到內存
CPU Context Swith: 上下文切換 ,進程在CPU上切換被CPU執行
DMA: Director Memory Access
CPU如果總是控制I/O設備讀取數據,效率低下;其解決方案,CPU檢測到I/O設備支持通過DMA機制,CPU將給DMA進行授權,讓DMA由DMA芯片控制I/O設備將數據讀取到內存,DMA一般是把數據讀取到內存中最容易尋址的一塊區域;內存中還有一塊底層區域用於BIOS
DMA數據讀取完成后,要向CPU中斷控制器發送信號,告之CPU數據加載完成
臨界區
指的是有可能發生總線沖突的區域
由於各硬件設備的速度差異較大,因此CPU還要具有能夠協調各硬件協同工作的能力;通過脈沖信號(電平信號)完成
<================================================================================>
OS
Process: 進程
每個進程運行過程中要獲取硬件資源
系統資源:CPU時間、存儲空間
如何讓CPU運行多個進程?
在CPU上按時間進行切片,也就是說CPU會為每個進程指令分配一定的運行時間
由指令計數器記錄每個進程在時間片結束時,其指令運行的條目數
進程在運行時還需要RAM進行數據保存,如何確保多個進程共同使用RAM存儲數據且不沖突?
按內存空間進行切片是不合適的
進程結束時可能會造成內存中存在好多漏洞
萬一事先分配的內存空間不足,可能會覆蓋其他進程所使用的內存空間
如何解決?
事先切割內存,以4K為默認單位,每個4k的存儲槽稱為頁框page frame,每個4k中存儲的數據稱為頁面page
在此基礎上加一個映射機制,讓每一個進程都認為自己擁有完整的內存使用,此映射器中用於保存線性地址與物理地址的映射關系
每個進程認為自己擁有的內存地址空間稱為線性地址,真實的內存稱為物理地址
I/O設備
內核 --> 進程
CPU在運行內核進程時,稱為內核模式
CPU在運行用戶空間進程時,稱為用戶模式,而用戶模式的進程是不允許直接操作硬件的
CPU在進行一些指令時是分級別的,或者稱為ring
ring -1 硬件輔助虛擬化
ring 0 特權指令
ring 1
ring 2
ring 3 用戶空間指令,完全虛擬化[純軟件模擬]