作業系統_程式和執行緒的區別

RSGC_GZ發表於2020-12-01

程式和執行緒的區別

比較內容 程式 程式
排程的基本單位 程式是能獨立執行的基本單位,被排程時需要上下文切換。 執行緒是能獨立執行的基本單位,執行緒切換時僅需儲存和設定少量暫存器內容。
併發性 程式之間可以併發執行。 一個程式中的所有執行緒都能併發執行,不同程式中的執行緒也能併發執行。
擁有資源 程式可以擁有資源,並作為系統中擁有資源的一個基本單位。資源分配給程式,同一程式的所有執行緒共享該程式的所有資源。同一程式中的多個執行緒共享程式碼段(程式碼和常量),資料段(全域性變數和靜態變數),擴充套件段(堆儲存)。 執行緒本身不擁有系統資源,而是僅有一點必不可少的、能保證獨立執行的資源。執行緒還允許多個執行緒共享該程式所擁有的資源。每個執行緒擁有自己的棧段,棧段又叫執行時段,用來存放所有區域性變數和臨時變數。
獨立性 每個程式都擁有一個獨立的地址空間和其他資源,除了全域性變數外,不允許其他程式的訪問。獨立性高。每個獨立的程式有程式執行的入口、順序執行序列和程式出口。 同一程式中的不同執行緒共享記憶體地址空間和資源。獨立性低。執行緒不能獨立執行,必須依存在應用程式中,由應用程式提供多個執行緒執行控制。
系統開銷 在建立或撤消程式時,系統都要為之分配和回收程式控制塊、分配或回收其他資源。開銷大。 由於一個程式中的多個執行緒具有相同的地址空間,執行緒之間的同步和通訊也比程式簡單。開銷小。
支援多處理機系統 單執行緒程式:只能執行在一個處理機上。 多執行緒程式:可以將一個程式的多個執行緒分配到多個處理機上,使它們併發執行。
根本區別 程式是作業系統資源分配的基本單位。 執行緒是處理器任務排程和執行的基本單位。
包含關係 一個程式可以有多個執行緒,但至少有一個執行緒。如果一個程式內有多個執行緒,則執行過程不是一條線的,而是多條線(執行緒)共同完成的。 執行緒是程式的一部分,所以執行緒也被稱為輕權程式或者輕量級程式。一個執行緒只能屬於一個程式。執行緒是作業系統可識別的最小執行和排程單位。
影響關係 一個程式崩潰後,在保護模式下不會對其他程式產生影響。健壯。 一個執行緒崩潰整個程式都死掉。

作者:葉浩霞 :bookmark_tabs:
日期:2020.12.01

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章