1. 程式人生 > >程序切換與執行緒切換的代價比較

程序切換與執行緒切換的代價比較

程序切換分兩步:

1.切換頁目錄以使用新的地址空間

2.切換核心棧和硬體上下文

對於linux來說,執行緒和程序的最大區別就在於地址空間,對於執行緒切換,第1步是不需要做的,第2是程序和執行緒切換都要做的。

切換的效能消耗:

1、執行緒上下文切換和程序上下問切換一個最主要的區別是執行緒的切換虛擬記憶體空間依然是相同的,但是程序切換是不同的。這兩種上下文切換的處理都是通過作業系統核心來完成的。核心的這種切換過程伴隨的最顯著的效能損耗是將暫存器中的內容切換出。

2、另外一個隱藏的損耗是上下文的切換會擾亂處理器的快取機制。簡單的說,一旦去切換上下文,處理器中所有已經快取的記憶體地址一瞬間都作廢了。還有一個顯著的區別是當你改變虛擬記憶體空間的時候,處理的頁表緩衝(processor's Translation Lookaside Buffer (TLB))或者相當的神馬東西會被全部重新整理,這將導致記憶體的訪問在一段時間內相當的低效。但是線上程的切換中,不會出現這個問題。