在現代作業系統中,進程是程式在特定資料集合上執行的一次動態過程。同一個程式若在不同資料集上運行,或多次在同一資料集上運行,皆屬於不同的進程。進程是系統進行資源分配和調度的基本單位,擁有獨立的地址空間、全域變數、開啟的檔案、子進程、訊號量及帳戶資訊等資源。
線程則是進程內部的一個實體,也是系統獨立調度和執行的基本單位。線程共享所屬進程的大部分資源(如地址空間、檔案描述符),但擁有獨立的堆疊、暫存器、狀態及程式計數器(PC)。這使得線程切換開銷遠小於進程切換,適合高併發場景。
| 資源類別 | 進程獨有 | 線程獨有 |
|---|---|---|
| 地址空間 | ✓ | 共享 |
| 全域變數 | ✓ | 共享 |
| 開啟的檔案 | ✓ | 共享 |
| 子進程 | ✓ | 共享 |
| 訊號量 | ✓ | 共享 |
| 帳戶資訊 | ✓ | 共享 |
| 堆疊 | 共享 | ✓ |
| 暫存器 | 共享 | ✓ |
| 執行狀態 | 共享 | ✓ |
| 程式計數器 | 共享 | ✓ |
理解進程與線程的差異,是設計高效、穩定並發系統的基石。