Process vs. Thread
概念: 一個車隊 (行程) 內有多個車輛 (執行緒) 共同完成任務。
執行緒是CPU實際運算的最小單位,它被包含在行程內,又可稱之Lightweight Process。
一個行程內可以包含多個執行緒 - 也就是多執行緒的概念,其目的是透過共享資源實現多工 (不同行程間運作時無法共享資源,對於整體系統負和大),當然行程內也可以只有一個單執行緒。
在同一行程內多個並行執行緒擁有
共用的部分: Code section, Data section, OS resources.
獨立的部分: Thread ID, Program Counter, Register, Stack.
User vs. Kernel Thread
User Thread: 使用者應用程式 (in User mode) 所使用的執行緒,由Thread Library管理,OS並不知道執行緒的存在與否,運作快。Kernel Thread: 由OS Kernel直接管理的執行緒,運作慢。
Multithreading Model
User Threads to Kernel Threads- Many to One: 執行緒主要作業在User space,不會動用到kernel,效率高;此模型缺陷在於當任一User Thread執行blocking system call時,會導致整個行程halt,也無法在多處理器上使用。
- One to One: 主流,為Windows/ LINUX所採用。允許多個執行緒在多重處理器上並行運作,唯在產生Kernel Thread時負擔較高,需限制執行緒的數量。
- Many to Many: 彌補前兩類model的缺點,預先產生合理的執行緒數目,使其在多處理器上並行運作,當某一執行緒暫停時,OS可以立即安排另一個執行續接替工作。
Thread Cancellation
Target thread: 行程內執行"終止"的執行緒。- Asynchronous cancellation: 接獲終止的信號後,Target thread立即執行終止行為,無須考量其它執行緒。
- Deferred cancellation: Target thread並不立即執行終止行為,而是觀察其它執行緒情況,在最佳時機 (Cancellation point) 執行終止。
傳遞的方式
- 將信號傳遞予有要求使用的執行緒。
Signal Handling
信號 (Signal) 由特定事件產生,Signal handler傳遞信號予行程通知事件發生,且信號一旦發送後必需處於監控之下。傳遞的方式
- 將信號傳遞予有要求使用的執行緒。
- 將信號傳遞予同一行程內的所有執行緒。
- 將信號傳遞予行程內的特定執行緒。
- 指定一個執行緒,接收所有傳遞至其所屬行程之信號。
優點
- 使用現存的執行緒比產生新的成本低。
- 限制系統內執行緒的總數,避免資源消耗殆盡。
Thread Pool
預先產生一定數量的執行緒放置在執行續池 (Thread Pool) 裡。優點
- 使用現存的執行緒比產生新的成本低。
- 限制系統內執行緒的總數,避免資源消耗殆盡。
沒有留言:
張貼留言