OS- -计算机硬件简介
OS- -計算機硬件簡介
文章目錄
- OS- -計算機硬件簡介
 - 計算機硬件簡介
 - 計算機硬件簡介
 - CPU
 - 多線程和多核芯片
 - 內存
 - 寄存器
 - 高速緩存
 - 主存
 - 磁盤
 - I/O設備
 - 總線
 - 計算機啟動過程
 
計算機硬件簡介
現代計算機系統由一個或多個處理器、主存、打印機、鍵盤、鼠標、顯示器、網絡接口以及各種輸入/輸 出設備構成。
 
 然而,程序員不會直接和這些硬件打交道,而且每位程序員不可能會掌握所有計算機系統的細節,這樣 我們就不用再編寫代碼了
所以 在硬件的基礎之上,計算機安裝了一層軟件,這層軟件能夠通過響應用 戶輸入的指令達到控制硬件的效果,從而滿足用戶需求,這種軟件稱之為操作系統;它的任務就是為用戶程序提供一個更好、更簡單、更清晰的計算機模型。
我們一般常見的操作系統主要有Windowss Linux、FreeBSD或OS X ,這種帶有圖形界面的操作系 統被稱為圖形用戶界面(Graphical User Interface, GUI),而基于文本、命令行的通常稱為Shell
下面是我們所要探討的操作系統的部件
 
 這是一個操作系統的簡化圖:
- 最下面的是硬件,硬件包括芯片、電路板、磁盤、鍵盤、顯示器等我們上 面提到的設備,在硬件之上是軟件。
 - 大部分計算機有兩種運行模式:內核態 和 用戶態
 - 軟件中最基 礎的部分是操作系統,它運行在內核態中,內核態也稱為管態和核心態,它們都是操作系統 的運行狀態,只不過是不同的叫法而已。操作系統具有硬件的訪問權,可以執行機器能夠運行的任何指 令。
 - 軟件的其余部分運行在 用戶態 下。
 - 用戶接口程序(shell或者GUI)處于用戶態中,并且它們位于用戶態的最低層,允許用戶運行其他程 序,例如Web瀏覽器、電子郵件閱讀器、音樂播放器等。
 - 而且,越靠近用戶態的應用程序越容易編 寫,如果你不喜歡某個電子郵件閱讀器你可以重新寫一個或者換一個,但你不能自行寫一個操作系統或 者是中斷處理程序。這個程序由硬件保護,防止外部對其進行修改。
 
計算機硬件簡介
操作系統與運行操作系統的內核硬件關系密切。操作系統擴展了計算機指令集并管理計算機的資源。
因 此,操作系統因此必須足夠了解硬件的運行,這里我們先簡要介紹一下現代計算機中的計算機硬件。
 
 從概念上來看,一臺簡單的個人電腦可以被抽象為上面這種相似的模型,CPU.內存、I/O設備都和總 線串聯起來并通過總線與其他設備進行通信;現代操作系統有著更為復雜的結構,會設計很多條總線
