計算機基礎:計算機的硬件

閱讀目錄html

一 爲什麼要學習計算機基礎

python是編程語言,即python是語言python

語言有英語、法語、葡萄牙語等,但凡是語言,都是用來溝通的介質。linux

程序員編程的本質就是讓計算機去工做,而編程語言就是程序員與計算機溝通的介質程序員

程序員要想讓計算機工做,必須知道計算機能幹什麼,怎麼幹的,這也就是咱們必須學習計算機基礎的緣由web

 

然而光有編程語言和硬件也並不能知足你們的編程需求,爲何這麼說呢?數據庫

程序用編程語言寫程序,最終開發出的結果就是一個軟件,既然是軟件,那就與騰訊qq、暴風影音、快播等軟件沒有區別了。這些軟件必須運行在操做系統之上,你確定會問:爲什麼要有操做系統呢?沒錯,遠古時代的程序員確實是在沒有操做系統的環境下,用編程語言之間操做硬件來編程的,你可能以爲這沒有問題,但其實問題是至關嚴重的,由於此時你必須掌握如何操做硬件的全部具體細節,好比如何具體操做硬盤(如今你得把硬盤拆開,而後你能看見的全部的東西,你都得研究明白,由於你編程時要用到它),這就嚴重影響了開發的效率,操做系統的出現就是運行於硬件之上,來控制硬件的,咱們開發時,只須要調用操做系統爲咱們提供的簡單而優雅的接口就能夠了編程

 

因此一套完整的計算機系統分爲:計算機硬件,操做系統,應用軟件,以下圖。於是咱們的python編程之路分爲計算機硬件基礎,操做系統基礎,和python編程三部分,就讓咱們先從計算機硬件學起吧緩存

二 本節目標

  1. 瞭解計算機各組件及工做原理
  2. 瞭解計算機啓動流程

三  計算機硬件發展史

http://www.cnblogs.com/linhaifeng/p/6428430.html網絡

四:計算機硬件介紹

計算機硬件有五大部分:(計算機是人的奴隸,能夠將其看成一我的去看,請思考下述組件等同於人的哪些器官)多線程

複製代碼
#一、控制器:計算機的指揮系統。控制器經過地址訪問存儲器,從存儲器中取出指令,經譯碼器分析後,根據指令分析結果產生相應的操做控制信號做用於其餘部件,使得各部件在控制器控制下有條不紊地協調工做。

#二、運算器:實現算術運算和邏輯運算的部件。 

#三、存儲器:是計算機用來存放全部數據和程序的記憶部件。它的基本功能是按指定的地址存(寫)入或者取(讀)出信息。 計算機中的存儲器可分紅兩大類:一類是內存儲器,簡稱內存或主存;另外一類是外存儲器(輔助存儲器),簡稱外存或輔存。 存儲器由若干個存儲單元組成,每一個存儲單元都有一個地址,計算機經過地址對存儲單元進行讀寫。一個存儲器所包含的字節數稱爲存儲容量,單位有B、KB、MB、GB、TB等。

#四、輸入設備:是向計算機中輸入信息(程序、數據、聲音、文字、圖形、圖像等)的設備。常見的輸入設備有:鍵盤、鼠標、圖形掃描儀、觸摸屏、條形碼輸入器、光筆等。 外存儲器也是一種輸入設備。 

#五、輸出設備:主要有顯示器、打印機和繪圖儀等。外存儲器也看成一種輸出設備。
複製代碼

控制器+運算器=CPU,CPU、內存(主存儲器)以及其餘I/O設備都由一條系統總線(bus)鏈接起來並經過總線與其餘設備通訊

現代計算機的結構更復雜,包括多重總線,咱們將在後面的小節介紹,此時暫且讓咱們如下圖爲例來介紹各個部件 

cpu是人的大腦,負責控制全身和運算

內存是人的記憶,負責臨時存儲

硬盤是人的筆記本,負責永久存儲

輸入設備是耳朵或眼睛或嘴巴,負責接收外部的信息存入內存

輸出設備是你的臉部(表情)或者屁股,負責通過處理後輸出的結果

以上全部的設備都經過總線鏈接,總線至關於人的神經

 

上課開始,老師講課,學生聽課,老師是程序員,學生是計算機,學生的器官都是計算機各部分組成

1.你經過耳朵接收老師講的知識->輸入

2.經過本身的神經,將接收的數據存入本身的內存/短時間記憶(總線、內存)

3.光聽不行,你還須要反應/處理老師講的知識,因而你的大腦/cpu從短時間記憶裏取出知識/指令,分析知識/指令,而後學習知識/執行指令 (cpu取指、分析、執行)

4.你經過做業或者說話輸出你學到的結果

