線程上下文切換與進程上下文切換

轉自:https://www.cnblogs.com/poluner/articles/6604788.html,侵刪。html

進程切換分兩步
1.切換頁目錄以使用新的地址空間。
2.切換內核棧和硬件上下文。

對於linux來講,線程和進程的最大區別就在於地址空間。
對於線程切換,第1步是不須要作的,第2是進程和線程切換都要作的。因此明顯是進程切換代價大linux

 

線程上下文切換和進程上下問切換一個最主要的區別是線程的切換虛擬內存空間依然是相同的,可是進程切換是不一樣的。這兩種上下文切換的處理都是經過操做系統內核來完成的。內核的這種切換過程伴隨的最顯著的性能損耗是將寄存器中的內容切換出。緩存

 

另一個隱藏的損耗是上下文的切換會擾亂處理器的緩存機制。簡單的說,一旦去切換上下文,處理器中全部已經緩存的內存地址一瞬間都做廢了。還有一個顯著的區別是當你改變虛擬內存空間的時候,處理的頁表緩衝(processor’s Translation Lookaside Buffer (TLB))或者至關的神馬東西會被所有刷新,這將致使內存的訪問在一段時間內至關的低效。可是在線程的切換中,不會出現這個問題。ide

相關文章
相關標籤/搜索