前言
在多線程作業系統中,線程的實現機制因系統而異。主要分為兩大類:用戶級線程與內核級線程。兩者在調度、資源管理、系統開銷等方面存在本質差異,深刻影響著並發程式的效能與設計模式。
一、 內核級線程
內核級線程由作業系統內核直接支援,是內核可調度的基本實體。
核心特徵
- 內核感知與控制: 線程的建立、銷毀、切換均需內核介入。內核為每個線程維護一個線程控制塊(TCB),掌握其完整狀態。
- 全系統資源競爭: 線程可跨進程競爭系統資源(如 CPU、I/O),不受所屬進程限制。
- 輕量級進程特性: 類似進程,但建立與調度開銷極小,統計數據顯示約為進程的 1:10。
二、 用戶級線程
用戶級線程完全在用戶空間實現,內核不可見。
核心特徵
- 用戶空間隔離: 僅存在於用戶空間,內核無法感知其存在,僅識別進程實體。
- 進程內資源競爭: 內核按進程分配資源,用戶線程僅能在所屬進程內部競爭資源。
- 依賴中間系統: 運行於「運行時系統」或「內核控制線程(LWP)」之上。
兩種實現模式
- 運行時系統: 封裝線程管理函數庫(建立、同步、調度),駐留用戶空間。用戶線程發起系統呼叫時,由運行時系統代理完成。
- 內核控制線程(LWP): 內核分配輕量級進程(LWP)給進程,用戶線程通過多路復用關聯 LWP,間接獲得內核服務。
三、 優劣勢對比
| 維度 | 內核級線程 | 用戶級線程 |
| 優點 |
1. 多處理器上可真正並行執行 2. 阻塞系統呼叫不影響同進程其他線程 |
1. 切換無需陷入內核,開銷極低 2. 可在不支援線程的 OS 上實現 |
| 缺點 |
1. 切換需陷入內核,開銷相對較大 |
1. 單進程多線程無法利用多核並行 2. 一線程阻塞導致全進程阻塞 3. 需複雜的用戶態調度器 |
四、 總結
現代作業系統(如 Linux、Windows)多採用混合模型:用戶線程多路複用到內核線程(LWP),兼顧靈活性與並行性。理解兩者差異,有助於高併發系統的架構選型與效能調優。