執行緒上下文切換與程序上下文切換的區別


上下文切換是作業系統在多工環境中管理多個執行緒或程序的基本操作。它涉及儲存執行緒或程序當前的執行上下文,並恢復另一個執行緒或程序的執行上下文。這使得作業系統能夠快速在不同的執行緒或程序之間切換,從而產生併發執行的錯覺。

上下文切換有兩種型別:“執行緒上下文切換”和“程序上下文切換”。讓我們探討一下它們之間的區別。

什麼是執行緒上下文切換?

執行緒上下文切換是指儲存正在執行執行緒的當前執行上下文並恢復另一個執行緒的執行上下文以允許其執行的過程。在多執行緒環境中,單個程序中的多個執行緒可以併發執行,作業系統執行執行緒上下文切換以在不同執行緒之間切換執行。以下是執行緒上下文切換的關鍵特徵

  • 粒度:執行緒上下文切換的粒度比程序上下文切換更細。它們涉及在同一程序內的執行緒之間切換,與程序上下文切換相比,允許更快的切換和更低的開銷。

  • 執行上下文:線上程上下文切換期間,儲存當前執行緒的執行上下文,包括程式計數器、棧指標和暫存器值。然後恢復另一個執行緒的上下文,使其從上次停止的地方繼續執行。

  • 共享記憶體:執行緒在一個程序中共享相同的記憶體空間。因此,線上程上下文切換期間,無需切換記憶體地址空間或更新記憶體管理結構。記憶體保持不變,執行緒可以無需任何額外開銷直接訪問共享資料。

什麼是程序上下文切換?

另一方面,程序上下文切換涉及儲存正在執行程序的當前執行上下文並恢復另一個程序的執行上下文。它允許作業系統在不同的獨立程序之間切換,每個程序都有自己的記憶體空間和資源。以下是程序上下文切換的關鍵特徵

  • 粒度:程序上下文切換的粒度比執行緒上下文切換更粗。它們涉及在不同的程序之間切換,這些程序通常具有自己的記憶體空間和資源分配。由於需要更新記憶體管理和潛在的快取重新整理,程序上下文切換通常比執行緒上下文切換更昂貴且耗時。

  • 執行上下文:在程序上下文切換期間,儲存當前程序的執行上下文,包括程式計數器、棧指標、暫存器值和記憶體管理結構。然後恢復另一個程序的執行上下文,使其從上次停止的地方繼續執行。

  • 記憶體管理:程序有其獨立的記憶體空間,其中可能包括虛擬地址空間、頁表和記憶體保護機制。在程序上下文切換期間,需要更新記憶體管理結構以反映新程序的記憶體空間,這與執行緒上下文切換相比會產生額外的開銷。

  • 保護和隔離:程序上下文切換在程序之間提供更高水平的保護和隔離。每個程序都在自己的記憶體空間中執行,提供更好的安全性和故障隔離。程序上下文切換確保程序不能直接訪問或干擾彼此的記憶體或資源。

執行緒上下文切換和程序上下文切換

下表總結了執行緒上下文切換和程序上下文切換的區別

特性

執行緒上下文切換

程序上下文切換

定義

儲存正在執行執行緒的當前狀態(上下文)並載入另一個執行緒的已儲存狀態以執行的過程。

儲存正在執行程序的當前狀態(上下文)並載入另一個程序的已儲存狀態以執行的過程

粒度

發生在程序內的執行緒級別。多個執行緒可以存在於單個程序中。

發生在程序級別。每個程序可以有一個或多個執行緒。

執行環境

在同一程序內,執行緒上下文切換髮生在相同的記憶體空間中並共享相同的資源。

程序上下文切換涉及不同的程序,它們有自己的記憶體空間和資源。

開銷

由於執行緒上下文切換涉及在同一程序內的執行緒之間切換,因此其開銷通常較低。

程序上下文切換由於需要在不同的程序之間切換,需要對記憶體和資源對映進行更廣泛的更改,因此開銷更高

排程

執行緒上下文切換通常由作業系統的執行緒排程程式管理

程序上下文切換由作業系統的程序排程程式管理。

時間複雜度

執行緒上下文切換通常具有較低的時間複雜度,因為它們涉及在同一程序內的執行緒之間切換。

程序上下文切換由於需要對不同的程序執行更廣泛的上下文儲存和恢復操作,因此具有更高的時間複雜度。

對系統資源的影響

執行緒上下文切換對系統資源的影響相對較小,因為程序內的執行緒共享許多資源

程序上下文切換對系統資源的影響較大,因為不同的程序有自己的記憶體空間和資源分配。

通訊和同步

同一程序內的執行緒可以使用共享記憶體或同步原語輕鬆地進行通訊和同步

程序通常使用程序間通訊機制(例如管道、套接字或訊息佇列)相互通訊和同步。

示例

在 Web 伺服器中,在不同的執行緒之間切換以併發處理多個客戶端請求。

在多工作業系統上,在執行不同應用程式的不同程序之間切換

結論

執行緒上下文切換涉及在同一程序內的執行緒之間切換執行,而程序上下文切換涉及在不同的獨立程序之間切換執行。執行緒上下文切換更快且開銷更低,因為它們不需要更新記憶體管理結構。程序上下文切換較慢,並且涉及更新記憶體管理結構以在不同的記憶體空間之間切換,並提供程序之間的更好隔離。

更新於: 2023年7月12日

1K+ 瀏覽量

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.