程序和執行緒區別

2022-01-31 07:51:30 字數 1358 閱讀 2164

匯集很多部落格於一體的,大概就這些

1.排程

在傳統的作業系統中,擁有資源的基本單位和獨立排程、分派的基本單位都是程序。而在引入執行緒的作業系統中,則把執行緒作為排程和分派的基本單位。而把程序作 為資源擁有的基本單位,使傳統程序的兩個屬性分開,執行緒便能輕裝執行,從而可顯著地提高系統的併發程度。

在同一程序中,執行緒的切換不會引起程序的切換,在 由乙個程序中的執行緒切換到另乙個程序中的執行緒時,將會引起程序的切換。

2.併發性

在引入執行緒的作業系統中,不僅程序之間可以併發執行,而且在乙個程序中的多個執行緒之間,亦可併發執行,因而使作業系統具有更好的併發性,從而能更有效地使 用系統資源和提高系統吞吐量。提高吞吐量

3.擁有資源

不論是傳統的作業系統,還是設有執行緒的作業系統,程序都是擁有資源的乙個獨立單位,它可以擁有自己的資源。一般地說,執行緒自己不擁有系統資源(也有一點必 不可少的資源),但它可以訪問其隸屬程序的資源。亦即,乙個程序的**段、資料段以及系統資源,如已開啟的檔案、i/o裝置等,可供問一程序的其它所有線 程共享。

4.系統開銷

由於在建立或撤消程序時,系統都要為之分配或**資源,如記憶體空間、i/o裝置等。因此,作業系統所付出的開銷將顯著地大於在建立或撤消執行緒時的開銷。類 似地,在進行程序切換時,涉及到整個當前程序cpu環境的儲存以及新被排程執行的程序的cpu環境的設定。而執行緒切換只須儲存和設定少量暫存器的內容,並 不涉及儲存器管理方面的操作。可見,程序切換的開銷也遠大於執行緒切換的開銷。此外,由於同一程序中的多個執行緒具有相同的位址空間,致使它們之間的同步和通訊的實現,也變得比較容易。在有的系統中,執行緒的切換、同步和通訊都無須

5:巨集觀狀態

程序的執行過程是線狀的,儘管中間會發生中斷或暫停,但該程序所擁有的資源只為該線狀執行過程服務。一旦發生程序上下文切換,這些資源都是要被保護起來的。這是程序巨集觀上的執行過程。而程序又可有單執行緒程序與多執行緒程序兩種。我們知道,程序有 乙個程序控制塊 pcb ,相關程式段 和 該程式段對其進行操作的資料結構集 這三部分,單執行緒程序的執行過程在巨集觀上是線性的,微觀上也只有單一的執行過程;而多執行緒程序在巨集觀上的執行過程同樣為線性的,但微觀上卻可以有多個執行操作(執行緒),如不同**片段以及相關的資料結構集。執行緒的改變只代表了 cpu 執行過程的改變,而沒有發生程序所擁有的資源變化。出了 cpu 之外,計算機內的軟硬體資源的分配與執行緒無關,執行緒只能共享它所屬程序的資源。

6:pcb,tcb

與程序控制表和 pcb 相似,每個執行緒也有自己的執行緒控制表 tcb ,而這個 tcb 中所儲存的執行緒狀態資訊則要比 pcb 表少得多,這些資訊主要是相關指標用堆疊(系統棧和使用者棧),暫存器中的狀態資料。

執行緒和程序的區別

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

執行緒和程序的區別

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

執行緒和程序的區別

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