CPU
- CPU是計算機的大腦,它主要和內存進行交互,從內存中提取指令并執行它。一個CPU的執行周期是從內存中提取第一條指令、解碼并決定它的類型和操作數,執行,然后再提取、解碼執行后續的指令。 重復該循環直到程序運行完畢。
 - 每個CPU都有一組可以執行的特定指令集。因此,x86的CPU不能執行ARM的程序并且ARM的 CPU也不能執行x86的程序。
 - 由于訪問內存獲取執行或數據要比執行指令花費的時間長,因此所有的 CPU內部都會包含一些寄存器來保存關鍵變量和臨時結果。
 - 因此,在指令集中通常會有一些指令用于 把關鍵字從內存中加載到寄存器中,以及把關鍵字從寄存器存入到內存中。
 - 還有一些其他的指令會把來 自寄存器和內存的操作數進行組合,例如add操作就會把兩個操作數相加并把結果保存到內存中。
 - 除了用于保存變量和臨時結果的通用寄存器外,大多數計算機還具有幾個特殊的寄存器,這些寄存器對 于程序員是可見的。
 - 其中之一就是程序計數器(program counter),程序計數器會指示下一條需要從 內存提取指令的地址。提取指令后,程序計數器將更新為下一條需要提取的地址。
 - 另一個寄存器是 堆棧指針(stack pointer),它指向內存中當前棧的頂端。堆棧指針會包含輸入過程 中的有關參數、局部變量以及沒有保存在寄存器中的臨時變量。
 - 還有一個寄存器是PSW(Program Status Word)程序狀態字寄存器,這個寄存器是由操作系統維護 的8個字節(64位)long類型的數據集合。它會跟蹤當前系統的狀態。除非發生系統結束,否則我們可以 忽略PSWO用戶程序通常可以讀取整個PSW,但通常只能寫入其某些字段。PSW在系統調用和I/O 中起著重要作用。
 - 操作系統必須了解所有的寄存器。在時間多路復用(time multiplexing)的CPU中,操作系統往往 停止運行一個程序轉而運行另外一個。每次當操作系統停止運行一個程序時,操作系統會保存所有寄存 器的值,以便于后續重新運行該程序。
 - 為了提升性能,CPU設計人員早就放棄了同時去讀取、解碼和執行一條簡單的指令。許多現代的CPU 都具有同時讀取多條指令的機制。
 -  例如,一個CPU可能會有單獨訪問、解碼和執行單元,所以,當 CPU執行第N條指令時,還可以對N + 1條指令解碼,還可以讀取N +2條指令。像這樣的組織形式 被稱為 流水線(pipeline)
 - 在上面這個設計中,存在多個執行單元,例如,一個用來進行整數運算、一個用來浮點數運算、一個用 來布爾運算。兩個或者更多的指令被一次性取出、解碼并放入緩沖區中,直至它們執行完畢。
 - 只要一個 執行單元空閑,就會去檢查緩沖區是否有可以執行的指令。如果有,就把指令從緩沖區中取出并執行。 這種設計的含義是應用程序通常是無序執行的
 - 在大多數情況下,硬件負責保證這種運算的結果與順序 執行指令時的結果相同。
 - 除了用在嵌入式系統中非常簡單的CPU之外,多數CPU都有兩種模式,即前面已經提到的內核態和 用戶態。
 - 通常情況下,PSW寄存器中的一個二進制位會控制當前狀態是內核態還是用戶態。當運行在 內核態時,CPU能夠執行任何指令集中的指令并且能夠使用硬件的功能。
 - 在臺式機和服務器上,操作 系統通常以內核模式運行,從而可以訪問完整的硬件。
 - 在大多數嵌入式系統中,一部分運行在內核態 下,剩下的一部分運行在用戶態下。
 - 用戶應用程序通常運行在用戶態下,在用戶態下,CPU只能執行指令集中的一部分并且只能訪問硬件 的一部分功能。
 - 一般情況下,在用戶態下,有關I/O和內存保護的所有指令是禁止執行的。當然,設置 PSW模式的二進制位為內核態也是禁止的。
 - 為了獲取操作系統的服務,用戶程序必須使用 系統調用(system call),系統調用會轉換為內核態并 且調用操作系統。
 - TRAP指令用于把用戶態切換為內核態并啟用操作系統。當有關工作完成之后,在 系統調用后面的指令會把控制權交給用戶程序。
 - 需要注意的是操作系統在進行系統調用時會存在陷阱。大部分的陷阱會導致硬件發出警告,比如說試圖 被零除或浮點下溢等。
 - 在所有的情況下,操作系統都能得到控制權并決定如何處理異常情況。有時, 由于出錯的原因,程序不得不停止。
 