5.你想要永久將知識保存下來,只能拿出一個筆記本,把剛剛學會的知識都寫到本子上,這個本子就是硬盤(磁盤)

4.1 處理器

      一般將運算器和控制器合稱爲中央處理器(Central Processing Unit,CPU)。其中運算器用來主要負責程序運算與邏輯判斷,控制器則主要協調各組件和各單元的工做,因此CPU的工做主要在於管理和運算。能夠說計算機的大腦就是CPU,它從內存中取指令->解碼->執行而後再取指->解碼->執行下一條指令,周而復始,直至整個程序被執行完成。

  既然CPU的重點在於進行運算和判斷,那麼要被運算與判斷的數據是從哪裏來的?CPU讀取的數據都是從主存儲器(內存)來的!主存儲器內的數據則是從輸入單元所傳輸進來!而CPU處理完畢的數據也必須先寫回主存儲器中,最後數據才從主存儲器傳輸到輸出單元

  綜合上面所說的,咱們會知道其實計算機是由:輸入單元、輸出單元、CPU(控制單元、算術邏輯單元)與主存儲器五大單元構成的。也能夠說CPU+輸入輸出+主存儲器構成了電子計算機的三大核心組件,相關性以下圖:

       在超大規模集成電路構成的微型計算機中,每每將CPU製成一塊具備特定功能的芯片,稱爲微處理器,芯片裏邊有編寫好的微指令集,咱們在主機上的全部操做或者說任何軟件的執行最終都要轉化成cpu的指令去執行,如輸入輸出,閱讀,視頻,上網等這些都要參考CPU是否內置有相關微指令集才行。若是沒有那麼CPU沒法處理這些操做。不一樣的CPU指令集不一樣對應的功能也不一樣,這就比如不一樣的人腦,對於大多數人類來講,人腦的結構同樣,可是你們的智商都有差異。

       那麼目前世界上的主流CPU由那些呢?咱們筆記本上貼的Intel、AMD是怎麼回事呢?下面咱們來認識一下;

  View Code
  瞭解寄存器

  處理器設計的演變

1.最開始取值、解碼、執行這三個過程是同時進行的,這意味着任何一個過程完成都須要等待其他兩個過程執行完畢,時間浪費

2.後來被設計成了流水線式的設計,即執行指令n時,能夠對指令n+1解碼,而且能夠讀取指令n+2,徹底是一套流水線。

3.超變量cpu,比流水線更加先進,有多個執行單元,能夠同時負責不一樣的事情,好比看片的同時,聽歌,打遊戲。

兩個或更多的指令被同時取出、解碼並裝入一個保持緩衝區中,直至它們都執行完畢。只有有一個執行單元空閒,就檢查保持緩衝區是否還有可處理的指令

這種設計存在一種缺陷,即程序的指令常常不按照順序執行,在多數狀況下,硬件負責保證這種運算結果與順序執行的指令時的結果相同。

  內核態與用戶態

  CPU的兩種工做狀態:內核態與用戶態

  多線程和多核芯片

moore定律指出,芯片中的晶體管數量每18個月翻一倍,隨着晶體管數量的增多,更強大的功能稱爲了可能,如

I.第一步加強:在cpu芯片中加入更大的緩存,一級緩存L1,用和cpu相同的材質製成,cpu訪問它沒有時延

II.第二步加強:一個cpu中的處理邏輯增多,intel公司首次提出,稱爲多線程(multithreading)或超線程(hyperthreading),對用戶來講一個有兩個線程的cpu就至關於兩個cpu,咱們後面要學習的進程和線程的知識就起源於這裏,進程是資源單位而線程纔是cpu的執行單位。

多線程運行cpu保持兩個不一樣的線程狀態,能夠在納秒級的時間內來回切換,速度快到你看到的結果是併發的,僞並行的,然而多線程不提供真正的並行處理,一個cpu同一時刻只能處理一個進程(一個進程中至少一個線程)

III.第三步加強:除了多線程,還出現了傲寒2個或者4個完整處理器的cpu芯片,以下圖。要使用這類多核芯片確定須要有多處理操做系統

 

4.2 存儲器

計算機中第二重要的就是存儲了,全部人都意淫着存儲:速度快(這樣cpu的等待存儲器的延遲就下降了)+容量大+價錢便宜。而後同時兼備三者是不可能的,因此有了以下的不一樣的處理方式

存儲器系統採用如上圖的分層結構,頂層的存儲器速度較高,容量較小,與底層的存儲器相比每位的成本較高,其差異每每是十億數量級的

 

  寄存器即L1緩存:

用與cpu相同材質製造,與cpu同樣快,於是cpu訪問它無時延,典型容量是:在32位cpu中爲32*32,在64位cpu中爲64*64,在兩種狀況下容量均<1KB。

  高速緩存即L2緩存:

