程序與執行緒之間的區別

2022-09-11 15:03:18 字數 1379 閱讀 7822

程序是併發執行的程式在執行過程中分配和管理資源的基本單位,是乙個動態的概念。每個程序都有自己的位址空間(程序空間)。程序空間的大小與處理機位數有關。程序至少有5種基本狀態:初始態,執行態,等待狀態,就緒狀態,終止狀態。

在多使用者環境下,乙個伺服器通常需要接受大量的不學定數量使用者的併發請求,而為每乙個請求都建立乙個程序非常不明智,無論從系統資源開銷方面還是響應使用者請求的效率上來看。這也是多執行緒誕生的乙個原因。執行緒是程序的一部分,乙個沒有執行緒的程序可以看做是單執行緒。執行緒也是cpu排程的乙個基本單位。

程序線狀執行

程序間資源保密

程序間通訊通過系統層互動

程序的執行過程是線裝的,中間可能會發生中斷或暫停,但是這個程序所擁有的資源只有程序的內部才能使用。一旦程序發生上下文切換,程序裡的資源就會被保護起來。所以說程序之間是資源保密的。如果要程序程序間的通訊,那必須通過系統層才能實現,這個資料的互動過程是比較耗時,也很耗資源。

上面說了,程序間通訊很耗時,也很耗資源。所以可以在乙個程序中採用多執行緒技術。執行緒的改變只是表示cpu執行過程的改變,而不會發生程序資源的變化,換句話說就是,統一程序內,多個執行緒是資源共享的。程序有乙個完整的虛擬空間。執行緒沒有。多個執行緒在同一程序中共享這個程序的所有資源。

執行緒適用於:多工,多核

不適用於:程序排程少,切換少的實時系統

執行緒可以提高系統的執行效率,但不是所有的系統都適合用多執行緒。比如某系實時系統很少做程序排程,或者切換。那就沒有必要用多執行緒。使用執行緒的好處就是有多個任務需要處理器處理時,減少處理器切換的時間。而且執行緒的建立與結束所需要的開銷要比程序的建立於結束要小。最適合用執行緒的系統就是多核系統,網路系統,還有分布式系統。

1.執行緒執行額特性:

3個狀態,5個操作

3個狀態:就緒,執行,阻塞

5個操作:派生,阻塞,啟用,排程,結束

執行緒與程序的區別

程序與執行緒的主要區別在於他們是不同的作業系統資源管理方式。

每個程序有自己獨立的位址空間,也就是說程序之間是資源保密的。乙個程序崩潰了,在保護模式下,並不會對其他的程序產生影響。而乙個執行緒只是乙個程序中不同的執行路徑。每個執行緒都擁有自己的堆疊空間與區域性變數。但是,執行緒之間沒有獨立的位址空間!乙個執行緒死掉,那整個程序就死掉,所以多程序的程式要比多執行緒的程式魯棒。但是程序間切換排程的時候,比較耗時耗記憶體,效率要差。所以對一些要求同時進行並且要共享某些變數的併發操作,只能用執行緒,不能用程序。

程序是一塊包含了某寫資源的記憶體區域。作業系統利用程序把它的工作劃分為一些功能單元。

執行緒就是程序中的乙個或多個的執行單元。

一般情況下,乙個應用程式是由乙個或者多個協作的程序組成的。比如vs開發環境,就是用乙個程序編輯原始檔,用另外乙個程序完成編譯工作

在win下,可以從資源管理器中看到所有的應用程式和程序。儘管只開啟了幾個應用程式,但是會有30多個程序同時執行。

程序和執行緒之間的區別

程序執行緒 定義資源單位 房子 執行單位 優點多核cpu密集型節省時間 節省資源 速度快 多個執行緒 io密集型節省資源 缺點浪費資源,建立耗費時間長 同一程序下多執行緒無法執行,無法利用多核優勢 目的 gil控制python直譯器記憶體管理 資料相關 程序之間資料相互隔離,可以通過佇列模組和ipc...

執行緒與程序之間的聯絡和區別

程序 process 和執行緒 thread 是作業系統的基本概念,但是它們比較抽象,不容易掌握。最近,我讀到一篇材料,發現有乙個很好的模擬,可以把它們解釋地清晰易懂。1.計算機的核心是cpu,它承擔了所有的計算任務。它就像一座工廠,時刻在執行。2.假定工廠的電力有限,一次只能供給乙個車間使用。也就...

程式 程序 執行緒之間的區別與聯絡

程式 實現了功能,就是程式,是靜態的 程序 執行中的程式就是程序,是動態的 執行緒 程序內的乙個執行單元,也是程序內的可排程實體,可以併發執行提高了程序的效率。1 乙個執行緒只能屬於乙個程序,而乙個程序可以有多個執行緒,但至少有乙個執行緒。2 資源分配給程序,同一程序的所有執行緒共享該程序的所有資源...