作業系統 執行緒

2021-10-06 18:10:15 字數 1144 閱讀 2976

執行緒是cpu使用的基本單元,它由執行緒id、程式計數器、暫存器集合和棧組成它與屬於同一程序的其他執行緒共享**段,資料段和其他作業系統資源,如開啟檔案和訊號。乙個傳統重量級的程序只有單個控制線程,如果程序有多個控制線程,那麼它能夠同時做多個任務。

多執行緒程式設計的優點:

響應度高: 如果對乙個互動程式採用多執行緒,那麼即使其部分阻塞或執行較冗長的操作,該程式仍能繼續執行,從而增加對使用者的響應程度。

經濟:程序建立所需要的記憶體和資源的分配比較昂貴。由於執行緒能共享他們所屬程序的資源,所以建立和切換執行緒會更為經濟。

多處理器體系結構的利用: 多執行緒的優點之一是能夠充分使用多處理器體系結構,以便每個程序能夠並行在不同的處理器上,不管有多少cpu ,單執行緒程序只能執行在乙個cpu上,在多cpu上使用多執行緒加強了併發功能。

有兩種方法來提供執行緒支援:使用者層的使用者執行緒或核心層的核心執行緒。使用者執行緒受核心支援,而無須核心管理,而核心執行緒由作業系統直接支援和管理。

多對一模型

多對一模型將許多使用者級執行緒對映到乙個核心執行緒,執行緒管理是由執行緒庫在使用者空間進行的,因而效率比較高,但是如果乙個執行緒執行了阻塞系統呼叫,那麼整個程序會阻塞,而且,因為在任一時刻只有乙個執行緒能訪問核心,多個執行緒不能並行執行在多處理器上。

一對一模型 (更好的提供高併發功能

一對一模型將每個使用者執行緒對映到乙個核心執行緒。該模型在乙個執行緒執行阻塞系統呼叫時,能允許另乙個執行緒繼續執行,所以它提供了比多一模型更好的併發功能; 它允許多個執行緒能並行的執行在多處理器系統上,這種模型的唯一缺點是建立乙個使用者執行緒就需要建立乙個相應的記憶體執行緒。由於建立核心執行緒的開銷會影響應用程式的效能,所以這種模型的絕大多數實現限制了系統所支援的執行緒數量。

多對多模型

多對多模型多路復用了許多使用者執行緒到同樣數量或更小的核心執行緒中,核心執行緒的數量可能與特定應用程式或特定機器有關(位於多處理器上的應用程式比單處理器上分配更多數量),雖然多對一模型允許開發人員建立,任意多的使用者執行緒,但是,但是因為核心執行緒只能一次排程乙個執行緒,所以並沒有增加併發性。

作業系統 執行緒

靜態鏈結庫是乙個或多個obj檔案的打包,所以有人乾脆把obj檔案生成lib檔案的過程稱為archive,即合併在一起。比如你鏈結乙個靜態庫,如果其中有錯,他會準確的找到是哪個obj有錯,即靜態lib只是殼子。當我們的應用工程在使用靜態庫鏈結時,靜態鏈結庫要參與編譯,在生成執行檔案之前的鏈結過程中,將...

作業系統 執行緒

多核cpu計算機,程序內部的各個執行緒可以占用不同的cpu。共享記憶體位址空間,執行緒通訊無需系統干預。共享程序的資源。每個執行緒都有執行緒id 執行緒控制塊 tcb 幾乎不擁有系統資源。作業系統中,執行緒又分為使用者級和核心級執行緒。使用者級執行緒 ult,user level thread 就是...

作業系統 執行緒

之前已經討論過程序了,現在討論執行緒。我在想如何用現實中的具體事物來比較程序和執行緒的關係。舉個我認為較恰當的例子。把程序比作乙個工廠中的車間,車間中有若干個生產線,但是每條生產線都需要不同的零件,原料和員工。零件,原料和員工,是所有生產線都可以共同使用的資源。這裡就把生產線當做執行緒吧。這樣,每條...