1. 程式人生 > >Linux學習日記第一篇(計算機概論)

Linux學習日記第一篇(計算機概論)

Linux學習日記第一篇——計算機概論

一、什麼是計算機

計算機,是用以接受使用者輸入指令與資料,在經過中央處理器的資料與邏輯單元運算處理後,能產生或儲存成有用的資訊的機器。例如,我們日常生活當中所使用的ATM提款機、膝上型電腦等等,都屬於計算機。

二、個人計算機架構與介面裝置

1. 計算機硬體的組成

  • 輸入單元: 如鍵盤、滑鼠、觸控式螢幕等
  • 輸出單元: 如螢幕、印表機等
  • 控制單元:位於CPU內部,用以協調各元件與單元之間的工作
  • 算術邏輯單元: 位於CPU內部,用以程式運算與邏輯判斷
  • 記憶體: CPU與外界資料連線的橋樑,CPU要處理的資料要從記憶體中讀出,處理完的資料會存入到記憶體中

值得關注的是,在隨後的發展當中,為了滿足不同情況的需求,計算機又進行了外部儲存的擴充套件,成為了今天我們所看到的硬碟、U盤、光碟等,它們統稱為外部儲存裝置

2.計算機的架構

一般消費者常常使用的計算機通常指的是x86的個人計算機架構,主要有兩大開發商,Intel和AMD,他們的CPU架構不相容,設計理念也有所區別。因為目前x86的CPU主要廠商是Intel,所主要闡述Intel的主機板架構。

Intel 主機板架構

2.1 南北橋
在整個主機板上,最重要的是晶片組,而晶片組通過兩個橋接器來控制各個元件的通訊,稱為南橋和北橋。
  • 南橋:負責連線速度較慢的周邊介面,如硬碟、USB等
  • 北橋:負責連線速度較快的CPU、記憶體與顯示卡等部件
目前,北橋所支援的頻率可以達到333/400/533/800/1066/1333/1600MHz,能夠應用於不同的情況。北橋所支援的頻率稱為前端匯流排速度(Front Side Bus, FSB),每次傳送的位數則是匯流排寬度,常見的有32位/64位。每秒鐘傳送的最大資料量用匯流排頻寬來衡量,匯流排頻寬 = “FSB × 匯流排寬度”。

CPU每次能夠處理的資料量稱為字組大小(Word Size),字組大小依據CPU的設計而有32位與64位,如果是32位,我們就稱該計算機是32位的!!

2.2 中央處理器CPU
如果將人和計算機進行一個類比,會發現有很多相似之處,這是人類根據現有事物為基礎,進行理論設計的證明。例如,計算機中的中央處理器(Central Processing Unit, CPU),類似於人類的大腦,能夠集中處理計算機獲取到的外界資訊。
CPU本身,是一個具有特定功能的晶片,裡面含有微指令集,包含控制單元、算術邏輯單元,能夠完成管理與運算的工作。其中,算術邏輯單元主要負責程式運算與邏輯判斷,控制單元則主要協調各元件與各單元間的工作。
CPU的分類
  • 精簡指令集(Reduced Instruction Set Computer, RISC)

這種指令集較為精簡,指令長度較短,完成的操作簡單,執行的效果良好,但要完成複雜的事情,需要由多個指令來完成

  • 複雜指令集(Complex InstructionSet Computer, CISC)

不同於RISC,CISC的微指令集能夠執行一些較低階的硬體操作,指令數目較多並且複雜,指令長度不同,完成指令相應操作的時間較長

** RISC和CISC常見型別和應用 **

類別 常見型別 應用
RISC Sun公司的SPARC系列、IBM公司的Power Architecture(包括Power PC系列)系列和ARM系列 SPARC架構的計算機常用於學術領域的大型工作站、銀行金融體系的伺服器中; 基於Power PC架構的Cell處理器應用到了Sony公司生產的Play Station 3(PS3)上; 基於ARM結構的CPU用在瞭如手機、導航、網路裝置等生活中的各個領域中(目前使用最為廣泛的CPU就是ARM)
CISC AMD、Intel、VIA生產的X86架構CPU 個人計算機(Person Computer, PC)
CPU連線的其他裝置
將CPU比作大腦是貼切的,但要完成計算機相應的任務,還需要其他的元件。除了前面提到的輸入單元、輸出單元、記憶體之外,還需要連線一些外圍的裝置,稱為介面裝置。
主要的介面裝置有:
  • 儲存裝置:硬碟、光碟、U盤等
  • 顯示裝置:與顯示屏的精度、色彩與解析度直接相關
  • 網路裝置:連線外圍網路
