程序和執行緒的區別

2022-02-23 04:03:35 字數 1008 閱讀 7901

目錄python從入門到放棄完整教程目錄:

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

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

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

在多執行緒作業系統中,程序不是乙個可執行的實體。

通過漫畫了解執行緒和程序

在多執行緒的作業系統中,通常是在乙個程序中包括多個執行緒,每個執行緒都是作為利用cpu的基本單位,是花費最小開銷的實體。執行緒具有以下屬性。

輕型實體

執行緒中的實體基本上不擁有系統資源,只是有一點必不可少的、能保證獨立執行的資源。

執行緒的實體包括程式、資料和tcb。執行緒是動態概念,它的動態特性由執行緒控制塊tcb(thread control block)描述,tcb用於指示被執行指令序列的程式計數器、保留區域性變數、少數狀態引數和返回位址等的一組暫存器和堆疊。tcb包括以下資訊

1. 執行緒狀態。

2. 當執行緒不執行時,被儲存的現場資源。

3. 一組執行堆疊。

4. 存放每個執行緒的區域性變數主存區。

5. 訪問同乙個程序中的主存和其它資源。

獨立排程和分派的基本單位

在多執行緒os中,執行緒是能獨立執行的基本單位,因而也是獨立排程和分派的基本單位。由於執行緒很「輕」,故執行緒的切換非常迅速且開銷小(在同一程序中的)。

3. 共享程序資源

執行緒在同一程序中的各個執行緒,都可以共享該程序所擁有的資源,這首先表現在:所有執行緒都具有相同的程序id,這意味著,執行緒可以訪問該程序的每乙個記憶體資源;此外,還可以訪問程序所擁有的已開啟檔案、定時器、訊號量機構等。由於同乙個程序內的執行緒共享記憶體和檔案,所以執行緒之間互相通訊不必呼叫核心。

4. 可併發執行

在乙個程序中的多個執行緒之間,可以併發執行,甚至允許在乙個程序中所有執行緒都能併發執行;同樣,不同程序中的執行緒也能併發執行,充分利用和發揮了處理機與外圍裝置並行工作的能力。

執行緒和程序的區別

易於排程。執行緒切換比程序切換要快。虛擬記憶體空間,io裝置等 開銷小。建立執行緒比建立進行要快,所需開銷小。進展用少量資源,如棧和暫存器。提高併發性。程序可以建立多個執行緒來執行統一程式的不同任務。有利於充分發揮多處理器的功能。通過建立多執行緒的程序,每個執行緒在乙個處理器上執行,從而實現了應用程...

執行緒和程序的區別

這個問題我查了不下4次,每次都是突然想到查一下,當時明白,完了又會混淆 首先我們知道 程序 執行緒 執行緒 在乙個程式裡面的多個任務,比如賣票系統,他有退票和賣票的功能,我們就可以給他稱之為執行緒。程序 我們開啟任務管理器可以看到的是我們在系統上執行的程式稱之為執行緒 總之,乙個程式必須有乙個程序,...

執行緒和程序的區別

1.計算機的核心是cpu,它承擔了所有的計算任務。它就像一座工廠,時刻在執行。2.假定工廠的電力有限,一次只能供給乙個車間使用。也就是說,乙個車間開工的時候,其他車間都必須停工。背後的含義就是,單個cpu一次只能執行乙個任務。3.程序就好比工廠的車間,它代表cpu所能處理的單個任務。任一時刻,cpu...