姓名:朱佳男
學(xué)號(hào):17021210978
專業(yè):信號(hào)與信息處理
轉(zhuǎn)載自:http://www.reibang.com/p/b14a35b9b7ad
【嵌牛導(dǎo)讀】現(xiàn)代人們對(duì)于計(jì)算機(jī)的硬件基礎(chǔ)知識(shí)有所來了解是很有必要的,這篇文章主要介紹了計(jì)算機(jī)硬件的基礎(chǔ)知識(shí)责循,包括CPU歹垫、寄存器、存儲(chǔ)器與磁盤等等。通過對(duì)本文的閱讀,能讓我們對(duì)計(jì)算機(jī)的工作方式有一個(gè)基本的認(rèn)識(shí)扫步。
【嵌牛鼻子】計(jì)算機(jī)硬件游岳、CPU褪尝、寄存器
【嵌牛提問 】CPU的作用是什么灾馒?寄存器包括哪些類?操作系統(tǒng)的啟動(dòng)流程是怎么樣的容达?
【嵌牛正文】
一.編程語言的作用及與操作系統(tǒng)和硬件的關(guān)系
編程語言是程序員用來控制計(jì)算機(jī)的工具花盐,是一種標(biāo)準(zhǔn)化的交流技巧柒昏,使得人與計(jì)算機(jī)之間可以在某種程度上交流职祷,使得計(jì)算機(jī)能夠完成人所下達(dá)的工作意系。
在計(jì)算機(jī)剛出現(xiàn)的時(shí)候昔字,程序員直接控制硬件來使計(jì)算機(jī)工作作郭,但是用機(jī)器語言(二進(jìn)制代碼)編寫的程序無明顯特征蜘醋,難以書寫和閱讀压语,具有很大的局限性。因此隨著計(jì)算機(jī)的發(fā)展厕怜,操作系統(tǒng)出現(xiàn)并成為了人與計(jì)算機(jī)硬件之間的橋梁,人直接控制操作系統(tǒng)递雀,操作系統(tǒng)調(diào)用計(jì)算機(jī)硬件缀程。
應(yīng)用程序即是軟件赎败,是程序員用編程語言寫的程序据忘,應(yīng)用程序在操作系統(tǒng)環(huán)境下運(yùn)行勇吊,并通過操作系統(tǒng)調(diào)動(dòng)計(jì)算機(jī)硬件完成工作礼殊。
二.計(jì)算機(jī)硬件
計(jì)算機(jī)由運(yùn)算器晶伦、控制器、存儲(chǔ)器、輸入設(shè)備和輸出設(shè)備等五個(gè)邏輯部件組成沽一,其中運(yùn)算器和控制器合稱為中央處理器(Central Processing Unit铣缠,簡(jiǎn)稱CPU),存儲(chǔ)器(Memory)分為內(nèi)存和外存歼郭,輸入設(shè)備(Input Device)和輸出設(shè)備(Output Device)即是通過各種控制器能被計(jì)算機(jī)調(diào)用并實(shí)現(xiàn)輸入或輸出的設(shè)備牍蜂。
CPU是計(jì)算機(jī)系統(tǒng)的核心鲫竞,是運(yùn)算中心和指揮中心。內(nèi)存是存儲(chǔ)速度較快而容量較小的存儲(chǔ)器僵井,外存(通常指磁盤)是存儲(chǔ)速度較慢而容量較大的存儲(chǔ)器批什。內(nèi)存是通過電工作的存儲(chǔ)器,斷電則存儲(chǔ)的數(shù)據(jù)丟失;磁盤是通過磁工作的存儲(chǔ)器合砂,可長(zhǎng)時(shí)間保存數(shù)據(jù)翩伪。
計(jì)算機(jī)工作時(shí),CPU從內(nèi)存中取出指令解碼并執(zhí)行轻姿,當(dāng)需要用到磁盤中的數(shù)據(jù)時(shí),則將磁盤中的數(shù)據(jù)送入內(nèi)存后再使用豹休。
三.CPU與寄存器
CPU是計(jì)算機(jī)的大腦凤巨,通過從內(nèi)存中取出指令并解碼執(zhí)行來控制計(jì)算機(jī)各個(gè)部件敢茁。每個(gè)CPU都有一套可執(zhí)行的專門指令集,任何軟件的執(zhí)行都必須轉(zhuǎn)換為CPU的指令去執(zhí)行僧叉。
因訪問內(nèi)存得到指令或數(shù)據(jù)花費(fèi)的時(shí)間比CPU解碼執(zhí)行指令的時(shí)間多得多隘道,因此CPU內(nèi)部有一些保存關(guān)鍵變量和臨時(shí)數(shù)據(jù)的寄存器忘晤,CPU可直接從寄存器中調(diào)用常用數(shù)據(jù)或者通過寄存器中的內(nèi)存地址直接調(diào)用內(nèi)存中的數(shù)據(jù),使運(yùn)行速度更快闰蛔。
寄存器分類:
1.通用寄存器:保存變量和臨時(shí)結(jié)果。
2.程序計(jì)數(shù)器:保存了將要取出的下一條指令的內(nèi)存地址,指令取出后繁涂,程序計(jì)數(shù)器就更新以執(zhí)行后續(xù)指令扔罪。
3.堆棧指針:它指向內(nèi)存中當(dāng)前棧的頂端氧猬,該棧包含已經(jīng)進(jìn)入但還沒有退出的每個(gè)過程中的一個(gè)框架。在一個(gè)堆椡框架中保存了有關(guān)的輸入?yún)?shù)、局部變量以及那些沒有保存在寄存器中的臨時(shí)變量。
4.程序狀態(tài)字寄存器(Program Status Word,PSW):該寄存器包含條碼位(由比較指令設(shè)置)寄症、CPU優(yōu)先級(jí)、模式(用戶態(tài)和內(nèi)核態(tài))、以及各種其他控制位甜橱。用戶通常讀入整個(gè)PSW荧琼,但只對(duì)其中少量的字段寫入堰乔。在系統(tǒng)調(diào)用I/O設(shè)備中,PSW非常重要韵卤。
寄存器的維護(hù):
在時(shí)間多路復(fù)用的CPU中,操作系統(tǒng)每次停止一個(gè)正在運(yùn)行的程序時(shí)蜡歹,都必須保存所有的寄存器,這樣在稍后該程序再次運(yùn)行時(shí),可以把這些寄存器重新裝入。
四.內(nèi)核態(tài)與用戶態(tài)及如何切換
多數(shù)CPU有兩種模式,即內(nèi)核態(tài)和用戶態(tài),PSW中有一個(gè)二進(jìn)制位控制這兩種模式炕吸。
內(nèi)核態(tài):當(dāng)CPU在內(nèi)核態(tài)運(yùn)行時(shí)蒸矛,可以執(zhí)行指令集中的所有指令,即可以使用硬件的所有功能雏掠。
用戶態(tài):當(dāng)CPU在用戶態(tài)運(yùn)行時(shí)斩祭,僅僅只能執(zhí)行指令集中的一個(gè)子集,該子集不包含操作硬件功能的部分乡话,一般情況下摧玫,在用戶態(tài)下不允許訪問外圍設(shè)備绑青,不允許占用其他程序的用戶空間诬像,將PSW的模式設(shè)置成內(nèi)核態(tài)也是禁止的屋群。
將用戶態(tài)切換到內(nèi)核態(tài)的過程稱為系統(tǒng)調(diào)用(system call),CPU中對(duì)應(yīng)的指令為陷阱指令(Trap Instruction)坏挠,這個(gè)過程的實(shí)現(xiàn)需要通過調(diào)用操作系統(tǒng)芍躏。
五.存儲(chǔ)器系列
存儲(chǔ)器在計(jì)算機(jī)硬件中僅次于處理器(CPU),一般而言癞揉,隨著存儲(chǔ)器容量的增加纸肉,其讀寫速度會(huì)逐漸變慢。
L1緩存指寄存器:用與CPU相同材質(zhì)制造喊熟,CPU訪問它無時(shí)延柏肪,典型容量是:在32位CPU中為32*32,在64位CPU中為64*64芥牌,兩種情況下容量均小于1KB烦味。
L2緩存指高速緩存:主要由硬件控制高速緩存的存取,不同CPU壁拉,高速緩存行大小不同谬俄,如X86是32BYTES,ALPHA是64BYTES弃理,并且始終在第32或64個(gè)字節(jié)出對(duì)齊(從0開始)溃论。最常用的高速緩存行放置下CPU內(nèi)部或者非常接近CPU的高速緩存中。高速緩存命中指當(dāng)某個(gè)程序需要讀一個(gè)存儲(chǔ)數(shù)據(jù)時(shí)痘昌,高速緩存硬件檢查所需要的高速緩存行在高速緩存中钥勋。高速緩存的命中通常需要兩個(gè)時(shí)鐘周期(2ns),若高速緩存命中辆苔,就必須訪問內(nèi)存算灸,這需要付出大量時(shí)間代價(jià)。高速緩存價(jià)格昂貴驻啤,因此大小有限菲驴,有些機(jī)器具有兩級(jí)甚至三級(jí)高速緩存,每一級(jí)高速緩存比前一級(jí)慢但是容量大骑冗。
主存(即內(nèi)存)通常稱為隨機(jī)訪問存儲(chǔ)(RAM)赊瞬,主存是易失性存儲(chǔ),斷電后數(shù)據(jù)消失贼涩。
ROM(Read Only Memory)是非易失性隨機(jī)訪問存儲(chǔ)森逮,但它是只讀存儲(chǔ)器。ROM速度快且便宜磁携,在有些計(jì)算機(jī)中褒侧,用于啟動(dòng)計(jì)算機(jī)的引導(dǎo)加載模塊就存放在ROM中,另外一些I/O卡也采用ROM處理底層設(shè)備的控制。
EEPROM(Electrically Erasable PROM闷供,電可擦除可編程ROM)和閃存(flash memory)也是非易失性的烟央,但它們可以被擦除和重寫,不過花費(fèi)的時(shí)間比RAM多歪脏。閃存速度介于RAM和磁盤之間疑俭,但閃存擦除次數(shù)過多就會(huì)磨損。
CMOS是易失性的婿失,許多計(jì)算機(jī)利用它來保持當(dāng)前時(shí)間和日期钞艇。CMOS存儲(chǔ)器和遞增時(shí)間的電路由一小塊電池驅(qū)動(dòng)。CMOS還可以保存配置的參數(shù)豪硅,比如哪一個(gè)是啟動(dòng)磁盤等哩照。CMOS耗電非常少,一塊原裝電池能用若干年懒浮。
BIOS基本輸入輸出程序儲(chǔ)存在ROM芯片中飘弧,CMOS用來存儲(chǔ)BIOS設(shè)置和系統(tǒng)時(shí)間。
六.磁盤
1.磁盤結(jié)構(gòu):在磁盤中有一個(gè)或多個(gè)金屬盤片砚著,它們以5400次伶,7200或10800RPM(RPM,revolutions per minute,轉(zhuǎn)速)的速度旋轉(zhuǎn)稽穆,從邊緣開始有一個(gè)機(jī)械臂懸在盤面上冠王,信息寫在磁盤上的一些列的同心圓上,是一連串的二進(jìn)制位(稱為bit位)
機(jī)械臂稱為磁頭舌镶。
每個(gè)磁頭在磁盤表面劃出的圓形軌跡版确,稱為磁道(Track)。
在有多個(gè)盤片構(gòu)成的盤組中乎折,由不同盤片的面,但處于同一半徑圓的多個(gè)磁道組成的一個(gè)圓柱面(Cylinder)侵歇。
磁盤上的每個(gè)磁道被等分為若干個(gè)弧段骂澄,這些弧段便是硬盤的扇區(qū)(Sector)。硬盤的第一個(gè)扇區(qū)惕虑,叫做引導(dǎo)扇區(qū)坟冲。
每個(gè)磁道劃分成多個(gè)扇區(qū),扇區(qū)的典型值是512字節(jié)溃蔫。
扇區(qū)是磁盤級(jí)別的最小讀寫單位健提,操作系統(tǒng)的最小讀寫單位是1block = 8 * 512Bytes。
2.平均尋道時(shí)間:機(jī)械手臂從一個(gè)柱面隨機(jī)移動(dòng)到相鄰的柱面的時(shí)間稱為尋道時(shí)間伟叛,找到了磁道就找到了數(shù)據(jù)所在的那個(gè)圓圈私痹,但是還是不知道這個(gè)數(shù)據(jù)在這個(gè)圓圈的具體位置。
3.平均延遲時(shí)間:機(jī)械臂到達(dá)正確的磁道之后還必須等待旋轉(zhuǎn)到數(shù)據(jù)所在的扇區(qū)下,這段時(shí)間成為延遲時(shí)間
數(shù)據(jù)存放于一段一段的扇區(qū)紊遵,即磁道這個(gè)圓圈的一小段圓弧账千,從磁盤讀取一段數(shù)據(jù)需要經(jīng)歷尋道時(shí)間和延遲時(shí)間。
4.虛擬內(nèi)存和MMU:將正在使用的程序放入內(nèi)存暗膜,而將暫時(shí)不需要執(zhí)行的程序放到磁盤的某個(gè)地方匀奏,這塊地方稱為虛擬內(nèi)存(Virtual Memory),在linux中稱為swap学搜。這種機(jī)制的核心在于快速映射內(nèi)存地址娃善,由cpu中的一個(gè)部件負(fù)責(zé),稱為存儲(chǔ)器管理單元(Memory Management Unit,MMU)
從一個(gè)程序切換到另外一個(gè)程序瑞佩,稱為上下午切換(context switch)聚磺,緩存和MMU的出現(xiàn)提升了系統(tǒng)的性能,尤其是上下文切換钉凌。
5.磁帶:在價(jià)錢相同的情況下比硬盤擁有更高的存儲(chǔ)容量咧最,雖然速度低于磁盤御雕,但因其容量大矢沿,在地震水災(zāi)火災(zāi)時(shí)機(jī)動(dòng)性強(qiáng)等特性,常被用來做備份酸纲。(常見于大型數(shù)據(jù)庫系統(tǒng)中)
6.I/O設(shè)備:I/O設(shè)備一般包括兩個(gè)部分:設(shè)備控制器和設(shè)備本身捣鲸。
控制器:是主板上的一塊芯片或一組芯片,控制器負(fù)責(zé)控制連接的設(shè)備闽坡,它從操作系統(tǒng)接收命令栽惶,比如讀取硬盤數(shù)據(jù),然后就對(duì)硬盤設(shè)備發(fā)起讀取請(qǐng)求來讀出內(nèi)容疾嗅。
控制器的功能:通常情況下對(duì)設(shè)備的控制是復(fù)雜而具體的外厂,控制器的任務(wù)就是為操作系統(tǒng)屏蔽這些復(fù)雜而具體的工作,提供給操作系統(tǒng)一個(gè)簡(jiǎn)單而清晰的接口代承。
設(shè)備本身:要想調(diào)用設(shè)備汁蝶,必須根據(jù)該接口編寫復(fù)雜而具體的程序,于是有了控制器提供設(shè)備驅(qū)動(dòng)接口給操作系統(tǒng)论悴。必須把設(shè)備驅(qū)動(dòng)程序安裝到操作系統(tǒng)中掖棉。
七.總線與南橋和北橋
南橋即ISA橋:連接慢速設(shè)備
北橋即PCI橋:連接高速設(shè)備
八.操作系統(tǒng)的啟動(dòng)流程
1.計(jì)算機(jī)加電
2.BIOS開始運(yùn)行,檢測(cè)硬件:CPU、內(nèi)存、硬盤等
3.BIOS讀取CMOS存儲(chǔ)器中的參數(shù)粪般,選擇啟動(dòng)設(shè)備
4.從啟動(dòng)設(shè)備上讀取第一個(gè)扇區(qū)的內(nèi)容(MBR主引導(dǎo)記錄512字節(jié),前446為引導(dǎo)信息帕棉,后64位為分區(qū)信息针肥,最后兩個(gè)為標(biāo)志位)
5.根據(jù)分區(qū)信息讀入bootloader啟動(dòng)裝載模塊,啟動(dòng)操作系統(tǒng)
6.然后操作系統(tǒng)詢問BIOS笤昨,獲得配置信息祖驱。對(duì)于每種設(shè)備,系統(tǒng)會(huì)檢查起設(shè)備驅(qū)動(dòng)程序是否存在瞒窒,如果沒有捺僻,系統(tǒng)則會(huì)要求用戶安裝設(shè)備驅(qū)動(dòng)程序。一旦有了全部設(shè)備驅(qū)動(dòng)程序崇裁,操作系統(tǒng)就將它們調(diào)入內(nèi)核匕坯。然后初始有關(guān)的表格(如進(jìn)程表),創(chuàng)建需要的進(jìn)程拔稳,并在每個(gè)終端上啟動(dòng)登錄程序或GUI葛峻。
九.應(yīng)用程序的啟動(dòng)流程
1.通過操作系統(tǒng)發(fā)出啟動(dòng)程序的指令,并將之存入內(nèi)存巴比。
2.CPU從內(nèi)存中調(diào)出指令术奖,并解碼執(zhí)行。
3.程序數(shù)據(jù)從硬盤讀入內(nèi)存
4.CPU從內(nèi)存中讀取程序數(shù)據(jù)并運(yùn)行