一. 計算機概述
1.1 計算機發(fā)展的4個階段
- 電子管計算機 - 晶體管計算機 - 集成電路計算機 - 超大規(guī)模集成電路計算機
- 趨勢: 集成度越來越高, 空間占用越來越小, 功耗越來越低, 運行速度越來遠快,操作越來越簡單,交互越來越方便
1.2 計算機的分類
- 超級計算機 - 大型計算機 - 迷你計算機(服務(wù)器) - 工作站 - 微型計算機
- 趨勢:體積越來越小,性能越來越低
1.3 計算機體系與結(jié)構(gòu)
- 馮諾依曼體系:將計算機指令和數(shù)據(jù)一起存儲的計算機設(shè)計概念結(jié)構(gòu),把程序存儲起來,設(shè)計了通用電路,摒棄了之前修改程序需要重新設(shè)計電路的缺點
組成:存儲器+控制器+運算器+輸入設(shè)備+輸出設(shè)備
對應(yīng):硬盤(包含內(nèi)存、寄存器和緩存) + CPU(包含控制器和運算器) + 鍵盤 + 屏幕
1.4 計算機的計算單位
- Bit - Byte - KB - MB - GB - TB - EB
- 硬盤廠商制造的硬盤,是以10進制為單位,而計算機是以2進制為單位。 所以制造商的500G硬盤500 * 1000^3 等于465G的465 * 1024^3
1.5 計算機的字符與編碼集
- GB2312(只支持漢字) - GBK(只支持更多的漢字) - Unicode(萬國碼,支持世界上所有的字符)
- UTF-8:一種變長的Unicode編碼方案,使用1-6個字節(jié)來存儲
UTF-16 UTF-32,使用的字節(jié)數(shù)和UTF-8不一樣而已
二. 計算機的組成
2.1 計算機的總線
2.1.1 總線的作用
總線: 為了解決不同設(shè)備間的通信問題
2.1.2 總線的分類
- 片內(nèi)總線:芯片內(nèi)部的總線,負責寄存器與寄存器,寄存器與控制器與運算器的通信
- 系統(tǒng)總線:連接CPU 內(nèi)存 硬盤 USB 聲卡 顯卡 等設(shè)備的一條總線,分為3類
1.數(shù)據(jù)總線:用來傳遞數(shù)據(jù),一般和CPU位數(shù)相同(32位、64位)
2.地址總線:指定源數(shù)據(jù)或目的數(shù)據(jù)在內(nèi)存中的地址,用來尋址的,如果地址總線位數(shù)=n,那么計算機的尋址范圍為0~2^n .例如32位系統(tǒng)的地址總線也是32位,所以它最多容納2^32=4G的尋址范圍,也就是內(nèi)存最大也就是4G,多了也用不上。
3.控制總線:控制總線是用來發(fā)出各種控制信號的傳輸線,控制信號經(jīng)由控制總線從一個組件發(fā)給另外一個組件
2.1.3 總線的仲裁
- 總線仲裁的原因: 多個設(shè)備同時請求占用資源的時候,需要仲裁器來解決總線使用權(quán)的沖突問題
- 仲裁的方式:
1.鏈式查詢:優(yōu)先級高的設(shè)備先獲取到使用權(quán)
2.計時器定時查詢
3.獨立請求
2.2 計算機的輸入輸出設(shè)備
2.2.1 計算機的輸入輸出設(shè)備
- 字符輸入設(shè)備: 鍵盤等
- 圖像輸入設(shè)備: 鼠標 掃描儀等
- 圖像輸出設(shè)備: 顯示器 打印機 投影儀等
2.2.2 輸入輸出接口的通用設(shè)計
- 數(shù)據(jù)線: 是I/O設(shè)備與主機進行數(shù)據(jù)交換的傳送線
- 狀態(tài)線: I/O設(shè)備向主機報告的信號線, 是否正常連接,是否被占用等
- 命令線: CPU向I/O設(shè)備發(fā)送命令的信號線
- 設(shè)備選擇線: 對連在總線上的設(shè)備進行選擇
2.2.3 CPU與I/O設(shè)備的通信
- 程序中斷:當外圍I/O設(shè)備就緒時,向CUP發(fā)出中斷信號,CPU有專門的電路響應(yīng)中斷信號
- DMA(直接儲存器訪問): DMA作為一個中間件, 能減少外圍設(shè)備對CPU的中斷, 提升效率
2.3 計算機的存儲器
2.3.1 存儲器的類型
按照存儲方式分類
- 半導體存儲器:內(nèi)存、U盤、硬盤
- 磁存儲器: 磁帶、磁盤
按存取方式分類
- RAM(隨機存儲器)
- 串行存儲器
- ROM(只讀存儲器)
2.3.2 存儲器的層次結(jié)構(gòu)
CUP和三級緩存的底層原理:局部性原理。
局部性原理:CPU訪問存儲器時,無論是存取指令還是存取數(shù)據(jù),所有的訪問單元都趨于聚集在一個較小的連續(xù)區(qū)域內(nèi)。
iOS的OC的方法查找緩存也用的是此原理。
- 緩存:寄存器 高速緩存等
- 主存:內(nèi)存
- 輔存:硬盤 U盤等
2.3.3 計算機的主存儲器和輔助存儲器
- 主存儲器:內(nèi)存條,RAM,通過電容存儲數(shù)據(jù),必須隔一段時間刷新一次,如果掉電,將會丟失所有數(shù)據(jù)
- 輔助存儲器:磁盤,表面是可磁化的硬磁特性材料,通過磁頭徑向運動(沿半徑方向運動)來讀取磁道信息
有4種讀取方式分別為:
1.先來先服務(wù)算法: 根據(jù)數(shù)據(jù)的請求時間順序,按照隊列來讀取
2.最短尋道時間優(yōu)先算法:與當前磁頭位置有關(guān),優(yōu)先訪問離磁頭最近的磁道
3.掃描算法(電梯算法):每次只往一個方向運動,到達一個方向所需要服務(wù)的盡頭再反方向運動
4.循環(huán)掃描算法:和電梯算法相似,到達一個方向所需要服務(wù)的盡頭不是反方向運動,而是從頭開始
2.3.4 計算機的高速緩存
- 目的:解決CPU和主存的速度不匹配的問題
- 高速緩存的工作原理:局部性原理
- 高速緩存的替換策略:
1.隨機算法: 隨機找一個位置將最新的數(shù)據(jù)塞入
2.先進先出算法(FIFO): 找到最老的數(shù)據(jù),將最新的數(shù)據(jù)替換老數(shù)據(jù)
3.最不經(jīng)常使用算法(LFU):淘汰最不經(jīng)常使用的數(shù)據(jù),需要一個額外的空間來記錄數(shù)據(jù)的使用次數(shù)
4.最近最少使用算法(LRU):優(yōu)先淘汰掉一段時間內(nèi)未使用的數(shù)據(jù),一般使用雙向鏈表實現(xiàn),把當前訪問結(jié)點放在鏈表頭部,保證頭部結(jié)點是最近使用的。
2.4 計算機的指令系統(tǒng)
2.4.1 機器指令的形式
操作碼字段+地址碼字段
- 三地址指令: addr1 op addr2 = addr3
- 二地址指令: addr1 op addr2 = addr1
- 一地址指令: addr1 自增等操作
- 零地址指令:中斷 空操作 停機操作等
2.4.2 機器指令的操作類型
- 數(shù)據(jù)傳輸類型
寄存器之間、寄存器與存儲單元、存儲單元之間傳輸
數(shù)據(jù)讀寫、交換地址數(shù)據(jù) - 算數(shù)邏輯操作類型
加減乘除運算
與或非運算 - 移位操作類型
左移 右移 - 控制指令類型
等待指令、停機指令、中斷指令等
2.4.3 機器指令的尋址方式
- 指令尋址
1.順序?qū)ぶ罚耗J的方式
2.跳躍尋址:call jmp等匯編指令 - 數(shù)據(jù)尋址
1.立即尋址:能直接拿到操作數(shù)的
2.直接尋址:通過地址拿到操作數(shù)的
3.間接尋址:需要多次訪問地址拿到操作數(shù),例如void **