多線程和多核芯片
- Intel Pentinum 4也就是奔騰處理器引入了被稱為多線程(multithreading)或 超線程 (hyperthreading, Intel公司的命名)的特性,x86處理器和其他一些CPU芯片就是這樣做的。
 - 包括SSPARC、Power5s Intel Xeon和Intel Core系列。近似地說,多線程允許CPU保持兩個不 同的線程狀態并且在納秒級(nanosecond)的時間完成切換。
 - 線程是一種輕量級的進程,例如,如果一個進程想要從內存中讀取指令(這通常會經歷幾個時鐘周期),多線程CPU則可以 切換至另一個線程。
 - 多線程不會提供真正的并行處理。在一個時刻只有一個進程在運行。
 - 對于操作系統來講,多線程是有意義的,因為每個線程對操作系統來說都像是一個單個的CPU。比如 一個有兩個CPU的操作系統,并且每個CPU運行兩個線程,那么這對于操作系統來說就可能是4個 CPU。
 - 除了多線程之外,現在許多CPU芯片上都具有四個、八個或更多完整的處理器或內核。多核芯片在其 上有效地承載了四個微型芯片,每個微型芯片都有自己的獨立CPU。
 
帶有共享L2緩存的4核芯片:
 
 帶有分離L2緩存的4核芯片:
 
- 如果要說在絕對核心數量方面,沒有什么能贏過現代GPU(Graphics Processing Unit) , GPU是 指由成千上萬個微核組成的處理器。它們擅長處理大量并行的簡單計算。
 
內存
計算機中第二個主要的組件就是內存。理想情況下,內存應該非常快速(比執行一條指令要快,從而不會 拖慢CPU執行效率),而且足夠大且便宜,但是目前的技術手段無法滿足三者的需求。
于是采用了不同 的處理方式,存儲器系統采用一種分層次的結構
 
- 頂層的存儲器速度最高,但是容量最小,成本非常高,層級結構越向下,其訪問效率越慢,容量越大, 但是造價也就越便宜。
 
寄存器
- 存儲器的頂層是CPU中的寄存器,它們用和CPU 一樣的材料制成,所以和CPU 一樣快。
 
程序必須 在軟件中自行管理這些寄存器(即決定如何使用它們)
高速緩存
- 位于寄存器下面的是高速緩存,它多數由硬件控制。主存被分割成 為64 字節,內存地址的0 - 63對應高速緩存行0 ,地址64 - 127對應高速緩存行的1,等等。
 - 使用最頻繁 的高速緩存行保存在位于CPU內部或非常靠近CPU的高速緩存中。當應用程序需要從內存中讀取關 鍵詞的時候,高速緩存的硬件會檢查所需要的高速緩存行是否在高速緩存中。
 - 如果在的話,那么這就 是高速緩存命中(cache hit)。高速緩存滿足了該請求,并且沒有通過總線將內存請求發送到主內 存。
 - 高速緩存命中通常需要花費兩個時鐘周期。緩存未命中需要從內存中提取,這會消耗大量的時間。
 - 高速緩存行會限制容量的大小因為它的造價非常昂貴。有一些機器會有兩個或者三個高速緩存級別,每 一級高速緩存比前一級慢且容量更大。
 - 緩存在計算機很多領域都扮演了非常重要的角色,不僅僅是RAM緩存行。
 
隨機存儲器(RAM):內存中最重要的一種,表示既可以從中讀取數據,也可以寫入數據。當機 器關閉時,內存中的信息會 丟失。
- 大量的可用資源被劃分為小的部分,這些可用資源的一部分會獲得比其他資源更頻繁的使用權,緩存經 常用來提升性能。操作系統無時無刻的不在使用緩存。
 - 例如,大多數操作系統在主機內存中保留(部 分)頻繁使用的文件,以避免重復從磁盤重復獲取。舉個例子,類似于/home/ast/projects/minix3/src/kernel/clock. c這樣的場路徑名轉換成的文件所在磁盤地址 的結果也可以保存緩存中,以避免重復尋址。
 - 另外,當一個Web頁面(URL)的地址轉換為網絡地址(IP 地址)后,這個轉換結果也可以緩存起來供將來使用。
 
