第1章 硬體基礎

一個作業系統必需緊密地和其支援--硬體系統結合在一起。作業系統需要一些只能由硬體
提供的一些服務。為了很好的理解Linux作業系統,讀者需要明白一些低階的硬體知識。
本章對當代PC系統的一些硬體作一個介紹。
1975年的1月,當“Popular Electronics”雜志在其封面上給出Altair 8080的照片後,一場革
命就開始了。
Altair 8080當時的價格是397美金。對於今天而言,其Intel 8080的處理器,256位元的內
存,沒有螢幕和鍵盤的配置是微不足道的。它的發明者Ed Roberts將其新的發明稱之為
“個人電腦”。
電腦愛好者看見了Altair得潛力並開始為它寫軟體和在其上為它配置硬體。對這些先驅
者來說,這是一種擺脫呆版的基於批次處理的大型主機的自由。一些退學的在校生通過這些
個人電腦一夜之間獲得了巨大的財富。市場上出現了大量的硬體設備。軟體hackers們
非常高興地為這些新機器編寫軟體。有趣的是,是IBM公司在1981年制造了當代PC--IBM
PC並在1982年交給用戶使用。當時IBM PC的配置是Intel 8088處理器, 64K記憶體(可擴展到
256K),兩個軟碟和一個80字元,25行的CGA顯示卡。1983年,IBM推出了IBM
PC-XT,含有一個10M的硬碟。不久之後,許多公司,如compaq,推出了IBM PC的相容機。
PC的體系結構變成了一個工業標準。這個工業標準使得大量的硬體公司在一個基礎上進
行競爭。從而使的PC價格變得越來越便宜。早期PC的許多結構特徵被現代PC所繼承。例
如,即使先進的Intel Pentium Pro系統在開始時也運行在Intel 8086的位址模式下。當Linus
Torvalds 開始寫Linux時,他選擇了當時最多的,價格也較合理的Intel 80386 PC。
圖1.1 一個典型的PC主機板
從外面看一個PC,最明顯的部件是一個系統主機,鍵盤,滑鼠和 一個顯示器。大多數系統還
有CD ROM。如果你想要保護資料,還可以有一個磁帶機用來做資料備份。這些設備通稱為週邊。
雖然CPU是系統的主要控制部件,它不是系統中唯一具有智能的。所有的週邊控制器,例如,IDE控
制器,都有一定的智能成份。在一個PC的內部(如圖1.1所示),讀者可以看見一個含有CPU的主機板,
記憶體和一些ISA或PCI週邊控制器插槽。有些控制器,如IDE磁碟控制器,有可能被直接作在系統板上。
1.1 CPU
CPU,或微處理器,是任何一個電腦系統的心臟。CPU通過讀取並執行記憶體中的指令來進行計算,執
行邏輯運算和管理數量流。
(以下略去關於CPU的介紹,有興趣的讀者請參考有關書籍)
1.2 記憶體
所有的系統都有一個記憶體的層次結構。每一層的速度和大小不一樣。最快的記憶體是緩衝(cache)存
儲器,用來暫時存放主記憶體儲器的內容。這種記憶體非常快但價格很貴,因此大多數處理器在晶片中只含
有較少的cache記憶體。更多的則在系統板上。有些處理器在cache中混合存放資料和指令﹔有些則分開
存放。一個cache為指令﹔其他一個 cache為資料。Alpha處理器中含有兩個內部存儲cache﹔D-cache為
存放資料﹔I-cache為存放指令。外部的cache(B-cache)混合存放資料。最後,存儲體系結構中的是主記憶體
儲器。相對於外部cache,主記憶體比較慢。如果與CPU內部的cache比較,主記憶體的速度就像爬一樣。
緩衝與主記憶體之間必須保持一致性(coherent)。換句話說,如果主記憶體中的一個字在cache中的一個或多個地
方,系統必須保証cache中的內容與主記憶體中的一致。cache一致性的工作一部份是有硬體完成的,一部份是
有作業系統完成的。這一點對於大多數系統都是一樣的。系統中的軟硬體必須互相合作完成功能。
1.3 匯流排
系統板上的部件通過匯流排相連。系統匯流排份外三個邏輯功能部份:位址匯流排,資料匯流排和控制匯流排。位址
匯流排指定資料傳送的位址。資料匯流排負責運送要傳送的資料. 資料匯流排是雙向的。允許資料讀進CPU和從
CPU寫出。控制匯流排包含一些信號線用來控制時序和系統中的其他控制信號。
1.4 控制器和週邊
週邊是真實的設備,例如顯示卡或磁碟。週邊都由系統主機板上的控制器所控制。IDE磁碟由IDE控制器
晶片控制﹔SCSI磁碟被SCSI磁碟控制器所控制。控制器之間,控制器與CPU通過匯流排相連。大多數系
統通過PCI和ISA匯流排將系統的部件相連。控制器與CPU一樣是一種處理器,可以看作是CPU的智能助手。
CPU是系統的控制中心。
所有的控制器都不相同。但通常它們都有一些用來控制作用的暫存器。在CPU之上運行的軟體必須能
夠讀和寫這些控制暫存器。一個暫存器可能包含一個用來描述錯誤的狀態﹔另一個暫存器可能被用來
作為控制,例如改變控制器的模式。匯流排上的每個控制器都可以分別地被CPU所存取。從而設備驅動
程式軟體可以寫上述暫存器以控制這些控制器。
1.5 位址空間
系統匯流排將CPU與主記憶體相連,這與將CPU與系統硬體週邊相連的匯流排是分開的。總的來說,硬體週邊
所占據的存儲空間叫做I/O空間。CPU可以既可以存取系統存儲空間,也可以存取I/O空間。然而
控制器只能在CPU的幫助下間接地存取系統主記憶體。從設備的觀點看,例如軟碟控制器,它只能看見
其控制暫存器所在的ISA空間的位址。一般而言,CPU使用不同的指令系統來存取系統記憶體和
I/O空間。例如,可能存在一個指令“從I/O位址0x3f0讀一個位元到暫存器x”。CPU就是這樣通過
讀和寫來控制系統的硬體週邊的。在I/O空間中,一些常用的硬體週邊(IDE控制器,序列埠,
軟碟磁碟機等)的暫存器位址已經被固定下來。例如0x3f0正好是串口一(com1)的一個控制暫存器。
有時候,控制器需要在系統主記憶體之間傳送大量的資料。例如將資料寫入磁碟。這種情況下,直接
儲存存取(DMA)控制器被用來使得硬體週邊直接存取系統記憶體。但是這個過程是在CPU的嚴格控制和
監督之下。
1.6 定時器
所有的作業系統都需要知道時間。所以PC中含有一個特殊的設備叫做實時時鐘(Real Time Clock)。
RTC提供兩種功能:每天的時間和準確的時間脈衝。RTC有其自己的電池。因此即使PC沒開電源,
RTC也在運行。這就是為什麼你的PC的時間一直在更新的原因。RTC提供的時間脈衝使得作業系統可以
準確的排程必須的工作。