主要由硬件控制高速緩存的存取,內存中有高速緩存行按照0~64字節爲行0,64~127爲行1。。。最經常使用的高速緩存行放置在cpu內部或者很是接近cpu的高速緩存中。當某個程序須要讀一個存儲字時,高速緩存硬件檢查所須要的高速緩存行是否在高速緩存中。若是是,則稱爲高速緩存命中,緩存知足了請求,就不須要經過總線把訪問請求送往主存(內存),這畢竟是慢的。高速緩存的命中一般須要兩個時鐘週期。高速緩存爲命中,就必須訪問內存,這須要付出大量的時間代價。因爲高速緩存價格昂貴,因此其大小有限,有些機器具備兩級甚至三級高速緩存,每一級高速緩存比前一級慢可是容易大。

  緩存在計算機科學的許多領域中起着重要的做用,並不只僅只是RAM(隨機存取存儲器)的緩存行。只要存在大量的資源能夠劃分爲小的部分,那麼這些資源中的某些部分確定會比其餘部分更頻發地獲得使用,此時用緩存能夠帶來性能上的提高。一個典型的例子就是操做系統一直在使用緩存,好比,多數操做系統在內存中保留頻繁使用的文件(的一部分),以免從磁盤中重複地調用這些文件,相似的/root/a/b/c/d/e/f/a.txt的長路徑名轉換成該文件所在的磁盤地址的結果真後放入緩存,能夠避免重複尋找地址,還有一個web頁面的url地址轉換爲網絡地址(IP)地址後,這個轉換結果也能夠緩存起來供未來使用。

  緩存是一個好方法,在現代cpu中設計了兩個緩存,再看4.1中的兩種cpu設計圖。第一級緩存稱爲L1老是在CPU中,一般用來將已經解碼的指令調入cpu的執行引擎,對那些頻繁使用的數據自,多少芯片還會按照第二L1緩存 。。。另外每每設計有二級緩存L2,用來存放近來常用的內存字。L1與L2的差異在於對cpu對L1的訪問無時間延遲,而對L2的訪問則有1-2個時鐘週期(即1-2ns)的延遲。

內存:

再往下一層是主存,此乃存儲器系統的主力,主存一般稱爲隨機訪問存儲RAM,就是咱們一般所說的內存,容量一直在不斷攀升,全部不能再高速緩存中找到的,都會到主存中找,主存是易失性存儲,斷電後數據所有消失

除了主存RAM以外,許多計算機已經在使用少許的非易失性隨機訪問存儲如ROMRead Only Memory,ROM),在電源切斷以後,非易失性存儲的內容並不會丟失,ROM只讀存儲器在工廠中就被編程完畢,而後不再能修改。ROM速度快且便宜,在有些計算機中,用於啓動計算機的引導加載模塊就存放在ROM中,另一些I/O卡也採用ROM處理底層設備的控制。

EEPROM(Electrically Erasable PROM,電可擦除可編程ROM)和閃存(flash memory)也是非易失性的,可是與ROM相反,他們能夠擦除和重寫。不太重寫時花費的時間比寫入RAM要多。在便攜式電子設備中中,閃存一般做爲存儲媒介。閃存是數碼相機中的膠捲,是便攜式音譯播放器的磁盤,還應用於固態硬盤。閃存在速度上介於RAM和磁盤之間,但與磁盤不一樣的是,閃存擦除的次數過多,就被磨損了。

 

還有一類存儲器就是CMOS,它是易失性的,許多計算機利用CMOS存儲器來保持當前時間和日期。CMOS存儲器和遞增時間的電路由一小塊電池驅動,因此,即便計算機沒有加電,時間也仍然能夠正確地更新,除此以外CMOS還能夠保存配置的參數,好比,哪個是啓動磁盤等,之因此採用CMOS是由於它耗電很是少,一塊工廠原裝電池每每能使用若干年,可是當電池失效時,相關的配置和時間等都將丟失

4.3 磁盤

 

磁盤低速的緣由是由於它一種機械裝置,在磁盤中有一個或多個金屬盤片,它們以5400,7200或10800rpm(RPM =revolutions per minute 每分鐘多少轉 )的速度旋轉。從邊緣開始有一個機械臂懸在盤面上,這相似於老式黑膠唱片機上的拾音臂。信息卸載磁盤上的一些列的同心圓上,是一連串的2進制位(稱爲bit位),爲了統計方法,8個bit稱爲一個字節bytes,1024bytes=1k,1024k=1M,1024M=1G,因此咱們平時所說的磁盤容量最終指的就是磁盤能寫多少個2進制位。

每一個磁頭能夠讀取一段換新區域,稱爲磁道

把一個戈丁手臂位置上因此的磁道合起來,組成一個柱面

