計算機基礎知識-硬件

1.1 計算機硬件

從概念上講,一臺簡單的我的計算機能夠抽象爲相似下圖的模型,CPU內存以及I/O設備都由一條系統總線(bus) 鏈接起來並經過總線與其餘設備通訊,現代計算機的結構更復雜,包括多重總線
linux

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

計算用: 數學運算、邏輯運算 從存儲介質取出指令,轉換成能夠運行的指令集(轉碼),而後運行
(取指令->解碼->運行)markdown

寄存器:

在實際的計算機中,與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 ,能夠會指示系統信息(操做系統在哪裏)

  1. 啓動操做系統kernel代碼後,系統詢問BIOS,以得到配置信息,檢測驅動,初始化表格(如進程表),啓動開啓自啓的軟件。

對於每種設備,系統會檢查其設備驅動程序是否存在,若是沒有,系統則會要求用戶按照設備驅動程序。一旦有了所有的設備驅動程序,操做系統就將它們調入內核。而後初始有關的表格(如進程表),穿件須要的進程,並在每一個終端上啓動登陸程序或GUI

做業

  1. 預習操做系統
  2. 默寫:
    • 內核態和用戶態
    • 計算機啓動流程
    • 應用軟件的啓動流程
      1. 啓動快捷方式,操做系統收到啓動請求和軟件位置信息
      2. 系統切換CPU到內核態到磁盤相應位置讀取軟件啓動文件
      3. 系統將啓動文件加載進內存
      4. 內存交由CPU運算,CPU返回結果給系統
      5. 系統切換CPU至用戶態,並將結果返回給用戶軟件,軟件啓動成功

總結:

  • part1:
    這是CPU的兩種工做狀態
    內核態:運行操做系統內核,能夠操做硬件(能夠獲取全部CPU的指令集)
    用戶態:運行應用程序,不能夠操做硬件(能夠得到全部CPU的指令集的一個子集,不包括操做硬件的指令)
    用戶態和內核態的切換:

  • part2:
    BIOS:Basic Inuput Output System,硬盤--->CMOS
    MBR: 主引導記錄512=446+64+2
    BootLoader :grub指示kernel代碼
    kernel

  • part3

應用程序的啓動流程: 前提:應用程序是運行於操做系統之上的 舉例: 啓動暴風影音 雙擊快捷方式-->告訴操做系統一個文件路徑 --->操做系統從硬盤讀取文件內容到內存中--->CPU從內存讀取數據執行

相關文章
相關標籤/搜索