在 Linux 中,上下文切換、程序切換和執行緒切換之間有什麼區別?
上下文切換涉及儲存程序或執行緒的上下文或狀態,以便在需要時可以重新載入它,並且可以
從與之前相同的點恢復執行。這是多工作業系統的一個特性,它允許單個 CPU 被多個程序共享。
程序切換或程序排程是指透過儲存當前正在執行的程序的所有狀態(包括其暫存器狀態、關聯的核心狀態和所有虛擬記憶體配置)來更改一個程序到另一個程序。
執行緒切換意味著在程序內從一個執行緒切換到另一個執行緒。
程序切換和執行緒切換之間的主要區別在於,線上程切換的情況下,虛擬地址空間保持不變,因此快取中的內容相同。因此,無需使 TLB 無效。但在程序切換的情況下,情況並非如此,因為虛擬地址空間不會保持不變。因此,我們必須使 TLB 快取無效。
因此,在程序之間切換的成本遠高於線上程之間切換的成本。
廣告