系統(tǒng)的硬件組成
1.總線
2.CPU
3.內(nèi)存
4.主板
5.光驅(qū)
6.硬盤
7.鼠標(biāo)
8.鍵盤
9.顯示器
這是我所能一下子想到的一臺(tái)完整PC的硬件了,圖形表示:
總線:貫穿整個(gè)系統(tǒng)的是一組電子管道,稱為總線,它攜帶信息字節(jié)并負(fù)責(zé)在各個(gè)部件之間傳遞。通??偩€,被設(shè)計(jì)成傳送定長的字節(jié)快,也成為”字“。字中的字節(jié)數(shù)是一個(gè)基本的系統(tǒng)參數(shù)。
I/O設(shè)備:圖中下面4個(gè)都屬于輸入輸出設(shè)備,磁盤作為存儲(chǔ)設(shè)置,也可以讀取。
每個(gè)I/O設(shè)備都是通過一個(gè)控制器或適配器與I/O總線連接起來,控制總線和適配器之間的區(qū)別,在于他們的組成方式,。無論如何,他們的功能都是在I/O總線和I/O設(shè)備之間傳遞信息。
主存(內(nèi)存):
是一個(gè)臨時(shí)的存儲(chǔ)設(shè)備,在處理器執(zhí)行程序時(shí),它被用來存放程序和程序處理的數(shù)據(jù)。物理上來說,主存是一組DRAM(動(dòng)態(tài)隨機(jī)訪問存儲(chǔ)器)芯片組成的。邏輯上來說,存儲(chǔ)器是一個(gè)由一個(gè)線性的字節(jié)數(shù)組組成的,每個(gè)字節(jié)都有自己唯一的地址(數(shù)組索引),這些地址都是從0開始。一般來說,組成程序的每條機(jī)器指令都由不定量的字節(jié)構(gòu)成。
處理器:CPU
處理器的核心是一個(gè)被稱為程序計(jì)數(shù)器(PC)的字長大小的存儲(chǔ)設(shè)備(或者說寄存器register)。在任何一個(gè)時(shí)間點(diǎn)上,PC都指向主存中的某條機(jī)器語言指令。
緩存
根據(jù)機(jī)械原理,較大的存儲(chǔ)設(shè)備,要比較小的存儲(chǔ)設(shè)備運(yùn)行得慢,而塊數(shù)設(shè)備的造價(jià)高于低速同類設(shè)備。比如,一個(gè)典型系統(tǒng)上的磁盤驅(qū)動(dòng)器可能要比主存大100倍,但是對(duì)處理器而言,從磁盤驅(qū)動(dòng)器上讀取一個(gè)字的時(shí)間開銷要比從主存中讀取的開銷大00萬倍。
處理器芯片上的L1高速緩存的容量可以達(dá)到數(shù)萬字節(jié),訪問速度幾乎和寄存器堆一樣快,一個(gè)容量為數(shù)十萬到數(shù)百萬的更大的L2高速緩存是通過一條特殊的總線連接到處理器的。進(jìn)程訪問L2的時(shí)間要比訪問L1的開銷大5倍,但是仍然比訪問主存的時(shí)間快5~10倍。L1L2采用的是一種叫做靜態(tài)隨機(jī)訪問技術(shù)SRAM實(shí)現(xiàn)的。
操作系統(tǒng)管理硬件
虛擬存儲(chǔ)器
虛擬存儲(chǔ)器是一個(gè)抽象的概念,它為每個(gè)進(jìn)程提供了一個(gè)假象,好像每個(gè)進(jìn)程都在獨(dú)占地使用主存,每個(gè)進(jìn)程看到的存儲(chǔ)器都是一致的,稱之為虛擬地址空間。
程序代碼和數(shù)據(jù):代碼從同一固定地址開始,緊接著是和C全局變量對(duì)應(yīng)的數(shù)據(jù)區(qū)代碼和數(shù)據(jù)區(qū)是由可執(zhí)行目標(biāo)文件直接初始化的。
堆:代碼和數(shù)據(jù)區(qū)后緊隨的運(yùn)行時(shí)堆,代碼和數(shù)據(jù)區(qū)是在進(jìn)程一旦開始就被執(zhí)行了大小的,堆可以動(dòng)態(tài)擴(kuò)展
共享庫:在地址空間的中間附近是一塊用來存放像C標(biāo)準(zhǔn)庫和數(shù)學(xué)庫這樣的共享庫
棧:位于用戶虛擬地址空間頂部的是用戶棧,編譯器用它來實(shí)現(xiàn)函數(shù)調(diào)用。和堆一樣,用戶棧在程序執(zhí)行期間,可以動(dòng)態(tài)地?cái)U(kuò)展和收縮。
內(nèi)核虛擬存儲(chǔ)器:內(nèi)核是操作系統(tǒng)總是駐留在存儲(chǔ)器中的部分,地址空間是頂部的1/4部分是為內(nèi)核預(yù)留的。
程序的執(zhí)行,基本
從系統(tǒng)通電開始,到系統(tǒng)斷電,處理器一直在不斷地重復(fù)執(zhí)行基本任務(wù):從程序計(jì)數(shù)器(PC)指向的存儲(chǔ)器讀取指令,解釋指令中的位,執(zhí)行指令指示的簡單操作,然后更新程序技術(shù)區(qū)指向下一條指令,而這條指令并不一定在存儲(chǔ)器中和剛剛執(zhí)行的指令相鄰。
這樣的簡單操作,在主存/寄存器堆(register file)、算術(shù)邏輯單元(ALU)之間循環(huán)。寄存器是一個(gè)小的存儲(chǔ)設(shè)備,由一些字長大小的寄存器組成,這些寄存器每個(gè)都有唯一的名字。ALU計(jì)算新的數(shù)據(jù)和地址值,下面是一個(gè)CPU指令,在要求下可能會(huì)執(zhí)行的操作:
1.加載:從主存拷貝一個(gè)字節(jié)或者一個(gè)字到寄存器,覆蓋寄存器原來的內(nèi)容
2.存儲(chǔ):從寄存器拷貝到一個(gè)字節(jié)或一個(gè)字到主存的某個(gè)位置,覆蓋這個(gè)位置上原來的內(nèi)容。
3.更新:拷貝兩個(gè)寄存器的內(nèi)容到ALU,ALU將兩個(gè)字相加,并將結(jié)果存放到寄存器中,覆蓋該寄存器中原來的內(nèi)容
4.I/O讀:從一個(gè)I/O設(shè)備中拷貝一個(gè)字節(jié)或者一個(gè)字到一個(gè)寄存器
5.I/O寫:從一個(gè)寄存器中拷貝一個(gè)字節(jié)或者一個(gè)字寫到一個(gè)I/O設(shè)備
6.跳轉(zhuǎn):從指令本身抽取一個(gè)字,并將這個(gè)字拷貝到程序計(jì)數(shù)器中,覆蓋PC中原來的值
聯(lián)系客服