計算機基礎知識-硬件
1.1 計算機硬件
從概念上講,一臺簡單的個人計算機可以抽象為類似下圖的模型,CPU、內存以及I/O設備都由一條系統總線(bus) 連接起來並通過總線與其他設備通信,現代計算機的結構更復雜,包括多重總線。
I/O(input/output):讀寫
計算機的工作原理:CPU讀取指令->運算指令->輸出結果。
CPU從內存中讀取指令進行運算,內存又是從磁盤中加載數據,當CPU運算完畢,把結果返回給內存,內存把結果存儲在磁盤中。
序
計算機的基礎是硬件,從顯示器到CPU都屬於硬件,使用計算機本質上是操作計算機的這些硬件,但是計算機發展到今天,直接和硬件交流效率極其低下,就需要使用編程語言寫一些指令集合來完成硬件的基礎使用,將各個硬件基礎使用的指令集合匯總起來就是操作系統,操作系統就承擔了操作硬件的繁瑣工作,使人有更多的精力註重如何使用編程語言編出更好的軟件合理的使用硬件更好地完成工作。本質上,操作系統也是一種
計算機硬件(Computer hardware)是指計算機系統中由電子,機械和光電元件等組成的各種物理裝置的總稱。
計算機由運算器、控制器、存儲器、輸入設備和輸出設備等五個邏輯部件組成。通常把控制器與運算器合稱為中央處理器(Central Processing Unit,CPU)運算器(Arithmetic Unit) 由算術邏輯單元(ALU)、累加器、狀態寄存器、通用寄存器組等組成。算術邏輯運算單元(ALU)的基本功能為加、減、乘、除四則運算,與、或、非、異或等邏輯操作,以及移位、求補等操作。計算機運行時,運算器的操作和操作種類由控制器決定。運算器處理的數據來自存儲器;處理後的結果數據通常送回存儲器,或暫時寄存在運算器中。
控制器(Control Unit),是整個計算機系統的控制中心,它指揮計算機各部分協調地工作,保證計算機按照預先規定的目標和步驟有條不紊地進行操作及處理。控制器從存儲器中逐條取出指令,分析每條指令規定的是什麽操作以及所需數據的存放位置等,然後根據分析的結果向計算機其它部件發出控制信號,統一指揮整個計算機完成指令所規定的操作。
存儲器(Memory) 是計算機系統中的記憶設備,用來存放程序和數據。計算機中全部信息,包括輸入的原始數據、計算機程序、中間運行結果和最終運行結果都保存在存儲器中。它根據控制器指定的位置存入和取出信息。
輸入設備(Input Device) 向計算機輸入數據和信息的設備。是計算機與用戶或其他設備通信的橋梁。輸入設備是用戶和計算機系統之間進行信息交換的主要裝置之一。鍵盤,鼠標,攝像頭,掃描儀,光筆,手寫輸入板,遊戲桿,語音輸入裝置等都屬於輸入設備。輸出設備(Output Device) 是計算機的終端設備,用於接收計算機數據的輸出顯示、打印、聲音、控制外圍設備操作等。也是把各種計算結果數據或信息以數字、字符、圖像、聲音等形式表示出來。
CPU
計算用:
數學運算、邏輯運算
從存儲介質取出指令,轉換成可以運行的指令集(轉碼),然後運行
(取指令->解碼->運行)
寄存器:
在實際的計算機中,與CPU直接相連接的是寄存器,寄存器存儲了CPU運算的最關鍵的一些參數和指令,CPU需要運算的指令都是來自於寄存器。 寄存器與CPU的材質相同,運算速度最快(同CPU)。
通用寄存器
用來保存變量和臨時結果的
程序計數器
對程序員課件的專門寄存器之一,它保存了將要取出的下一條指令的內存地址。在指令取出後,程序計算器就被更新以便執行後期的指令
堆棧指針
對程序員課件的另外一個專門寄存器,它指向內存中當前棧的頂端。該棧包含已經進入但是還沒有退出的每個過程中的一個框架。在一個過程的堆棧框架中保存了有關的輸入參數、局部變量以及那些沒有保存在寄存器中的臨時變量
程序狀態字寄存器(Program Status Word,PSW)
包含了條碼位(由比較指令設置)、CPU優先級、模式(用戶態或內核態),以及各種其他控制位。用戶通常讀入整個PSW,但是只對其中少量的字段寫入。在系統調用和I/O中,PSW非常非常非常非常非常非常重要
內核態與用戶態
除了在嵌入式系統中的非常簡答的CPU之外,多數CPU都有兩種模式,即內核態與用戶態。通常,PSW中有一個二進制位控制這兩種模式。
* CPU有兩種狀態,內核態、用戶態,內核態指的是操作系統,用戶態運行的是用戶軟件,但是用戶軟件也要操作硬件,所以需要從用戶態切換到內核態,操作系統操作完硬件返回結果後還需要從內核態切換回用戶態。
- 內核態與用戶態切換 用戶態下工作的軟件不能操作硬件,但是我們的軟件比如暴風影音,一定會有操作硬件的需求,比如從磁盤上讀一個電影文件,那就必須經歷從用戶態切換到內核態的過程,為此,用戶程序必須使用系統調用(system call),系統調用切換到內核態並調用操作系統,TRAP指令把用戶態切換成內核態,並啟用操作系統從而獲得服務。當操作完硬件之後,系統會切換到用戶態,並將結果返回給用戶程序。
- 內核態:當cpu在內核態運行時,cpu可以執行指令集中所有的指令,很明顯,所有的指令中包含了使用硬件的所有功能,(操作系統在內核態下運行,從而可以訪問整個硬件)
- 用戶態:用戶程序在用戶態下運行,僅僅只能執行cpu整個指令集的一個子集,該子集中不包含操作硬件功能的部分,因此,一般情況下,在用戶態中有關I/O和內存保護(操作系統占用的內存是受保護的,不能被別的程序占用),當然,在用戶態下,將PSW中的模式設置成內核態也是禁止的。
多線程和多核芯片
moore定律指出,芯片中的晶體管數量每18個月翻一倍,隨著晶體管數量的增多,更強大的功能稱為了可能,如
1.第一步增強:在cpu芯片中加入更大的緩存,一級緩存L1,用和cpu相同的材質制成,cpu訪問它沒有時延
2.第二步增強:一個cpu中的處理邏輯增多,intel公司首次提出,稱為多線程(multithreading)或超線程(hyperthreading),對用戶來說一個有兩個線程的cpu就相當於兩個cpu,我們後面要學習的進程和線程的知識就起源於這裏,進程是資源單位而線程才是cpu的執行單位。
多線程運行cpu保持兩個不同的線程狀態,可以在納秒級的時間內來回切換,速度快到你看到的結果是並發的,偽並行的,然而多線程不提供真正的並行處理,一個cpu同一時刻只能處理一個進程(一個進程中至少一個線程)
3.第三步增強:除了多線程,還出現了2個或者4個完整處理器的cpu芯片,如下圖。要使用這類多核芯片肯定需要有多處理操作系統
存儲器
理想的計算機應該是高速的讀指令、高速的運算指令、高速的輸出結果,但是這樣的計算機極其稀少、造價高昂,遠不能滿足實際需求。而實際上,CPU也不能儲存指令,需要一個存儲設備來儲存指令,CPU通過I/O接口連接到存儲設備,I/O接口的讀寫速度就限制了CPU的運算速度,在實際的計算機中,與CPU直接相連接的是寄存器(L1緩存),寄存器存儲了CPU運算的最關鍵的一些參數和指令,同時次重要的數據就存放到了與寄存器相連的高速緩存(L2緩存)中,
寄存器
即L1緩存:
用與cpu相同材質制造,與cpu一樣快,因而cpu訪問它無時延,典型容量是:在32位cpu中為32*32,在64位cpu中為64*64,在兩種情況下容量均<1KB。
高速緩存
即L2緩存:
主要由硬件控制高速緩存的存取,內存中有高速緩存行按照0\~64字節為行0,64~127為行1。最常用的高速緩存行放置在cpu內部或者非常接近cpu的高速緩存中。當某個程序需要讀一個存儲字時,高速緩存硬件檢查所需要的高速緩存行是否在高速緩存中。如果是,則稱為高速緩存命中,緩存滿足了請求,就不需要通過總線把訪問請求送往主存(內存),這畢竟是慢的。高速緩存的命中通常需要兩個時鐘周期。高速緩存為命中,就必須訪問內存,這需要付出大量的時間代價。由於高速緩存價格昂貴,所以其大小有限,有些機器具有兩級甚至三級高速緩存,每一級高速緩存比前一級慢但是容易大。
主存
再往下一層是主存,此乃存儲器系統的主力,主存通常稱為隨機訪問存儲RAM,就是我們通常所說的內存,容量一直在不斷攀升,所有不能再高速緩存中找到的,都會到主存中找,主存是易失性存儲,斷電後數據全部消失
ROM
除了主存RAM之外,許多計算機已經在使用少量的非易失性隨機訪問存儲如ROM(Read Only Memory,ROM),在電源切斷之後,非易失性存儲的內容並不會丟失,ROM只讀存儲器在工廠中就被編程完畢,然後再也不能修改。ROM速度快且便宜,在有些計算機中,用於啟動計算機的引導加載模塊就存放在ROM中,另外一些I/O卡也采用ROM處理底層設備的控制。
EEPROM(Electrically Erasable PROM,電可擦除可編程ROM)和閃存(flash memory)
也是非易失性的,但是與ROM相反,他們可以擦除和重寫。不過重寫時花費的時間比寫入RAM要多。在便攜式電子設備中中,閃存通常作為存儲媒介。閃存是數碼相機中的膠卷,是便攜式音譯播放器的磁盤,還應用於固態硬盤。閃存在速度上介於RAM和磁盤之間,但與磁盤不同的是,閃存擦除的次數過多,就被磨損了。
CMOS
還有一類存儲器就是CMOS,它是易失性的,許多計算機利用CMOS存儲器來保持當前時間和日期。CMOS存儲器和遞增時間的電路由一小塊電池驅動,所以,即使計算機沒有加電,時間也仍然可以正確地更新,除此之外CMOS還可以保存配置的參數,比如,哪一個是啟動磁盤等,之所以采用CMOS是因為它耗電非常少,一塊工廠原裝電池往往能使用若幹年,但是當電池失效時,相關的配置和時間等都將丟失
硬盤
磁頭
是硬盤讀取數據的關鍵部件,它的主要作用就是將存儲在硬盤盤片上的磁信息轉化為電信號向外傳輸。
磁道
磁頭繞磁盤讀取一圈的同心圓稱為磁道
扇區
最小讀取單位,扇區典型的值是512字節,磁道數據都存放於一段一段的扇區,即磁道這個圓圈的一小段圓弧,從磁盤讀取一段數據需要經歷尋道時間和延遲時間。
* 平均尋道時間
機械手臂從一個柱面隨機移動到相鄰的柱面的時間成稱為尋道時間,找到了磁道就意味著找到了數據所在的那個圓圈,但是還不知道數據具體這個圓圈的具體位置
* 平均延遲時間
機械臂到達正確的磁道之後還必須等待旋轉到數據所在的扇區下,這段時間成為延遲時間,最快下一刻就找到,最慢需要轉一圈。
柱面
多個磁頭讀取的相同半徑的磁道組合成柱面,兩個柱面之間叫分區
虛擬內存
許多計算機支持虛擬內存機制,該機制使計算機可以運行大於物理內存的程序,方法是將正在使用的程序放入內存取執行,而暫時不需要執行的程序放到磁盤的某塊地方,這塊地方成為虛擬內存,在linux中成為swap,這種機制的核心在於快速地映射內存地址,由cpu中的一個部件負責,成為存儲器管理單元(Memory Management Unit,MMU)
PS:從一個程序切換到另外一個程序,成為上下文切換(context switch),緩存和MMU的出現提升了系統的性能,尤其是上下文切換
swap分區一般是內存1.5-2倍
磁帶
在價錢相同的情況下比硬盤擁有更高的存儲容量,雖然速度低於磁盤,但是因其大容量,在地震水災火災時可移動性強等特性,常被用來做備份。(常見於大型數據庫系統中)
I/O設備
cpu和存儲器並不是操作系統唯一需要管理的資源,I/O設備也是非常重要的一環。
最常見的I/O設備有打印機、硬盤、鍵盤和鼠標。嚴格意義上來講,有一些只能算是輸入設備(比如說鍵盤和鼠標);有一些只是輸出設備(如打印機)。
所有儲存器也可以算是輸入/輸出設備。如硬盤、軟盤、光盤等。
I/O設備一般包括兩個部分:設備控制器和設備本身。
* 設備控制器
是查找主板上的一塊芯片或一組芯片(硬盤,網卡,聲卡等都需要插到一個口上,這個口連的便是控制器),控制器負責控制連接的設備,它從操作系統接收命令,比如讀硬盤數據,然後就對硬盤設備發起讀請求來讀出內容。
* 設備驅動:通常情況下對設備的控制是非常復雜和具體的,控制器的任務就是為操作系統屏蔽這些復雜而具體的工作,提供給操作系統一個簡單而清晰的接口要想調用設備,必須根據該接口編寫復雜而具體的程序,於是有了控制器提供設備驅動接口給操作系統。
總線
但是隨著處理器和存儲器速度越來越快,單總線很難處理總線的交通流量了,於是出現了下圖的多總線模式,他們處理I/O設備及cpu到存儲器的速度都更快。
* PCI橋(北橋)連接高速設備,如CPU、內存等
* ISA橋(南橋)連接慢速設備,如磁盤、聲卡、鍵盤等
啟動計算機
在計算機的主板上有一個基本的輸入輸出程序BIOS(Basic Input Output system),BIOS就相當於一個小的操作系統,它有底層的I/O軟件,包括讀鍵盤,寫屏幕,進行磁盤I/O,該程序存放於一非易失性閃存ROM中。
-
啟動流程:
-
計算機加電
-
BIOS開始運行,檢測硬件:cpu、內存、硬盤等
-
BIOS讀取CMOS存儲器中的參數,選擇啟動設備(系統啟動盤)
-
從啟動設備(系統盤)上讀取第一個扇區的內容:MBR(主引導記錄),找到相應的BootLoader
MBR:主引導記錄,512字節,分成446字節,存儲引導信息(引導信息指示BootLoader 程序),後64為分區信息,最後2個字節為標誌位 -
BIOS讀入BootLoader 如grub,找到系統kernel代碼並加載進內存,啟動操作系統
grub:一種常見BootLoader ,可以會指示系統信息(操作系統在哪裏)
- 啟動操作系統kernel代碼後,系統詢問BIOS,以獲得配置信息,檢測驅動,初始化表格(如進程表),啟動開啟自啟的軟件。
對於每種設備,系統會檢查其設備驅動程序是否存在,如果沒有,系統則會要求用戶按照設備驅動程序。一旦有了全部的設備驅動程序,操作系統就將它們調入內核。然後初始有關的表格(如進程表),穿件需要的進程,並在每個終端上啟動登錄程序或GUI
作業
- 預習操作系統
-
默寫:
- 內核態和用戶態
- 計算機啟動流程
-
應用軟件的啟動流程
- 啟動快捷方式,操作系統收到啟動請求和軟件位置信息
- 系統切換CPU到內核態到磁盤相應位置讀取軟件啟動文件
- 系統將啟動文件加載進內存
- 內存交由CPU運算,CPU返回結果給系統
- 系統切換CPU至用戶態,並將結果返回給用戶軟件,軟件啟動成功
總結:
-
part1:
這是CPU的兩種工作狀態
內核態:運行操作系統內核,可以操作硬件(可以獲取所有CPU的指令集)
用戶態:運行應用程序,不可以操作硬件(可以獲得所有CPU的指令集的一個子集,不包括操作硬件的指令)
用戶態和內核態的切換: -
part2:
BIOS:Basic Inuput Output System,硬盤--->CMOS
MBR: 主引導記錄512=446+64+2
BootLoader :grub指示kernel代碼
kernel -
part3
應用程序的啟動流程:
前提:應用程序是運行於操作系統之上的
舉例: 啟動暴風影音
雙擊快捷方式-->告訴操作系統一個文件路徑
--->操作系統從硬盤讀取文件內容到內存中--->CPU從內存讀取數據執行
計算機基礎知識-硬件