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