快轉到主要內容
  1. Core/

Process vs. Thread|圖解與面試秒答

Idle Engineer
作者
Idle Engineer
AI Runs. I Nap. | 404 Career Not Found
目錄

TL;DR | 面試情境模擬
#

👴 面試官:請解釋一下 Process 與 Thread 的差別?

🧑‍💻 :簡單來說,Process 是資源分配的單位,而 Thread 是 CPU 執行任務的最小單位。 一個 Process 可以包含多個 Thread,它們共用 Process 的記憶體;Thread 切換速度比 Process 快,但穩定性較低。


為什麼要分開?(圖解與餐廳比喻)
#

把程式比喻成一家餐廳,你就懂了:

1. 結構圖解
#

[ Process A (餐廳) ]
+------------------------------------------+
| [Thread 1]  [Thread 2]  [Thread 3]       |
| (員工們共用同一個廚房/記憶體)                |
+------------------------------------------+

[ Process B (餐廳) ]
+------------------------------------------+
| [Thread 1]                               |
| (獨立廚房,跟 Process A 完全隔離)           |
+------------------------------------------+
  • Process (餐廳):是獨立的實體,有自己專屬的用餐區、廚房(記憶體資源)。A 餐廳與 B 餐廳完全隔開,互不影響。
  • Thread (廚師):是餐廳裡的員工,共用同一個廚房(記憶體),協作速度快。但如果一個廚師把廚房燒了,整間餐廳(Process)都完了。

核心差異總結
#

特性 Process (處理程序) Thread (執行緒)
定義 資源分配的單位 CPU 執行任務的單位
記憶體 彼此獨立 (隔離) 共用 Process 資源
切換開銷 大 (需切換虛擬記憶體) 小 (只需切換執行狀態)
穩定性 一個崩潰,不影響其他 一個崩潰,導致 Process 結束

💡 進階補充:面試官可能會追問
#

Q:為什麼 Thread 切換開銷比 Process 小?
#

  • Process 切換:os需重新載入記憶體頁表(Page Table)、切換虛擬記憶體空間,非常耗資源。
  • Thread 切換:共用記憶體空間,只需要保存並切換少量的暫存器狀態,速度極快。

Q:什麼情況該用多 Process,什麼情況用多 Thread?
#

  • 多 Process:適合高穩定性要求,或是需要完全隔離的任務(例如 Chrome 的分頁,一個當掉不會影響整體)。
  • 多 Thread:適合高並發,且任務之間需要頻繁交換資料的場景(例如 Web 伺服器處理請求),因為它們共享記憶體,傳遞資料的速度最快。