在任何緩存系統中,都會有下面這幾個噬需解決的問題
- ?何時把新的內容放進緩存
 - ?把新的內容應該放在緩存的哪一行
 - ?在需要空閑空間時,應該把哪塊內容從緩存中移除
 - ?應該把移除的內容放在某個較大存儲器的何處
 
- 并不是每個問題都與每種緩存情況有關。對于CPU緩存中的主存緩存行,當有緩存未命中時,就會調 入新的內容。通常通過所引用內存地址的高位計算應該使用的緩存行。
 - 緩存是解決問題的一種好的方式,所以現代CPU設計了兩種緩存。第一級緩存或者說是LI cache 總是位于CPU內部,用來將已解碼的指令調入CPU的執行引擎。對于那些頻繁使用的關鍵字,多數 芯片有第二個L1 cache。典型的L1 cache的大小為16 KB
 - 另外往往還設有二級緩存,也就是L2 cache ,用來存放最近使用過的關鍵字,一般是兆字節為單位。L1 cache和L2 cache最大的不 同在于是否存在延遲。訪問L1 cache沒有任何的延遲,然而訪問L2 cache會有1 - 2個時鐘周期的 延后。
 
- 什么是時鐘周期?計算機處理器或CPU的速度由時鐘周期來確定,該時鐘周期是振蕩器兩個脈沖之間的時間量。
 - 一般而言,每秒脈沖數越高,計算機處理器處理信息的速度就越快。時鐘速度以
Hz為單位測量,通常為兆赫(MHz)或千兆赫(GHz)。 - 例如,一個4 GHz處理器每秒執行 4,000,000,000個時鐘周期。
 - 計算機處理器可以在每個時鐘周期執行一條或多條指令,這具體取決于處理器的類型。
 - 早期的計算機處理器和較慢的CPU在每個時鐘周期只能執行一條指令,而現代處理器在每個時鐘周期可以 執行多條指令。
 
主存
- 在上面的層次結構中再下一層是主存,這是內存系統的主力軍,主存通常叫做RAM(Random Access Memory)
 - 由于1950年代和1960年代的計算機使用微小的可磁化鐵氧體磁芯作為主存儲器,因此舊時有時將其稱為核心存儲器。所有不能再高速緩存中得到滿足的內存訪問請求都會轉往主存中。
 - 除了主存之外,許多計算機還具有少量的非易失性隨機存取存儲器。它們與RAM不同,在電源斷電 后,非易失性隨機訪問存儲器并不會丟失內容。
 - R0M(Read Only Memory)中的內容一旦存儲后就不 會再被修改。它速度非常快而且便宜。(如果有人問你,有沒有什么又快又便宜的內存設備,那就是ROM 了)
 - 在計算機中,用于啟動計算機的引導加載模塊(也就是bootstrap )就存放在ROM中。另外,一 些I/O卡也采用ROM處理底層設備控制。
 - EEPROM(Electrically Erasable PROM)和閃存(flash memory)也是非易失性的,但是與 ROM相反,它們可以擦除和重寫。不過重寫它們需要比寫入RAM更多的時間,所以它們的使用方式 與ROM相同,但是與ROM不同的是他們可以通過重寫字段來糾正程序中出現的錯誤。
 - 閃存也通常用來作為便攜性的存儲媒介。閃存是數碼相機中的膠卷,是便攜式音樂播放器的磁盤。閃存 的速度介于RAM和磁盤之間。另外,與磁盤存儲器不同的是,如果閃存擦除的次數太多,會出現磨 損。
 - 還有一類是CMOS,它是易失性的。許多計算機都會使用CMOS存儲器保持當前時間和日期。
 
磁盤
- 下一個層次是磁盤(硬盤),磁盤同RAM相比,每個二進制位的成本低了兩個數量級,而且經常也有 兩個數量級大的容量。
 - 磁盤唯一的問題是隨機訪問數據時間大約慢了三個數量級。磁盤訪問慢的原因是 因為磁盤的構造不同
 