每一個磁道劃成若干扇區,扇區典型的值是512字節

  數據都存放於一段一段的扇區,即磁道這個圓圈的一小段圓圈,從磁盤讀取一段數據須要經歷尋道時間和延遲時間

平均尋道時間

機械手臂從一個柱面隨機移動到相鄰的柱面的時間成爲尋到時間,找到了磁道就覺得着招到了數據所在的那個圈圈,可是還不知道數據具體這個圓圈的具體位置

平均延遲時間
機械臂到達正確的磁道以後還必須等待旋轉到數據所在的扇區下,這段時間成爲延遲時間
 
 
  虛擬內存:
許多計算機支持虛擬內存機制,該機制使計算機能夠運行大於物理內存的程序,方法是將正在使用的程序放入內存取執行,而暫時不須要執行的程序放到磁盤的某塊地方,這塊地方成爲虛擬內存,在linux中成爲swap,這種機制的核心在於快速地映射內存地址,由cpu中的一個部件負責,成爲存儲器管理單元(Memory Management Unit MMU)
 
PS:從一個程序切換到另一個程序,成爲上下文切換 (context switch),緩存和MMU的出現提高了系統的性能,尤爲是上下文切換
 

4.4 磁帶

在價錢相同的狀況下比硬盤擁有更高的存儲容量,雖然速度低於磁盤,可是因其大容量,在地震水災火災時可移動性強等特性,常被用來作備份。(常見於大型數據庫系統中)

4.5 I/O設備

cpu和存儲器並非操做系統惟一須要管理的資源,I/O設備也是很是重要的一環。

見四中的圖,I/O設備通常包括兩個部分:設備控制器和設備自己

控制器:是查找主板上的一塊芯片或一組芯片(硬盤,網卡,聲卡等都須要插到一個口上,這個口連的即是控制器),控制器負責控制鏈接的設備,它從操做系統接收命令,好比讀硬盤數據,而後就對硬盤設備發起讀請求來讀出內容。

控制器的功能:一般狀況下對設備的控制是很是複雜和具體的,控制器的任務就是爲操做系統屏蔽這些複雜而具體的工做,提供給操做系統一個簡單而清晰的接口

設備自己:有相對簡單的接口且標準的,這樣你們均可覺得其編寫驅動程序了。要想調用設備,必須根據該接口編寫複雜而具體的程序,因而有了控制器提供設備驅動接口給操做系統。必須把設備驅動程序安裝到操做系統中。

4.5 輸入輸出設備

複製代碼
#一、輸入設備
  輸入設備的任務是把人們編好的程序和原始數據送到計算機中去,而且將他們轉換成計算機內存所能識別和接受的信息方式。

  安輸入信息的形態可分爲字符(包括漢字)輸入、圖形輸入、圖像輸入及語言輸入等。目前,常見的輸入設備有:鍵盤、鼠標、掃描儀等。輔助存儲器(磁盤、磁帶)也能夠看做輸入設備。另外,自動控制和檢測系統中使用的模數(A/D)轉換裝置也是一種輸入設備。

#二、輸出設備
  輸出設備的任務是將計算機的處理結果以人或其餘設備所能接受的形式送出計算機。

  目前最經常使用的輸出設備是打印機和顯示器。輔助存儲器也能夠看作輸出設備。另外,數模(D/A)轉換裝置也是一種輸出設備。
複製代碼

4.6 總線

四小節中的結構在小型計算機中沿用了多年,並也用在早期的IBM PC中。可是隨着處理器和存儲器速度愈來愈快,單總線很難處理總線的交通流量了,因而出現了下圖的多總線模式,他們處理I/O設備及cpu到存儲器的速度都更快。

北橋即PCI橋:鏈接高速設備

南橋即ISA橋:鏈接慢速設備

主板圖解:

電源(Power)==心臟:全部的組件要能運做,得要有足夠的電力供給才行。這就好像心臟同樣,若是心臟不跳動了,人就嗝屁了,電腦也是若是沒有電源,那也就是一堆垃圾,什麼做用都沒有。

4.7 啓動計算機

在計算機的主板上有一個基本的輸入輸出程序(Basic  Input Output system)

BIOS就至關於一個小的操做系統,它有底層的I/O軟件,包括讀鍵盤,寫屏幕,進行磁盤I/O,該程序存放於一非易失性閃存RAM中。

 

啓動流程

1.計算機加電

2.BIOS開始運行,檢測硬件:cpu、內存、硬盤等

3.BIOS讀取CMOS存儲器中的參數,選擇啓動設備

4.從啓動設備上讀取第一個扇區的內容(MBR主引導記錄512字節,前446爲引導信息,後64爲分區信息,最後兩個爲標誌位)

5.根據分區信息讀入bootloader啓動裝載模塊,啓動操做系統

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

相關文章
相關標籤/搜索