程序與執行緒的區別

來源:酷知科普網 6.08K

學習電腦和程式語言就會遇到程序和執行緒,初學者往往會在此陷入迷茫和糾結中。其實弄清這兩個概念不是很難。從一定意義上講,程序就是一個應用程式在處理機上的一次執行過程,它是一個動態的概念,而執行緒是程序中的一部分,程序包含多個執行緒在執行。

程序與執行緒的區別

操作方法

(01)程序是一個具有獨立功能的程式關於某個資料集合的一次執行活動。它可以申請和擁有系統資源,是一個動態的概念,是一個活動的實體。它不只是程式的程式碼,還包括當前的活動,通過程式計數器的值和處理暫存器的內容來表示。

程序與執行緒的區別 第2張

(02)程序是一個“執行中的程式”。程式是一個沒有生命的實體,只有處理器賦予程式生命時,它才能成為一個活動的實體,我們稱其為程序。

程序與執行緒的區別 第3張

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

程序與執行緒的區別 第4張

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

程序與執行緒的區別 第5張

(05)執行緒與程序的區別歸納:a.地址空間和其它資源:程序間相互獨立,同一程序的各執行緒間共享。某程序內的執行緒在其它程序不可見。b.通訊:程序間通訊IPC,執行緒間可以直接讀寫程序資料段(如全域性變數)來進行通訊——需要程序同步和互斥手段的輔助,以保證資料的一致性。c.排程和切換:執行緒上下文切換比程序上下文切換要快得多。d.在多執行緒OS中,程序不是一個可執行的實體。

程序與執行緒的區別 第6張
程序與執行緒的區別 第7張

(06)程序是具有一定獨立功能的程式關於某個資料集合上的一次執行活動,程序是系統進行資源分配和排程的一個獨立單位。執行緒是程序的一個實體,是CPU排程和分派的基本單位,它是比程序更小的能獨立執行的基本單位。執行緒自己基本上不擁有系統資源,只擁有一點在執行中必不可少的資源(如程式計數器,一組暫存器和棧),但是它可與同屬一個程序的其他的執行緒共享程序所擁有的全部資源。

程序與執行緒的區別 第8張
熱門標籤