執行緒和程序的區別

  任務是程式碼執行的一個映象,從系統的角度看,任務是競爭系統資源的最小執行單元。下面由小編為你分享的相關內容,希望對大家有所幫助。

  執行緒,程序,程式的區別

  任務可以使用或等待CPU、I/O裝置及記憶體空間等系統資源,並獨立於其它任務,與它們一起併發執行***巨集觀上如此***。VxWorks核心使任務能快速共享系統的絕大部分資源。

  在VxWorks***中,程序是指Rtp,程序包含任務,任務是排程的最小單元。

  程序***有時被稱為重量級程序***是程式的一次執行。每個程序都有自己的地址空間,記憶體,資料棧以及其它記錄其執行軌跡的輔助資料。操作系

  統管理在其上執行的所有程序,併為這些程序公平地分配時間。

  不過各個程序有自己的記憶體空間,資料棧等,所以只能使用程序間通訊***IPC***,而不能直接共享資訊。

  執行緒,有時被稱為輕量級程序***Lightweight Process,LWP***,是程式執行流的最小單元。一個標準的執行緒由執行緒ID,當前指令指標***PC***,暫存器集合和堆疊組成。另外,執行緒是程序中的一個實體,是被系統獨立排程和分派的基本單位,執行緒自己不擁有系統資源,只擁有一點在執行中必不可少的資源,但它可與同屬一個程序的其它執行緒共享程序所擁有的全部資源。一個執行緒可以建立和撤消另一個執行緒,同一程序中的多個執行緒之間可以併發執行。由於執行緒之間的相互制約,致使執行緒在執行中呈現出間斷性。執行緒也有就緒、阻塞和執行三種基本狀態。每一個程式都至少有一個執行緒,那就是程式本身。

  執行緒是程式中一個單一的順序控制流程。在單個程式中同時執行多個執行緒完成不同的工作,稱為多執行緒。

  在於,子程序和父程序有不同的程式碼和資料空間,而多個執行緒則共享資料空間,每個執行緒有自己的執行堆疊和程式計數器為其執行上下文。多執行緒主要是為了節約CPU時間,發揮利用,根據具體情況而定。執行緒的執行中需要使用計算機的記憶體資源和CPU。

  通常在一個程序中可以包含若干個執行緒,它們可以利用程序所擁有的資源。在引入執行緒的作業系統中,通常都是把程序作為分配資源的基本單位,而把執行緒作為獨立執行和獨立排程的基本單位。由於執行緒比程序更小,基本上不擁有系統資源,故對它的排程所付出的開銷就會小得多,能更高效的提高系統內多個程式間併發執行的程度,從而顯著提高系統資源的利用率和吞吐量。

  因而近年來推出的通用作業系統都引入了執行緒,以便進一步提高系統的併發性,並把它視為現代作業系統的一個重要指標。

  執行緒與程序的區別可以歸納為以下幾點:

  1***地址空間和其它資源***如開啟檔案***:程序間相互獨立,同一程序的各執行緒間共享。某程序內的執行緒在其它程序不可見。

  2***通訊:程序間通訊IPC,執行緒間可以直接讀寫程序資料段***如全域性變數***來進行通訊——需要程序同步和互斥手段的輔助,以保證資料的一致性。

  3***排程和切換:執行緒上下文切換比程序上下文切換要快得多。

  4***在多執行緒OS中,程序不是一個可執行的實體。

  程式***program***是為實現特定目標或解決特定問題而用計算機語言編寫的命令序列的集合。為實現預期目的而進行操作的一系列語句和指令。一般分為系統程式和應用程式兩大類。計算機中的程式在港澳臺地區稱為程式。程式就是為使電子計算機執行一個或多個操作,或執行某一任務,按序設計的計算機指令的集合