《鳥哥的Linux私房菜》筆記系列——第零章 計算機概論

鳥哥的Linux私房菜

第0章    計算機概論

0.1 計算機

0.1.1 計算機硬件五大單元

    計算機硬件五大單元:控制器、運算器、存儲器、輸入單元、輸出單元;

    CPU(Central Processing Unit):算術邏輯單元 and 控制單元;

    CPU處理的數據來自於主存儲器,處理完畢後寫回主存儲器,由主存儲器與輸入輸出單元傳輸數據;

0.1.2 CPU架構

    CPU存有微指令集,微指令集的兩種不同的設計理念形成了兩種主要的CPU架構:精簡指令集系統(RISC)和複雜指令集系統(CISC);

  • 精簡指令集系統(Reduced Instruction Set Computer,RISC):

1、SPARC:

    太陽微系統公司(Sun)開發了Sparc處理器,後Sun被甲骨文公司(Oracle)收購;

    Sun還開發了Solaris操作系統,是Unix的一個衍生版本,被Oracle收購後改名爲Oracle Solaris;

    Sparc CPU常用於學術領域的大型工作站,包括銀行金融體系的主服務器;

2、Power(主要爲PowerPC):

    IBM公司(International Business Machines Corporation)開發出Power系列處理器之後,又與蘋果、摩托羅拉共同開發了PowerPC(Performance Computer)處理器;

    索尼公司(Sony)退出的PS3(Play Station 3)就是使用的基於PowerPC架構的Cell處理器;

3、ARM:

    ARM公司(Advanced RISC Machines)推出的ARM處理器是世界上適用範圍最廣的處理器,在包括手機、導航、路由、pad等各領域都廣泛應用;

  • 複雜指令集系統(Complex Instruction Set Computer,CISC):

1、AMD:

    AMD公司(Advanced Micro Devices,AMD)開發的AMD處理器;

2、Intel:

    英特爾公司(Intel)開發的Intel處理器;

    由於AMD、Intel所開發出來的x86架構的CPU被大量用於個人計算機(Personal Computer,PC),因此,個人計算機被稱爲x86架構的計算機;

    第一枚Intel8086處理器是16位處理器,第三枚Intel80386處理器是32位處理器,也是第一枚32位處理器,2003年後出現了x86架構的64位CPU,因此64位個人計算機CPU又統稱爲x86_64架構CPU;

    32位處理器每次只能讀取32bits的數據,即使32bits裝載的全部都是地址位,每個地址對應一個字節B,32bits也只能編碼2^32B(即4GB)的地址,這就是32位個人電腦內存最大到4G,而64位個人電腦內存理論上無限制(2^34GB)的原因;

0.1.3 其他單元的設備

    主機設備大多通過主板(main board)連接,包括網卡、顯示適配器(顯卡)、磁盤陣列器等適配卡,主存儲器(main memory,RAM(隨機存儲器,Random Access Memory))、硬盤、光盤等輔助存儲設備、輸入輸出單元等;

0.1.4 運作流程

0.1.5 計算機用途的分類

    1、超級計算機(Super Computer):國防軍事、氣象預測、太空科技等;

    2、大型計算機(Mainframe Computer):大型企業主機、全國性證券交易所等大型企業機構;

    3、迷你計算機(Mini Computer):科學研究、工程分析、工廠流程管理等;

    4、工作站(Work Station):針對特殊用途設計的計算機,比迷你計算機性價比高,科學研究、工程分析、工廠流程管理等;

    5、微電腦(Micro Computer):個人計算機;

0.1.6 計算機的常用單位

  • 容量單位:

    比特(bit,binary digit):0/1;

    字節(Byte):1Byte=8bits;

    KB、MB、GB、TB、PB、EB、ZB等;

    容量單位 全部使用二進制表示;

  • 速度單位:

    指令週期:MHz、GHz,其中Hz爲秒分之一;

    網絡傳輸:Mbps=Mbits per second;

    速度單位 全部使用十進制表示,這裏的G=1000M,M=1000K,而不是1024;

0.2 個人計算機架構與設備組件

    芯片組通常用兩個網橋來控制各組件的溝通:

    1、北橋:連接速遞較快的CPU、主存儲器和顯示適配器;

    2、南橋:連接速度較慢的硬盤、USB、網卡;

    由於北橋中CPU和主存儲器之間傳輸頻繁,會佔用北橋的總可用帶寬,目前大多將北橋的內存控制器整合到CPU中,CPU可以直接和存儲器交流,加快了速度的同時解放了北橋的帶寬;

    現在已經沒有所謂的北橋了,北橋已經整合到CPU內部了;