- 磁盤是一種機械裝置,在一個磁盤中有一個或多個金屬盤片,它們以5400rpm、7200rpm. 10800rpm 或更高的速度旋轉。
 - 從邊緣開始有一個機械臂懸橫在盤面上,這類似于老式播放塑料唱片33轉唱機上 的拾音臂。
 -  信息會寫在磁盤一系列的同心圓上。在任意一個給定臂的位置,每個磁頭可以讀取一段環形 區域,稱為磁道(track)。把一個給定臂的位置上的所有磁道合并起來,組成了一個柱面(cylinder)
 - 每個磁道劃分若干扇區,扇區的值是512字節。在現代磁盤中,較外部的柱面比較內部的柱面有更多的 扇區。
 - 機械臂從一個柱面移動到相鄰的柱面大約需要1ms。而隨機移到一個柱面的典型時間為5ms至 10ms,具體情況以驅動器為準。
 - 一旦磁臂到達正確的磁道上,驅動器必須等待所需的扇區旋轉到磁頭 之下,就開始讀寫,低端硬盤的速率是50MB/S ,而高速磁盤的速率是160MB/S
 
需要注意,固態硬盤(Solid State Disk, SSD)不是磁盤,固態硬盤并沒有可以移動的部分,外形也不像唱片,并且數據是存儲在存儲器(閃存)中,與磁盤唯一的相似之處就是它也存儲了 大量即使在電源關閉也不會丟失的數據。
- 許多計算機支持一種著名的虛擬內存機制,這種機制使得期望運行的存儲空間大于實際的物理存儲空 間。
 - 其方法是將程序放在磁盤上,而將主存作為一部分緩存,用來保存最頻繁使用的部分程序,這種機 制需要快速映像內存地址,用來把程序生成的地址轉換為有關字節在RAM中的物理地址。
 - 這種映像由 CPU中的一個稱為 存儲器管理單元(Memory Management Unit, MMU)的部件來完成。
 
- 緩存和MMU的出現是對系統的性能有很重要的影響,在多道程序系統中,從一個程序切換到另一個程 序的機制稱為上下文切換(context switch),對來自緩存中的資源進行修改并把其寫回磁盤是很有 必要的。
 
I/O設備
- CPU和存儲器不是操作系統需要管理的全部,I/O設備也與操作系統關系密切
 - I/O設備一般包括兩個部分:設備控制器和設備本身。控制器本身是一塊芯片或者一組芯片,它能 夠控制物理設備。它能夠接收操作系統的指令,例如,從設備中讀取數據并完成數據的處理。
 - 在許多情況下,實際控制設備的過程是非常復雜而且存在諸多細節。因此控制器的工作就是為操作系統 提供一個更簡單(但仍然非常復雜)的接口。也就是屏蔽物理細節。
 - 任何復雜的東西都可以加一層代理 來解決,這是計算機或者人類社會很普世的一個解決方案
 - I/O設備另一部分是設備本身,設備本身有一個相對簡單的接口,這是因為接口既不能做很多工作,而 且也已經被標準化了。
 - 例如,標準化后任何一個SATA磁盤控制器就可以適配任意一種SATA磁盤,所 以標準化是必要的。ATA代表 高級技術附件(AT Attachment),而SATA表示串行高級技術附件 (Serial ATA)。
 
