Chapter 4 Multi-Threads (多執行緒)
Topic Overview 4.1 概論 (Overview) 4.2 多執行緒模式 (Multithreading Models) 4.3 執行緒程式庫 (Thread Libraries) 4.4 執行緒的問題 (Threading Issues) W.-S. Hsu 2011
4.1 概論 (Overview) 執行緒 (thread) 概念 定義 一個行程可以擁有許多執行緒 LWP (Lightweight process)─ 一個小的process CPU使用時的一個基本單元 一個 thread 擁有一個執行緒ID、程式計數器、一組暫存器,以及一個堆疊空間 一個行程可以擁有許多執行緒 同一行程內的執行緒,共用程式碼區、資料區、及作業系統配置給此行程的資源 (例如,開啟的檔案) 傳統行程內只有一個執行緒,稱為單執行緒或heavy weight process (HWP) W.-S. Hsu 2011
程式,行程,執行緒 程式 (Program) 行程 (Process) 執行緒 (Thread) HDD Memory W.-S. Hsu 2011
4.1 執行緒 (thread) 概念 (Cont.) 單執行緒行程 vs. 多執行緒行程 檔案 W.-S. Hsu 2011
4.1.1-2 動機 & 利益 (motivation & benefits) 單一應用程式可能被要求執行類似的多個工作 資源分享、CPU切換速度快 threads 的內容轉換需一組 registers,但不需要執行記憶體管理的相關工作 程式碼 程式碼 資料區 檔案 程式碼 資料區 檔案 資料區 process 1-1 檔案 堆疊區1 堆疊區1 暫存器組1 堆疊區1 暫存器組1 暫存器組1 程式碼 資料區 檔案 堆疊區2 暫存器組2 程式碼 資料區 堆疊區2 暫存器組2 process 1-2 檔案 堆疊區2 暫存器組2 non-thread thread W.-S. Hsu 2011
4.1.1-2 動機 & 利益 (Cont.) 動機 & 利益 (Cont.) 圖 4.2 W.-S. Hsu 2011
4.2 多執行緒模式 (Multithreading Models) 執行緒的支援 使用者層次提供 user thread 核心層次提供 kernel thread (OS管理) user threads 必須對應到 kernel threads,方可被安排執行 CPU W.-S. Hsu 2011
4.2 多執行緒模式 (Cont.) 執行緒的對應模式 多對一模式 一對一模式 圖 4.5 圖 4.6 W.-S. Hsu 2011
執行緒的對應模式 (Cont.) 多對多模式 兩層模式 4.2 多執行緒模式 (Cont.) 圖 4.7 圖 4.8 W.-S. Hsu 2011
4.3 執行緒程式庫 (Thread Libraries) 三個主要執行緒程式庫 Pthreads Win32 Java W.-S. Hsu 2011
End of Chapter 4 W.-S. Hsu 2011