AMD與Intel的晶片組架構的區別在於,記憶體直接與CPU通訊,不經過北橋。為了加速兩者的通訊,AMD將記憶體控制組件整合到CPU當中。這是AMD和Intel兩種CPU在架構上的主要區別。

3.記憶體

記憶體,是計算機內部的儲存器。CPU進行處理的資訊都是來自於記憶體,包括軟體程式和資料。目前我們使用的計算機的記憶體主要元件為動態隨機訪問記憶體(Dynamic Random Access Memory, DRAM),並且只有當它在通電的時候才能記錄使用,斷電後丟失。
  • 容量:由於所有的資料都是從記憶體讀取到CPU內部的,因此如果記憶體不夠大,將會導致某些大容量資料無法被完整載入。通常記憶體越大表示系統越快,因為系統不需要常常釋放一些記憶體內部的資料
  • 雙通道:由於所有供給CPU處理的資訊都在記憶體中,因此記憶體的資料寬度越大越好。通常的做法是將兩個64位的記憶體條彙總在一起,組成一個128位的資料寬度。另外,兩個記憶體條的型號最好相同,這是為了同步寫入/讀出資料,這樣才能夠提升整體的頻寬
  • 記憶體與CPU頻率:理論上說,CPU頻率和記憶體的外頻應當是一致的比較好。如CPU的外頻為333MHz,則應該用記憶體外頻為333MHz的記憶體
其他類別的內部儲存器
  • 靜態隨機訪問記憶體:相比較於DRAM,靜態隨機訪問記憶體(Static Random Access Memory, SRAM)最大的特點是訪問速度更快。它使用電晶體數量較多,價格較高,不易做成大容量。通常應用在CPU內部的第二層快取L2 Cache上,以加快CPU的執行效能
  • 只讀儲存器:ROM(Read Only Memory, ROM),作為一種非揮發性儲存器,其內部儲存的內容不會因為斷電而丟失,它在計算機內部中有極其重要的應用。例如開機時會首先讀取的程式BIOS(Basic Input Output System),它的程式就是寫在ROM上。

4.顯示卡

顯示卡,又稱為VGA(Video Graphics Array),應用於計算機中圖形影像的顯示。一般對於圖形影像的顯示重點在於解析度與色彩深度,因為每個影象顯示的顏色會佔用記憶體,因此顯示卡上面會有一個記憶體的容量,這個顯示卡的容量會最終影像螢幕解析度與色彩深度。

對於一些需求高質量畫質遊戲的使用者來說,顯示卡是需要重點考慮的物件

5.硬碟與儲存裝置

除了前面提到的內部儲存器外,計算機仍然需要其他的儲存方式來儲存一些可能不常用、但需要重新讀入的資訊,如小眾的應用程式。值得注意的是,這種儲存器屬於外部儲存器,CPU無法直接進行操作,只有當資訊讀入到記憶體之後,CPU才能進行處理。
常用的硬碟與儲存裝置有硬碟、軟盤、CD、U盤等。另外,對於大型機器的區域網儲存裝置(SAN、NAS)等,也可以用來儲存資料。不過,最主要的儲存裝置還是硬碟。
5.1 硬碟
硬碟由許多的碟片、機械臂、磁頭和主軸馬達組成。儲存的資料寫在具有磁性物質的碟片上,通常,為了加大容量,硬碟內部會有兩個以上的碟片。在執行時,由主軸馬達控制碟片轉動,機械臂伸展讓讀取頭在碟片上進行讀取的操作。
5.2 傳輸介面
目前,硬碟與主機系統的連線主要有三種,IDE、SATA、SCSI介面。
  • IDE介面:IDE介面插槽使用的排線較寬,每條排線上面可以連線兩個IDE裝置,由磁碟驅動器調整跳針來判別裝置的主從(Master/Slave)架構
  • SATA介面:每條SATA連線線僅能接一個SATA裝置。SATA介面速度很快,並且由於其排線較為細小,有利於主機殼內部的散熱與安裝
  • SCSI介面:SCSI介面應用於工作站級別以上的硬碟傳輸,這種介面的硬碟在控制器上含有一塊處理器,所以除了運轉速度很快之外,消耗的CPU資源也較少

6.PCI適配卡

外設部件互聯標準(Peripheral Component Interconnect, PCI),簡稱PCI。PCI插槽可以提供給多個使用者,如果使用者有額外需要的功能卡,就能夠安插在這種PCI介面插槽上。不過,由於各個元件的成本一直在下降,主機板上面集成了相當多的元件裝置,如音效卡、網絡卡、USB控制卡等,所以現在的主機板上面所安插的PCI適配卡就少很多。
目前,由於PCI Express的快速發展,很多製造商都往PCIe介面發硬件,不過仍然有很多的硬體使用PCI介面。