0.2.1 CPU相關內容

    多核心CPU開始普及;

    不同CPU型號具有不同的腳位,搭配的主板芯片組也不同;

    CPU的頻率表示了CPU每秒可以進行的工作次數,但是因爲不同CPU微指令集不同,架構不同,第二層快取不同等,所以頻率只能用來比較同款CPU速度;

  • CPU工作頻率:外頻和倍頻

    外頻是CPU與外部組件進行數據傳輸的速度,倍頻是CPU內部用來加速工作性能的倍數,二者相乘是CPU內部的工作頻率;

    倍頻一般是鎖定的,無法修改,所以超頻一般指外頻;

    現在的Intel CPU可以自動超頻,大量運算的時候自動超頻,不需要大量運算的時候降低頻率,實現節能省電的目的;

  • Intel超線程(HT,Hyper-Threading):

    CPU實際運行中有兩個程序同時進行運行,以解決CPU指令週期太快造成運算核心經常閒置的問題;

0.2.2 內存

    個人計算機的主存儲器主要組件是動態隨機存取內存(Dynamic Random Access Memory,DRAM);

    隨機存取內存(Random Access Memory,RAM)只有通電時才能記錄和使用,斷電時失去數據,因此也被稱爲揮發性內存;

    動態(Dynamic)指的是存儲陣列需要不斷地刷新來保持數據不丟失;

    隨機(Random)指的是數據不是線性依次存儲,而是自由指定地址進行數據讀寫的;

    現在廣泛使用的DRAM有動態隨機存取內存SDRAM(Synchronous Dynamic Random Access Memory)和雙倍數據傳輸速率同步動態隨機存取內存DDR SDRAM(Double Data  Rate Synchronous Dynamic Random Access Memory)兩種;

    雙倍數據傳輸速率(Double Data Rate)指的是一個工作週期內進行兩次數據傳送;

    同步(Synchronous)指的是內存工作需要同步時鐘,內部命令的傳送和數據的傳輸都以它爲基準;

    DDR2,DDR3,DDR4等技術也相繼出現,DDR2的頻率倍數是4倍,DDR3的頻率倍數是8倍,DDR4的頻率倍數是16倍;

    DDR3有DDR3L版本,指的是DDR3的低電壓版,DDR3的工作電壓爲1.5V,DDR3L的工作電壓爲1.35V,可以節能,有的電腦內存規格爲DDR3/DDR3L,支持DDR3和DDR3L;

  • 多通道設計

    爲提高主存儲器帶寬,多通道設計允許兩個主存儲器彙整在一起進行存儲,原來兩個64位主存儲器可以用作一個128位的主存儲器使用,數據是同步寫入/讀出這一對主存儲器的,爲實現兩個主存儲器的多通道,要求儘量實現兩個主存儲器的容量大小和型號都相同;

    部分服務器要求更高的速度,除了雙通道之外,中階服務器也經常使用三通道甚至四通道等多通道的內存環境;

  • DRAM和SRAM

    CPU內的第二層高速緩存:L2 cache;L2 cache位於CPU內部,存儲CPU常用的程序和數據;

    L2 cache位於CPU內部,所以cache的內存速度必須與CPU相同,DRAM不能滿足。所以L2 cache使用的是SRAM靜態隨機存取內存(Static Random Access Memory);

  • 只讀存儲器ROM(Read-Only Memory)

    主板組件的各項參數記錄在CMOS芯片中,CMOS芯片是一塊可以讀寫的RAM芯片,需要供電,電源是主板上的CMOS鈕釦電池;

    CMOS芯片記錄的數據通過BIOS程序進行讀取和更新,BIOS程序(Basic Input Output System)是一套寫死在主板上一個ROM芯片上的程序;

    這個ROM芯片在沒有通電的狀態下也能存儲數據,是一種非揮發性內存;

    BIOS程序屬於韌體(Firmware),韌體是嵌入在硬件上的軟件程序,雖然是一個軟件,但卻是連接硬件與使用它的軟件的橋樑,例如磁盤陣列器(RAID,Redundant Arrays of Independent Drives)、網卡等設備都有韌體;

    ROM芯片只能讀不能修改,所以現在的BIOS程序改爲存儲在EPROM(Erasable Programmable ROM,可擦除可編程只讀存儲器)、EEPROM(Electrically Erasable Programmable ROM,電可擦除可編程只讀存儲器);奔騰時代之後,現在的電腦主板都使用NORFlash存儲BIOS程序;

