作業系統的體系結構(單處理器、多處理器和叢集)

2020-07-16 10:04:38
前面章節中,我們從作業系統的執行過程、儲存結構以及IO結構介紹了典型計算機系統的通用結構。計算機系統可能通過許多不同途徑來組成,這裡根據採用的通用處理器數量來進行粗略分類。

單處理器系統

直到最近,大多數系統仍採用單處理器。單處理器系統只有一個主 CPU,以便執行一個通用指令集,該指令集包括執行使用者進程的指令。幾乎所有單處理器系統都帶有其他專用處理器。它們或為特定裝置的處理器,如磁碟、鍵盤、圖形控制器;或為更通用的處理器,如在系統元件之間快速移動資料的 I/O 處理器。

所有這些專用處理器執行有限指令集,而並不執行使用者進程。在有的環境下,它們由作業系統來管理,此時作業系統將要做的任務資訊發給它們,並監控它們的狀態。

例如,磁碟控制器的微處理器接收來自主 CPU 的一系列請求,並執行自己的磁碟佇列和排程演算法。這種安排使得主 CPU 不必再執行磁碟排程。PC 的鍵盤有一個微處理器來將擊鍵轉換為程式碼,並行送給 CPU。

在其他的環境下,專用處理器作為低層元件整合到硬體。作業系統不能與這些處理器通訊,但是它們可以自主完成任務。專用處理器的使用十分常見,但是這並不能將一個單處理器系統變成多處理器系統。如果系統只有一個通用 CPU,那麼就為單處理器系統。

多處理器系統

近年來,多處理器系統multiprocessing system,也稱為並行系統(parallel system)多核系統(multicore system))開始主導計算領域。這類系統有兩個或多個緊密通訊的 CPU,它們共用計算機匯流排,有時還共用時鐘、記憶體和外設等。多處理器系統起初主要應用於伺服器,後來也應用於桌面和筆電系統。近來,多處理器也出現在移動裝置上,如智慧手機和平板電腦。

多處理器系統有三個主要優點:
  1. 增加吞吐量:通過增加處理器數量,以期能在更短時間內完成更多工作。採用 N 個處理器的加速比不是 N,而是小於 N。當多個 CPU 協同完成同一任務時,為了讓各部分能夠正確執行,會有一定的額外開銷。這些開銷,加上競爭共用資源,會降低因增加了 CPU 的期望增益。這類似於 N 位程式設計師一起緊密工作,而不能完成 N 倍於單個程式設計師的工作量。
  2. 規模經濟:多處理器系統的價格要低於相同功能的多個單處理器系統的價格,因為前者可以共用外設、大容量儲存和電源供給。如果多個程式需要操作同一資料集,那麼將這些資料放在同一磁碟並讓多處理器共用,將比採用多個具有本地磁碟的計算機和多個資料副本更為節省。
  3. 增加可靠性:如果將功能分布在多個處理器上,那麼單個處理器的失靈不會使得整個系統停止,而只會使它變慢。如果 10 個處理器中的 1 個出了故障,那麼剩下的 9 個會分擔起故障處理器的那部分工作。因此,整個系統只是比原來慢了 10%,而不是完全失敗。

對於許多應用,增加計算機系統的可靠性是極其重要的。根據剩餘有效硬體的級別按比例繼續提供服務的能力稱為適度退化(graceful degradation)。有的系統超過適度退化,稱為容錯(fault tolerant),因為它們能夠容忍單個部件錯誤,並且仍然繼續執行。

容錯需要一定的機制來對故障進行檢測、診斷和(如果可能)糾錯。HP NonStop 系統(以前的 Tandem)通過使用重複的硬體和軟體,來確保在有故障時也能繼續工作。該系統具有多對 CPU,它們鎖步工作。每對處理器都各自執行自己的指令,並比較結果。如果結果不一樣,那麼其中一個 CPU 出錯,此時兩個都停下。接著,停著的進程被轉到另一對 CPU,剛才出錯的指令重新開始執行。這種方法比較昂貴,因為它用到專用硬體和相當多的重複硬體。

現在所用的多處理器系統有兩種型別。有的系統採用非對稱處理(asymmetric multiprocessing),即每個處理器都有各自特定的任務。一個主處理器(boss processor)控制系統,其他處理器或者向主處理器要任務或做預先規定的任務。這種方案稱為主從關係。主處理器排程從處理器,並安排工作。

最為常用的多處理器系統採用對稱多處理(Symmetric Multiprocessing,SMP),每個處理器都參與完成作業系統的所有任務。SMP 表示所有處理器對等,處理器之間沒有主從關係。圖 1 顯示了一個典型的 SMP 結構。注意,每個處理器都有自己的暫存器集,也有私有或本地快取;不過,所有處理器都共用實體記憶體。

對稱多處理的體系結構
圖 1 對稱多處理的體系結構