7.主機板

主機板是整個主機當中相當重要的一部分,我們所談論的所有元件都是安插在主機板上面的。在主機板上,負責各個元件之間通訊的就是晶片組,晶片組由北橋和南橋組成。北橋負責CPU/RAM/VGA等的連線,南橋則負責PCI介面與速度較慢的I/O裝置。
  • 晶片組:晶片組是依據CPU的能力進行規劃的,所以在購買或升級主機的時候,需要綜合考慮CPU、主機板、記憶體與相關的介面裝置。如果是整合的晶片組,只需要購買CPU、主機板、記憶體等,不過效能上相對較弱;如果是獨立型晶片組,則在更換的時候需要額外負擔介面裝置如音效卡、顯示卡等的花費,但效能較強
  • 裝置I/O地址和IRQ中斷通道:I/O地址用於標記各個裝置,被標記的裝置可以通過IRQ中斷通道知道目前CPU的工作狀態,以方便CPU進行工作分配的任務
  • CMOS和BIOS:CMOS用以記錄主機板上面的重要引數如系統時間、CPU電壓和頻率、各項裝置的I/O地址和IRQ等。BIOS為寫入到主機板上某一塊快閃記憶體或EEPROM的程式,在開機的時候執行,它會載入CMOS中的引數,呼叫儲存裝置中的開機程式,進一步進入到作業系統中

值得關注的是,主機板上面的晶片組是一塊散熱很多的元件,因此常常需要使用一些手段進行散熱,如熱傳導。另外,使用CMOS進行引數的記錄時,需要耗電,這也是為什麼主機板需要安裝電池。

三、計算機的軟體程式

計算機的組成由硬體和軟體共同組成,兩者相輔相成,不存在優先順序之分。沒有硬體,計算機無法搭載軟體,沒有軟體,計算機只是一堆無用的機器。目前,計算機系統將軟體程式分為兩大類,系統軟體和應用程式。
1.機器程式與編譯程式
計算機在工作時,內部只能夠辨識由0和1編寫的機器程式,編寫難度很大。另外,由於不同的CPU的微指令架構也不同,在一臺計算機上編寫的程式往往難以應用到另一臺計算機上。為此,電腦科學家設計出一類符合人們思維方式的程式語言,如C、C++、Java、Fortran等。編寫完成之後,通過編譯器轉化成為機器程式,交付給機器執行。
2.作業系統
在早期,要讓計算機執行程式必須得參考一堆硬體功能函式,每次寫程式時都需要重新改寫,而硬體與軟體的功能往往不一致,這極大的阻礙了計算機的發展。為了解決這個問題,人們將所有的硬體都驅動,只提供一個開發軟體的參考介面,以此來降低開發軟體的難度,這種架構就稱之為作業系統。
作業系統,在本質上,也屬於一組程式,它的重點在於管理計算機的所有活動以及驅動系統中的所有硬體,所有的硬體操作都是由作業系統控制的。作業系統又分為核心和系統呼叫兩部分,分別掌管內部硬體控制和外部軟體介面。
核心:
在硬體具體操作的實現上,是由作業系統的核心完成的。由於這部分內的程式至關重要,所以一般的使用者是不會接觸到的。核心能夠實現如裝置驅動、多工管理排程等功能。
系統呼叫:
在作業系統上進行軟體開發時,開發人員只需要遵循軟體開發介面的規則,不需要關注核心引數等問題。例如我們編寫C語言的程式時,只需要關注C語言的語法,系統內部介面會將C語言的相關語法轉換成可以瞭解的任務函式,這樣核心就能夠順利執行該程式。

值得關注的是,作業系統的核心層是根據硬體寫成的,因此不同的作業系統不能應用在不同的硬體架構上,例如Windows 32位作業系統和64位作業系統。另外,外部應用程式的開發也是如此,例如在Windows上開發的一些程式不能夠應用在Linux上。對於一個應用廠商而言,要在一臺計算機中使用他們製作的硬體,必須要寫一套與該作業系統配套的硬體驅動程式,利用驅動程式來驅動他們製作的硬體。

3.應用程式
應用程式是依據作業系統給出的開發介面所開發出來的軟體,使用者能夠直接操作這些軟體,實現某些使用者預期的要求。例如Chrome瀏覽器、MarkdownPad 2編輯器、CCleaner清理器等。同樣的,在不同系統下開發的應用程式可能無法相容,例如Windows XP和Windows 7,在Windows XP上無法執行辦公室軟體,而Windows 7則可以。