0.2.3 顯示適配器

    顯示適配器就是顯卡,顯卡有一個內存容量,用於存儲和計算圖像顯示的數據;

    隨着顯示適配器對運算能力的要求越來越高,顯卡廠商會直接在顯卡上嵌入一個3D加速的芯片,即GPU(Graphics Processing Unit),是一種專門運行繪圖運算工作的微處理器;

    顯卡與北橋各組件相連接的接口(即 顯卡總線接口)從PCI規格到AGP規格直到現在的PCI-Express(PCIe);

    顯示適配器輸入輸出接口(顯卡與顯示器的接口)有:

        D-Sub接口(VGA接口):現在只有低端顯卡採用,只能傳輸模擬信號;

        DVI接口:常用於液晶屏幕,有多種接口,常用傳輸數字信號的DVI-D,傳輸數字信號和模擬信號的DVI-I;

        HDMI接口:常用於電視屏幕、計算機屏幕,可以同時傳輸影像和聲音;

        Display port:可以同時傳輸影像和聲音,傳輸速率快而且免費,但是使用不普及,是以後的發展方向;

0.2.4 硬盤和存儲設備

    臺式機使用3.5寸硬盤,筆記本使用2.5寸硬盤;

    機械硬盤組成:主軸馬達、磁碟盤、機械手臂、讀取頭;主軸馬達轉動磁碟盤。然後機械手臂伸展帶動讀取頭在磁碟盤上進行讀寫;

    磁盤最小的物理存儲單位爲扇區(sector),同一個同心圓環的扇區組合成的圓環爲磁道(track),所有磁碟盤上面的相同磁道組合爲磁柱(cylinder);

    磁道從外向內,自0開始, 順序進行編號;

    外圍磁道比內圈磁道的扇區多,每個扇區的容量相同,所以外圍磁道比內圈磁道讀寫速度快,這就是通常把系統盤數據放在磁盤最外圍,也就是第一個盤C盤的原因;

    原本磁盤的扇區容量設計爲512Bytes,新的高容量磁盤有4KBytes的設計;

硬盤連接傳輸接口:

  • SATA:

    SATA接口從1.0到2.0發展到現在的3.0版本,速度不斷提升,每一代都向下兼容;由於SATA接口傳輸過程中,傳輸10位編碼時只有8位是數據編碼,其他2位是校驗位,所以SATA接口的帶寬(Gbit/s)與理論速度(Mbyte/s)的換算不是1:8,而是1:10,例如最新的SATA 3.0帶寬是6Gbit/s,理論速度爲600Mbyte/s;

  • SAS

    用於大型工作站或大型電腦上,傳輸速度比SATA快,穩定性比SATA高,但是價格昂貴;

  • USB

    USB 3.0(USB 3.1 Gen 1)帶寬5Gbit/s,理論速度500Mbyte/s;

    USB 3.1(USB 3.1 Gen 2)帶寬10Gbit/s,理論速度1000Mbyte/s,除去支持其他功能外,實際有效帶寬7.2Gbit/s,實際理論速度720Mbyte/s;

  • 固態硬盤(SSD,Solid State Disk)

    使用閃存製作,相比於機械硬盤(HDD,Hard Disk Drive)傳輸速度更快更省電;

0.2.5 擴充卡與界面

    如顯示適配器插槽大多爲PCIe一樣,現在的擴充卡預留接口大多爲PCIe,又是保留一個PCI插槽用於老舊卡的使用;

    PCIe 1.0、PCIe 2.0,PCIe 3.0,PCIe 4.0每一代速度都比上一代成倍增加,每一代都是上一代的2倍;

    同時PCIe技術使用了信道/管線(lane)的概念,每一條lane的帶寬相同,所以每一代PCIe都有x1,x4,x8,x16等不同的信道數,例如PCIe 3.0 x4帶寬爲4Gbyte/s,而PCIe 3.0 x8的帶寬爲8Gbyte/s;

    x16的插槽長度最長,適合x1,x4,x8,x16所有的卡,但是速度只有相應速度,一般表示爲(x長度 @ x速度)如(x16 @ x4);

    有些主板會將x4,x8等速度的插槽設計爲x16插槽的長度,此時的插槽雖然能使用x16的卡,但是速度也只有接口x4,x8的速度;