AT是啥?它是舊M公司的第二代個人計算機的高級技術成果,使用1984年推出的6MHz 80286處理器,這個處理器是當時最強大的。
- 現在SATA是很多計算機的標準硬盤接口。由于實際的設備接口隱藏在控制器中,所以操作系統看到的是對控制器的接口,這個接口和設備接口有很大區別。
 - 每種類型的設備控制器都是不同的,所以需要不同的軟件進行控制。專門與控制器進行信息交流,發出 命令處理指令接收響應的軟件,稱為 設備驅動程序(device driver)。
 - 每個控制器廠家都應該針對 不同的操作系統提供不同的設備驅動程序。
 - 為了使設備驅動程序能夠工作,必須把它安裝在操作系統中,這樣能夠使它在內核態中運行。要將設備 驅動程序裝入操作系統,一般有三個途徑
 - ?第一個途徑是將內核與設備啟動程序重新連接,然后重啟系統。這是UNIX系統采用的工作方式
 - ?第二個途徑是在一個操作系統文件中設置一個入口,通知該文件需要一個設備驅動程序,然后重新 啟動系統。在重新系統時,操作系統回尋找有關的設備啟動程序并把它裝載,這是Windows采 用的工作方式
 - ?第三個途徑是操作系統能夠在運行時接收新的設備驅動程序并立刻安裝,無需重啟操作系統,這種 方式采用的少,但是正變得普及起來。熱插拔設備,比如USB和IEEE 1394都需要動態可裝載的 設備驅動程序。
 - 每個設備控制器都有少量用于通信的寄存器,例如,一個最小的磁盤控制器也會有用于指定磁盤地址、內存地址、扇區計數的寄存器。
 - 要激活控制器,設備驅動程序回從操作系統獲取一條指令,然后翻譯成對應的值,并寫入設備寄存器中,所有設備寄存器的結合構成了 I/O端口空間。
 - 在一些計算機中,設備寄存器會被映射到操作系統的可用地址空間,使他們能夠向內存一樣完成讀寫操 作。
 - 在這種計算機中,不需要專門的I/O指令,用戶程序可以被硬件阻擋在外,防止其接觸這些存儲器 地址(例如,采用基址寄存器和變址寄存器)。
 - 在另一些計算機中,設備寄存器被放入一個專門的I/O 端口空間,每個寄存器都有一個端口地址。在這些計算機中,特殊的IN和OUT指令會在內核態下 啟用,它能夠允許設備驅動程序和寄存器進行讀寫。
 - 前面第一種方式會限制特殊的I/O指令但是允許一 些地址空間;后者不需要地址空間但是需要特殊的指令,這兩種應用都很廣泛。
 - 實現輸入和輸出的方式有三種。
 - ?😊😊😊😊在最簡單的方式中,用戶程序會發起系統調用,內核會將其轉換為相應驅動程序的程序調用,然后 設備驅動程序啟動I/O并循環檢查該設備,看該設備是否完成了工作(一般會有一些二進制位用來 指示設備仍在忙碌中)。當I/O調用完成后,設備驅動程序把數據送到指定的地方并返回。然后操作系統會將控制權交給調用者。這種方式稱為 忙等待(busy waiting),這種方式的缺點是要一 直占據CPU, CPU會一直輪詢I/O設備直到I/O操作完成。
 - ?😊😊😊😊第二種方式是 設備驅動程序啟動設備并且讓該設備在操作完成時發生中斷。設備驅動程序在這個時 刻返回。操作系統接著在需要時阻塞調用者并安排其他工作進行。當設備驅動程序檢測到該設備操 作完成時,它發出一個 中斷 通知操作完成。
 
在操作系統中,中斷是非常重要的,所以這需要更加細致的討論一下
 
 如上圖所示,這是一個三步的I/O過程:
 👏第一步,設備驅動程序會通過寫入設備寄存器告訴控制器應該 做什么。
 👏然后,控制器啟動設備,當控制器完成讀取或寫入被告知需要傳輸的字節后,它會在步驟2中 使用某些總線向中斷控制器發送信號。
 👏如果中斷控制器準備好了接收中斷信號(如果正忙于一個優先級 較高的中斷,則可能不會接收),那么它就會在CPU的一個引腳上面聲明。這就是步驟3
 
 在第三步中,中斷控制器把該設備的編號放在總線上,這樣CPU可以讀取總線,并且知道哪個設備完 成了操作(可能同時有多個設備同時運行)。
