執行緒級併發

2021-07-03 15:46:14 字數 843 閱讀 9750

有了程序的抽象,可以設計出同時執行多個程式的系統,這也就導致了併發。

從出現分時(time-sharing)以來,計算機系統就有了對併發執行的支援。這種併發執行只是模擬出來的,是通過使一台計算機在它正在執行的程序間快速切換的方式實現的。這樣即使處理器必須在多個任務間切換,大多數也是由乙個處理器完成的。這個叫做單處理器系統。

隨著近來多核處理器和超執行緒(hyperthreading)的出現,導致了多處理器系統的存在。

使用執行緒,可以在乙個程序中執行多個控制流。

多核處理器是將多個cpu(」核「)整合到乙個積體電路晶元上。下面的圖是intel core i7處理器的組織結構,其中微處理器晶元有4個cpu核,每個核都有自己的l1和l2的快取記憶體,但是它們共享乙個更高層次的快取記憶體,以及到主存的介面。

超執行緒,有時候稱為同時多執行緒(simultaneous multi-threading),是一項允許乙個cpu執行多個控制流的技術。它涉及到cpu某些硬體有多個備份,比如程式計數器和暫存器檔案;而其他的硬體部分只有乙份,比如執行浮點運算的單元。常規的處理器需要大約20000個時鐘週期做不同執行緒間的轉換,而超執行緒的處理器可以再單個週期的基礎上決定要執行哪乙個執行緒(我個人的理解是因為有些硬體裝置不止乙份,所以不要進行儲存上下文和恢復上下文的操作,只是在乙個未使用的硬體裝置上來執行乙個新的執行緒)。這樣使得cpu可以更好地利用它的處理資源。例如,假設乙個執行緒必須等到某些資料被裝載到快取記憶體張,那麼cpu就可以繼續去執行另外乙個執行緒。舉例來說,intel core i7處理器可以讓乙個核執行兩個執行緒,所以乙個4核的系統實際上可以並行的執行8個執行緒。

使用者級執行緒和核心級執行緒

根據在使用者空間還是在核心實現多執行緒機制,執行緒又被分為使用者級執行緒 user level thread 和核心級執行緒 kernel level thread 有關執行緒的所有管理工作都有在使用者級實現的執行緒庫來支援。使用者級執行緒庫是用於使用者級執行緒管理的例程包,支援執行緒的建立 終止,...

使用者級執行緒和核心級執行緒

執行緒有3種實現模型 使用者級或應用程式級執行緒 核心級執行緒 使用者級和核心級混合執行緒 圖6 1顯示了3種執行緒實現模型。圖6 1 a 顯示了使用者級執行緒,圖6 1 b 顯示了核心級執行緒,圖6 1 c 則顯示了使用者執行緒和核心執行緒的混合。這些實現之間的較大的區別之一就是它們的模式以及要指...

使用者級執行緒和核心級執行緒

6.1.1 使用者級執行緒和核心級執行緒 執行緒有3種實現模型 使用者級或應用程式級執行緒 核心級執行緒 使用者級和核心級混合執行緒 圖6 1顯示了3種執行緒實現模型。圖6 1 a 顯示了使用者級執行緒,圖6 1 b 顯示了核心級執行緒,圖6 1 c 則顯示了使用者執行緒和核心執行緒的混合。這些實現...