0.2.6 主板

  • 設備I/O地址與IRQ終端信道

    主板芯片組溝通不同的輸入、輸出、存儲裝置等計算機組件時,不同的計算機組件有自己的I/O地址用於表示自己,同時使用IRQ中斷信道來告知CPU該裝置的工作情況,IRQ中斷信道相當於每個裝置連接到CPU的專用路徑;老式主板芯片組只有15個IRQ,可以選擇將周邊沒有用到的接口關閉空出IRQ,也可以使用sharing IRQ技術;

  • CMOS芯片與BIOS程序

    CMOS芯片主要的功能爲記錄主板上的重要參數,包括系統時間、CPU電壓與頻率,各項設備的I/O地址與IRQ等,由於這些數據的記錄需要花費電力,因此主板上面纔有CMOS鈕釦電池用於CMOS芯片的供電;

    BIOS程序是寫入到主板上某一塊Flash或EEPROM的程序,可以在開機的時候執行,以已在CMOS芯片中的參數,並嘗試呼叫儲存裝置中的開機程序,進一步進入操作系統當中,也可以修改CMOS芯片中的參數。每種主板呼叫BIOS設定程序的按鍵都不同,一般桌面計算機常見的是使用[del]按鍵進入BIOS設定畫面;

0.3 數據表示方式

0.3.1 數字系統

    二進制與十進制之間的相互轉換

0.3.2 文字編碼系統

    常用的英文編碼表爲ASCII系統,每個符號佔用1byte空間,共記錄256條內容;

    繁體中文(正體中文)編碼系統爲BIG5系統,俗稱大五碼,每個中文字佔用2bytes,實際存儲一萬三千多字符;

    簡體中文編碼系統爲GB碼,俗稱國標碼;

    國際組織ISO/IEC制定了Unicode編碼系統,俗稱爲UTF-8或者萬國碼;

0.4 軟件程序運作

0.4.1 機器程序與編譯程序

    高階程序語言解決了機器語言難以編寫,不易修改移植的問題;

    高階語言編程,編譯器將高階程序語言編譯得到機器語言,用於機器硬件的運行;

    但是仍然需要考慮相對應硬件的使用方法,也就是硬件功能參數,才能編寫,例如內存如何定位地址,此時需要操作系統(Operating System);

0.4.2 操作系統

    操作系統下能驅動所有硬件,上能提供一個發展軟件的參考接口用於工程師開發軟件;

  • 操作系統核心(Kernel):

    操作系統(Operating System,OS)其實也是一組程序,這組程序的重點在於管理計算機的所有活動以及驅動系統中的所有硬件,硬件的所有動作都必須透過操作系統來達成,這些功能就是操作系統的核心(Kernel),核心主要管控硬件與提供相關的能力(例如存取硬盤、網絡功能、CPU資源取得等),這些管理的動作非常重要,因此,核心程序所放置到內存當中的區塊是受保護的,並且開機後就一直常駐在內存中;

  • 系統呼叫(System Call):

第一層:硬件組成的計算機系統;

    第二層:操作系統核心(Kernel);主要管理硬件,提供合理的計算機系統資源分配(包括CPU資源、內存使用資源等);

    只要硬件不同(如x86架構與RISC架構的CPU),核心就要修改;

        第三層:操作系統系統呼叫層(System Call);提供一整組開發接口,用於軟件開發工程師開發軟件時使用呼叫參數;

            第四層:軟件應用程序;

所以操作系統就是核心與其提供的接口工具;

(1)操作系統的核心層是直接參考硬件規格寫成,所以同一個操作系統不能在不同的【硬件架構】下運作。PC版Windows 10不能在ARM架構的計算機(手機和平板)運行;

(2)操作系統只能管理所有硬件資源,包括CPU、內存、輸入輸出裝置及系統文件,只能讓計算機主機準備妥當(Ready)而已並不運作其他功能;

(3)應用程序的開發需要參考操作系統提供的開發接口,所以應用系統必須在相關操作系統運行,不適合其他操作系統;

  • 核心功能

(1)系統呼叫接口(System Call Interface):提供呼叫接口,方便程序開發者使用【系統呼叫參數】而不用參考【硬件參數】或【操作系統核心參數】利用硬件

(2)程序管理(Process Control):對CPU的資源進行分配,控制進程調度,相應算法對CPU處理的進程排序,進行 進程管理;

