程式與執行緒的產生

神棍先生發表於2018-05-08

版權宣告:本文可能為博主原創文章,若標明出處可隨便轉載。 https://blog.csdn.net/Jailman/article/details/80236810

摘自《作業系統原理》

執行緒產生的先提條件:
隨著並行技術、網路技術和軟體設計技術的發展,給併發程式設計效率帶來了一系列新的問題,主要表現在:

  • 程式時空的開銷大,頻繁的程式排程將耗費大量處理器時間,要為每個程式分配儲存空間限制了作業系統中程式的總數。
  • 程式通訊的代價大,每次通訊均要涉及通訊程式之間或通訊程式與作業系統之間的資訊傳遞。
  • 程式之間的併發性粒度較粗,併發度不高,過多的程式切換和通訊延遲使得細粒度的併發得不償失。
  • 不適合平行計算和分佈平行計算的要求,對於多處理器和分散式的計算環境來說,程式之間大量頻繁的通訊和切換,會大大降低並行度。
  • 不適合客戶/伺服器計算的要求。對於 C/S
    結構來說,那些需要頻繁輸入輸出並同時大量計算的伺服器程式(如資料庫伺服器、事務監督程式)很難體現效率。

執行緒和程式存在的根本原因:
如果說作業系統中引入程式的目的是為了使多個程式能併發執行,以改善資源使用率和提高系統效率,那麼,在作業系統中再引入執行緒,則是為了減少程式併發執行時所付出的時空開銷,使得併發粒度更細、併發性更好。
執行緒的產生思想:
把程式的兩項功能--“獨立分配資源”與“被排程分派執行”分離開來,前一項任務仍由程式完成,它作為系統資源分配和保護的獨立單位,不需要頻繁地切換;後一項任務交給稱作執行緒的實體來完成,它作為系統排程和分派的基本單位,會被頻繁地排程和切換,在這種指導思想下,產生了執行緒的概念。


相關文章