作業系統 執行緒

2022-09-20 07:33:11 字數 913 閱讀 5656

使用者級執行緒和核心級執行緒有何區別?

多執行緒給我們帶來方便的同時同樣會給我們帶來一定的麻煩,這裡會提到幾個常見的常見(教科書裡提到的)的問題

exec()是用制定程式替換整個程序..這這個操作上線程和程序間的擦別並不大

非同步取消,乙個執行緒立即取消目標執行緒,這樣的情況可能出現在多執行緒搜尋上:其中某個執行緒找到了目標,那麼他將取消掉其他所有執行緒

延時取消:這使得目標執行緒不斷檢查他是否該終止

這樣也有問題,非同步取消的很"突然",如果資源已分配給要被取消的執行緒或者該執行緒正在更新其他執行緒共享的資料,那麼系統將很難**資源.

延時取消因為有了"心裡準備"他可以很從容的幹完"身後事"吃了斷頭飯在上路....

訊號將被訊號處理程式(預設的或使用者自定義的)

上文說到訊號要傳送到程序,如果目標程序黑是個單執行緒的程序就好說了,直接發給它,但如果目標程序有很多執行緒怎麼辦呢?這裡也有幾個策略

採用了相同的非同步通訊方式;

當檢測出有訊號或中斷請求時,都暫停正在執行的程式而轉去執行相應的處理程式;

都在處理完畢後返回到原來的斷點;

對訊號或中斷都可進行遮蔽。

區別:中斷有優先順序,而訊號沒有優先順序,所有的訊號都是平等的;

訊號處理程式是在使用者態下執行的,而中斷處理程式是在核心態下執行;

中斷響應是及時的,而訊號響應通常都有較大的時間延遲

這個其實很好理解,所有執行緒共享程序資料,有時候,執行緒需要乙份資料的副本來為自己服務,這樣的資料就稱為執行緒特定資料

解決核心與執行緒庫之間的通訊問題

scheduler activations provide upcalls - a communication mechanism from the kernel to the thread library

了解幾種系統執行緒例項

如linux windows等....

作業系統 執行緒

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

作業系統 執行緒

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

作業系統 執行緒

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