(3)內存管理(Memory Management):內存控制管理,相應算法對內存中存儲的數據進行調整置換,通常核心(Kernel)還會提供虛擬內存的功能,當內存不足時可以進行內存置換(swap)的功能,即操作系統的 SWAP區;

(4)文件系統管理(FileSystem Management):管理文件系統,例如文件目錄,文件數據的輸入輸出(I/O)等;

(5)裝置的驅動(Device Drivers):驅動硬件,目前有【可加載模塊】功能,可以將驅動程序編輯成模塊,而不需要重新編譯核心了;

驅動程序時硬件廠商推出硬件時,自行參考操作系統的驅動程序開發接口,所開發出來的,一般購買硬件時都會附上帶有【相應操作系統驅動程序的光盤】;

  • 操作系統和驅動程序

    爲了驅動不斷更新的硬件,操作系統通常會提供一個開發接口給硬件開發商,硬件開發商可以根據相應的操作系統提供的接口設計專門的驅動系統;

    操作系統必須能驅動硬件,應用程序才能使用該硬件功能;

    一般來說,操作系統會提供開發接口,讓開發商製作硬件的驅動程序;

    要使用新硬件功能,必須要先安裝廠商提供的驅動程序纔行;

    驅動程序是硬件廠商提供的,與操作系統開發者無關;

0.4.3 應用程序

0.5 重點回顧

    計算機:接受用戶輸入指令和數據,經過中央處理器的數學邏輯單元運算處理後,輸出或儲存爲有用信息的設備;

    計算機五大單元:輸入單元、輸出單元、控制單元、算術邏輯單元、存儲單元;其中CPU內有控制單元、算術邏輯單元;

    數據由CPU控制流入/流出內存,CPU實際處理的數據完全來自於主存儲器;

    CPU根據設計理念可以分爲:精簡指令集系統(RISC,Reduced Instruction Set Computer)和複雜指令集系統(CISC,Complex Instruction Set Computer);

    CPU外頻指CPU與外部組件進行數據傳輸的速度,倍頻指CPU內部用於加速工作效能的倍數,二者相乘纔是CPU的頻率速度;

    新的CPU設計中,已經將北橋的內存控制芯片整合到CPU內部,而CPU與主存儲器、顯示適配器溝通的總線通常稱爲【系統總線】。南橋就是所謂的輸入輸出(I/O)總線,主要在聯繫硬盤、USB、網卡等接口設備;

    CPU每次能處理的數據量成爲【字大小】(Word Size),字大小依據CPU的設計而有32位與64位;

    個人計算機的主存儲器主要組件爲動態隨機存取內存(DRAM,Dynamic Random Access Memory),至於CPU內部的第二層快取cache L2則使用靜態隨機存取內存(SRAM,Static Random Access Memory);

    BIOS程序(Basic Input Output System)是一套寫死在主板一個只讀存儲器(ROM,Read Only Memory)的內存芯片上的程序,只讀存儲器不通電也能記錄數據;

    目前主流的外界卡界面爲PCIe界面,且最新爲PCIe 3.0,單信道速度高達1GBytes/s;

    常見的顯示適配器鏈接屏幕的界面有 HDMI(同時傳輸影像聲音) / DVI(DVI-D數字信號,DVI-I數字信號和模擬信號)/ D-Sub(VGA)/ Display port;

    傳統硬盤的組成爲:圓形磁盤,機械手臂,磁盤讀寫頭、主軸馬達,其中磁盤分爲扇區、磁道、磁柱;

    磁盤連接主板的界面大多爲SATA和SAS,目前臺式電腦主流爲SATA 3.0,理論極限速度爲600MBytes/s;

    常見的文字編碼爲ASCII碼,繁體中文編碼有Big5,簡體中文編碼有GB碼,此外簡體中文,繁體中文都有UTF8爲主流;

    操作系統(OS,Operating System)是一組程序,程序的重點在於管理計算機的所有活動,驅動系統中的所有硬件,提供軟件開發者系統呼叫接口;

    計算機主要以二進制爲單位,常用的磁盤容量單位爲Bytes,1Byte = 8bits;

    單純的操作系統僅在於驅動和管理硬件,而要使用硬件時,就要透過應用軟件或者是殼程序(Shell)的功能,來呼叫操作系統操縱硬件工作。如今的操作系統還加入了一些日常工作需要的應用軟件;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章