一旦CPU決定去實施中斷后,程序計數器和PSW就會被壓入到當前堆棧中并且CPU會切換到內核 態。
設備編號可以作為內存的一個引用,用來尋找該設備中斷處理程序的地址。這部分內存稱作中斷向 量(interrupt vector)
一旦中斷處理程序(中斷設備的設備驅動程序的一部分)開始后,它會移 除棧中的程序計數器和PSW寄存器,并把它們進行保存,然后查詢設備的狀態。
在中斷處理程序全部 完成后,它會返回到先前用戶程序尚未執行的第一條指令,這個過程如下
 
- ?😊😊😊😊實現I/O的第三種方式是使用特殊的硬件:直接存儲器訪問(Direct Memory Access, DMA)芯 片。它可以控制內存和某些控制器之間的位流,而無需CPU的干預。
 - CPU會對DMA芯片進行設 置,說明需要傳送的字節數,有關的設備和內存地址以及操作方向。當DMA芯片完成后,會造成 中斷。
 - 當另一個中斷處理程序正在運行時,中斷可能(并且經常)發生在不合宜的時間。因此,CPU可以禁 用中斷,并且可以在之后重啟中斷。
 - 在CPU關閉中斷后,任何已經發出中斷的設備,可以繼續保持其 中斷信號處理,但是CPU不會中斷,直至中斷再次啟用為止。
 - 如果在關閉中斷時,已經有多個設備發 出了中斷信號,中斷控制器將決定優先處理哪個中斷,通常這取決于事先賦予每個設備的優先級,最高 優先級的設備優先贏得中斷權,其他設備則必須等待。
 
總線
上面的結構在小型計算機已經使用了多年,并用在早期的舊M PC中。
然 而,隨著處理器核內存變得越來越快,單個總線處理所有請求的能力也達到了上線,其中也包括舊M PC總線。
必須放棄使用這種模式。其結果導致了其他總線的出現,它們處理I/O設備以及CPU到存 儲器的速度都更快。這種演變的結果導致了下面這種結構的出現。
- 上圖中的X86系統包含很多總線,高速緩存、內存、PCIe、PCI、USB、SATA和DMI,每條總線都 有不同的傳輸速率和功能。
 - 操作系統必須了解所有的總線配置和管理。其中最主要的總線是PCIe(Peripheral Component Interconnect Express)總線。
 - Intel發明的PCIe總線也是作為之前古老的PCI總線的繼承者,而古老的PCI總線也是為了取代古董 級別的ISA(Industry Standard Architecture)總線而設立的。
 - 數十Gb/s的傳輸能力使得 PCIe比它的前身快很多,而且它們本質上也十分不同。直到發明PCIe的2004年,大多數總線都是并 行且共享的。
 - 共享總線架構(shared bus architeture)表示多個設備使用一些相同的電線傳輸數 據。因此,當多個設備同時發送數據時,此時你需要一個決策者來決定誰能夠使用總線。
 - 而PCIe則不 一樣,它使用專門的端到端鏈路。傳統PCI中使用的并行總線架構(parallel bus architecture) 表示通過多條電線發送相同的數據字。
 - 例如,在傳統的PCI總線上,一個32位數據通過32條并行的 電線發送。而PCIe則不同,它選用了串行總線架構(serial bus architecture),并通過單個連 接(稱為通道)發送消息中的所有比特數據,就像網絡數據包一樣。
 - 這樣做會簡化很多,因為不再確保 所有32位數據在同一時刻準確到達相同的目的地。通過將多個數據通路并行起來,并行性仍可以有效 利用。例如,可以使用32條數據通道并行傳輸32條消息。
 - 在上圖結構中,CPU通過DDR3總線與內存對話,通過PCIe總線與外圍圖形設備(GPU)對話,通 過DMI(Direct Media Interface)總線經集成中心與所有其他設備對話。
 - 而集成控制中心通過串行 總線與USB設備對話,通過SATA總線與硬盤和DVD驅動器對話,通過PCIe傳輸以太網絡幀。
 - 不僅如此,每一個核USB(Univversal Serial Bus)是用來將所有慢速I/O設備(比如鍵盤和鼠標)與計算機相連的設 備。
 - USB 1.0可以處理總計12 Mb/s的負載,而USB 2.0將總線速度提高到480Mb/s ,而USB 3.0 能達到不小于5Gb/s的速率。所有的USB設備都可以直接連接到計算機并能夠立刻開始工作,而不像 之前那樣要求重啟計算機。
 - SCSI(Small Computer System Interface)總線是一種高速總線,用在高速硬盤,掃描儀和其他 需要較大帶寬的設備上。現在,它們主要用在服務器和工作站中,速度可以達到640MB/S o
 
