操作系統學習筆記 對稱多處理(SMP)


  SMP:一種通過復用處理器提高程序執行並行性的方式。

  根據SMP,計算機系統可以分為以下四類:

    單指令單數據流(SISD):一個單處理器執行一個單指令流,對保存在一個存儲器中的數據進程進行操作。

    單指令多數據流(SIMD):一個機器指令控制多個處理部件步伐一致的同時執行。每個處理部件都有一個相關的數據處理空間,因此,每條指令由不同的處理器在不同   的數據集合上執行。

    多指令單數據流(MISD):一系列數據被傳送到一組處理器上,每個處理器執行不同的指令序列。

    多指令多數據流(MIMD):一組處理器同時在不同的數據集上執行不同的指令序列。

  在MIMD結構中,處理器是通用的,它們必須能夠處理執行相應的數據轉換所需的所有指令。

  MIMD可以根據處理器的通信進一步細化。如果每個處理器都有一個專用的存儲器,則每個處理部件都是一個獨立的計算機。計算機間的通信或者借助於固定的路徑,或者借助於某些網絡設施,這類系統稱為集群系統。如果處理器共享一個公用的存儲器,每個處理器都訪問保存在共享存儲器中的程序和數據,處理器之間通過這個存儲器相互通信,則這類系統稱為共享存儲器多處理機系統。

  共享存儲器多處理機系統的一個常用分類標准是基於"如何把進程分配給處理器"。最基本的兩種手段是主/從結構對稱結構

  在主/從結構中,操作系統的內核總是運行在某個特定的處理器上,其他處理器用於執行用戶程序和操作系統的使用程序。主處理器負責調度進程或線程,如果一個處於運行的進程或線程需要使用系統的服務(如一次I/O調用),則它必須給主處理器發送請求,並等待服務的處理。這種方式非常簡單,一個處理器控制了所有存儲器和I/O資源,因此可以簡化沖突的解決方案。但是這種方式也有明顯的缺點:

  1. 主處理器的失敗將導致整個系統的失敗;

  2. 由於主處理器必須負責所有的進程調度和管理,因此可能成為性能瓶頸;

  在對稱多處理系統中,內核可以在任何處理器上執行,並且每個處理器可以從可用的進程或線程池中進行各自的調度工作。內核也可以由多進程或多線程構成,允許部分內核並行執行。SMP方法增加了操作系統的復雜性,它必須確保兩個處理器不會選擇同一個進程,並且要確保隊列不會丟失,因此需要解決同步的問題。

  

 

SMP系統的組織結構

  SMP系統中有多個處理器,每一個都含有它自己的控制單元,算術邏輯單元和寄存器;每個處理器都可以通過某種互聯機制訪問一個共享的主存和I/O設備,通常是系統總線。處理器之間還可以通過存儲器中的共享地址空間中的消息和狀態信息相互通信。存儲器通常被組織為可以允許同時有多個對存儲器不同獨立部分的訪問。現代計算機中,處理器通常有一級專用的高速緩存,由於每個高速緩存含有主存中的一部分映像,如果某個處理器修改了其中的一個字,那么其他高速緩存中的這個字將變得無效,這就帶來了高速緩存的一致性問題,這個問題的解決通常是通過硬件的方式。

  

 

多處理器操作系統的設計

  並發進程或線程:為了允許多個處理器同時執行相同的內核代碼,內核例程必須是可重入的。多處理器執行內核的相同部分和不同部分時,必須正確的管理內核表和管理結構,以避免死鎖或非法操作;

  調度:調度可以由任何處理器執行,因此必須避免沖突。如果使用內核級多線程,則可能出現同一時刻,多個處理器同時從同一個進程中調度多個線程的情況;

  同步:因此存在多個進程都可能訪問共享地址空間和共享I/O資源的情況,因此需要提供同步機制。同步是指實施互斥和事件排序的機制。鎖是一個通用的同步機制;

  存儲器管理:多處理器系統為了提高性能,盡可能利用硬件的並行性,如多端口存儲器,還必須協調不同處理器上的分頁機制,以確保多個處理器共享頁或段時頁面的一致性問題,以及頁替換策略;

  可靠性和容錯:當一個處理器處理失敗時,操作系統應該提供功能衰減能力,重新組織管理表;

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM