為了重新溫習一下電腦的基本知識,所以開始來讀鳥哥的電腦概論,這邊寫的內容再怎麼說都是鳥哥的複製品,主要目的是為了將自己學習到的東西重新轉換成文字,已期達到複習及練習文筆(欸)的目的。

電腦的功能

電腦的定義:接受指令 -> 邏輯運算 -> 輸出結果

其實電腦的定義十分廣泛,現在人手一機的智慧型手機也算是電腦呢,如果以一般的桌上型電腦來看:

  • 接受指令:鍵盤、滑鼠
  • 邏輯運算:CPU
  • 輸出結果:電腦螢幕、喇叭

邏輯運算部分其實就是我們電腦主機在做的事情,電腦主機的組成:中央處理器(CPU)、主記憶體(RAM)、系統匯流排(主機板上的晶片組)、各種輸入輸出元件 (I/O)

其中最重要的是CPU,就像一個人最重要的是大腦一樣,是電腦最重要的控制器。

  • 人在素描:眼睛看到貓貓 -> 大腦運算 -> 手握鉛筆輸出在紙上
  • 電腦遊戲:點擊滑鼠左鍵 -> CPU處理 -> 輸出開槍的遊戲畫面

而CPU也有分類,雖然都是接收資料然後輸出資料,但是這中間的邏輯處理也會因為開發商而有所不同囉!

CPU主要分為兩大類:

  • Complex Instruction Set Computer (CISC):複雜指令系統計算器
    • CPU內的指令集比較複雜,需要額外的編譯器來解析,目前個人電腦的x86或x86-64就是這種架構,也是最為常見的。
  • Reduced Instruction Set Computer (RISC):精簡指令系統計算器
    • 比CISC更為精簡快速,架構較為先進,常用於大型伺服器中,一些遊戲主機如PS、XBOX都曾用過這種架構的CPU,雖然PS4和XBOX ONE後來改用x86-64了。

其實CISC和RISC各有優缺,但是現在電腦好Lag,下次經過一番Google之後再來更新這一段。


個人電腦的組成

我們有組裝過電腦的都知道,電腦不是生來就是一整台好好的給我們用,而是各種裝置組裝而成的,這一節就是要來介紹個人電腦的組成。

  • CPU:剛剛說過最重要的東西,也就是整台電腦的大腦。
  • 主記憶體:專門儲存暫時存放的資料,大家應該知道硬碟這個裝置,硬碟就好比人的長期記憶,各種知識都會存在這裡,而記憶體就好比短期記憶,例如剛看過的電話號碼就會存在這,而當我們要電腦給我們看某一張圖片時,CPU會叫硬碟把圖片找出來並傳給記憶體,CPU再跟記憶體讀取該圖片,因為記憶體讀取速度比硬碟快多了,即時現在是SSD的時代,記憶體還是越大越好呢。
  • 輸入/輸出裝置(I/O):其實就是Input / Output的縮寫,沒有輸入(鍵盤),你就無法下指令給電腦,沒有輸出(螢幕),你就不知道電腦要給我們的資料。
  • 系統匯流排:其實就是連接電腦內部各種裝置的介面,例如主機板就是系統匯流排,即時我們人有手有腳有大腦,但是沒有神經系統傳遞訊號的話,大腦的訊息傳不到手也是無用武之地的。

程式的運作

其實程式的運作就是下指令給CPU,CPU接受到我們下的指令,例如打開Chrome,CPU就會叫硬碟把Chrome的程式碼找出來交給記憶體,然後CPU再從記憶體那邊讀取程式碼並執行,直到我們關掉Chrome。

借一下鳥哥的步驟:

  1. CPU 接受指令後,準備讀取資料,主要藉由匯流排將硬碟的資料讀入主記憶體當中
  2. CPU 開始處理程式碼,CPU 讀取的程式碼與資料都是由主記憶體當中取得
  3. 持續進行該項任務,直到任務完成為止

重要觀念

  • CPU必須接受指令才會運作
  • 程式碼與資料都是存放在硬碟上
  • CPU不會直接和硬碟拿資料,而是硬碟先傳到記憶體,CPU再跟記憶體拿
  • 任何資料傳輸都經由系統匯流排進行

程式的由來

如果說CPU有自己的指令集,程式當然就是由這些指令所編寫出來的囉,當然寫的工作就交給程式設計師囉!

不過這些指令集太接近機器語言,人本來就不容易去理解,因此就有了作業系統的誕生,作業系統會負責管理和硬體的溝通,同時提供一個標準化的開發介面給工程師們開發程式,讓工程師在設計時不用考慮硬體,只需要根據作業系統去開發即可,而C#、Java、.Net則是這些作業系統所推出的高階語言

高階語言簡單來說就是比較容易讓人理解的程式語言,而我們用這些高階語言寫完程式之後,這些語言的編譯器工具會再轉換成機器懂的語言,讓我們寫的程式可以執行,有點像翻譯機這樣。

重要觀念

  • 作業系統是基於硬體規格所撰寫的,所以一個作業系統無法在不同的硬體架構下運行,例如WinXP無法在RISC架構下運行,WinXP又分為32位元和64位元,為的也是對應x86和x86-64的CPU。
  • 作業系統只負責管理硬體資源,如CPU、硬碟等等,但是要真正「做些什麼」,就要另外安裝工程師們寫好的應用程式,例如Chrome、Photoshop等。
  • 應用程式也是基於不同的作業系統去開發的,例如Windows版的Photoshop,是不能安裝到Mac版的電腦上的。

目前常見的作業系統

  • Windows:目前最新的是惡名昭彰強制更新的Win10
  • Linux:免費的開源作業系統,也衍伸出如Ubuntu、Redhat等作業系統
  • OS X:Apple家開發的作業系統,目前最新的版本是EI Captain

硬體與驅動程式

大家應該都聽過「驅動程式」這個名詞,我們現在電腦上有作業系統了,「驅動程式」便是為了「驅動主機上的硬體」而存在的,但是硬體也是不斷地更新,為了讓大家都能夠用到新的顯示卡,作業系統的開發商會提供一個開發介面給這些硬體開發商,讓他們開發屬於自己產品的「驅動程式」,這樣一來,使用者在自己的電腦上裝上新顯示卡之後,只要安裝對應的「驅動程式」,電腦便可以順利地和該顯示卡溝通囉!

重要觀念

  • 作業系統要有「驅動程式」來「驅動」硬體,才能夠順利幫應用程式管理這些硬體資源。
  • 「作業系統開發商」會提供開發介面給「硬體開發商」,讓「硬體開發商」可以製作新硬體的「驅動程式」。
  • 「驅動程式」是由「硬體開發商」撰寫的,例如顯卡驅動出現錯誤可能是「硬體開發商」在撰寫「驅動程式」時出了問題,可別先怪「作業系統開發商」啊!
  • 同一個「硬體」但不同「作業系統」的「驅動程式」是無法相容於其他「作業系統」的。