計算機啟動過程
那么有了上面一些硬件再加上操作系統的支持,我們的計算機就可以開始工作了,那么計算機的啟動過 程是怎樣的呢?
下面只是一個簡要版的啟動過程:
- 在每臺計算機上有一塊雙親板,也就是母板,母板也就是主板,它是計算機最基本也就是最重要的部件 之一。
 - 主板一般為矩形電路板,上面安裝了組成計算機的主要電路系統,一般有BIOS芯片、I/O控制 芯片、鍵盤和面板控制開關接口、指示燈插接件、擴充插槽、主板及插卡的直流電源供電接插件等元 件。
 - 在母板上有一個稱為 基本輸入輸出系統(Basic Input Output System, BIOS)的程序。在BIOS內 有底層I/O軟件,包括讀鍵盤、寫屏幕、磁盤I/O以及其他過程。如今,它被保存在閃存中,它是非易 失性的,但是當BIOS中發現錯誤時,可以由操作系統進行更新。
 - 在計算機啟動(booted)時,BIOS開啟,它會首先檢查所安裝的RAM的數量,鍵盤和其他基礎設備 是否已安裝并且正常響應。
 - 接著,它開始掃描PCIe和PCI總線并找出連在上面的所有設備。即插即用 的設備也會被記錄下來。如果現有的設備和系統上一次啟動時的設備不同,則新的設備將被重新配置。
 - 藍后,BIOS通過嘗試存儲在CMOS存儲器中的設備清單嘗試啟動設備
 
- CMOS是 Complementary Metal Oxide Semiconductor (互補金屬氧化物半導體)的縮寫。
 - 它是指制造大規模集成電路芯片用的一種技術或用這種技術制造出來的芯片,是電腦主板上的一塊可讀寫的RAM芯片。
 - 因為可讀寫的特性,所以在電腦主板上用來保存BIOS設置完電腦硬件 參數后的數據,這個芯片僅僅是用來存放數據的。
 - 而對BIOS中各項參數的設定要通過專門的程序。BIOS設置程序一般都被廠商整合在芯片中,在開機時通過特定的按鍵就可進入BIOS設置程序,方便地對系統進行設置。
 - 因此BIOS設置有時 也被叫做CMOS設置。
 
- 用戶可以在系統啟動后進入一個BIOS配置程序,對設備清單進行修改。
 - 然后,判斷是否能夠從外部 CD-ROM和USB驅動程序啟動,如果啟動失敗的話(也就是沒有),系統將從硬盤啟動,boots設備中的第一個扇區被讀入內存并執行。
 - 該扇區包含一個程序,該程序通常在引導扇區末尾檢查分區表以確 定哪個分區處于活動狀態。
 - 然后從該分區讀入第二個啟動加載程序,該加載器從活動分區中讀取操作系 統并啟動它。
 - 然后操作系統會詢問BIOS獲取配置信息。對于每個設備來說,會檢查是否有設備驅動程序。如果沒 有,則會向用戶詢問是否需要插入CD-ROM驅動(由設備制造商提供)或者從Internet ±下載。
 - 一旦 有了設備驅動程序,操作系統會把它們加載到內核中,然后初始化表,創建所需的后臺進程,并啟動登 錄程序或GUI。
 
總結
以上是生活随笔為你收集整理的OS- -计算机硬件简介的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 计算机基础- -应用和硬件的关系
 - 下一篇: OS- -请求分页系统、请求分段系统和请