Download presentation
Presentation is loading. Please wait.
1
4.1 Operating System Concepts 第四章 執行緒 Threads n 綜觀 n 多重執行緒模型 (Multithreading Models) n 執行緒的相關問題 n Pthreads n Solaris 2 Threads n Windows 2000 Threads n Linux Threads n Java Threads
2
4.2 Operating System Concepts 執行緒 n 系統呼叫 fork() 的缺點 F 需要做大量記憶體的複製 F 進行內容切換時需付出相當的代價 F 兩個行程間無法直接進行溝通 n 若行程間可以共用一部分的記憶體空間,那麼額外的負 擔就能減少,這也就是建立執行緒的基本理由。 許多在桌上型 PC 執行的套裝軟體都是多執行緒。應用程 式通常都製作成有許多執行緒控制的個別行程。網頁瀏 覽器可能有一個執行緒顯示影像或文字,而另一執行緒 則從網路擷取資料。文書處理器可能有一個執行緒在顯 示圖形,另一個執行緒從使用者讀入按鍵,而第三個執 行緒在背景下執行拼字和文法校正。
3
4.3 Operating System Concepts 執行緒觀念 n 執行緒 F 輕量級行程 F 使用 CPU 資源的基本單元 F 包含了一個程式計數器、一組暫存器和一個堆疊空間 F 與其他的執行緒共用同一個位址空間 n 傳統的行程 F 重量級行程 F 可看成是只有一個執行緒在執行的行程
4
4.4 Operating System Concepts 傳統行程與執行緒行程 程式資料檔案 暫存器 堆疊 執行緒 程式資料檔案 暫存器 堆疊 暫存器 堆疊 執行緒 單執行緒 多執行緒
5
4.5 Operating System Concepts 單一及多重執行緒的行程
6
4.6 Operating System Concepts 優點 1. 應答 : 將交談式的應用程式多執行緒化,可以在一個程式 某一部份被暫停,或程式在執行冗長操作時,依然桂續 執行,因此增加了對使用者的應答。 2. 資源分享 : 執行緒間將共用它們所屬行程的記憶體和資源 。程式碼和資料共用的好處是讓應用程式有數個不同的 執行緒在同一位址空間活動。 3. 經濟 : 對於行程產生所配置的記憶體和資源耗費很大。反 之,因為執行緒共用它們所屬行程的資源,所以執行緒 的產生和內容交換就比較經濟。憑經驗去測量出產生和 維護行程比執行緒多出多少時間可能很困難,但通常產 生和維護行程會比執行緒更費時。 4. 使用多處理器架構 : 在多處理器的架構下,多執行緒的利 益可以大幅提升,因為每一執行緒可以並行地在不同的 處理器上執行。不論有多少 CPU 可以使用,單一執行緒 只能在一個 CPU 上執行。多處理器上並行增加多執行緒 。
7
4.7 Operating System Concepts 使用者和核心執行緒 n 在作業系統中,有兩種方式來支援執行緒 F 使用者執行緒 4 利用執行緒函式庫來提供的 4 建立與管理執行緒時比較有效率 4 若行程中的執行緒暫停,則同行程中其他所 有執行緒也都會暫停執行 F 核心執行緒 4 由作業系統直接支援 4 建立與管理執行緒時比使用者執行緒來得慢 4 若行程中的執行緒暫停,核心可以安排其他 在同行程中的執行緒繼續執行
8
4.8 Operating System Concepts 使用者執行緒 (User Threads) n 執行緒的管理由使用者層次的執行緒程式庫來完成 n 使用者執行緒是依附在行程內,所以中央處理器排程器仍以行程為 單位進行排程及環境切換工作,當某一個行程輪到中央處理器時, 它將它所輪到的時間分享給它的執行緒使用,例如時間片段為 100ms ,故某個行程分配 100ms 時間,而它有五個執行緒,則每 個執行緒分配 20ms 執行。 n 範例 F - POSIX Pthreads F - Mach C-threads F - Solaris threads
9
4.9 Operating System Concepts 核心執行緒 Kernel Threads n 由作業系統核心支援 n 由於每個核心執行緒是各自排程,所以核心行程內若某 一個執行緒懸置,它不會造成其他的執行緒被懸置。 n 範例 F - Windows 95/98/NT/2000 F - Solaris F - Tru64 UNIX F - BeOS F - Linux
10
4.10 Operating System Concepts Multithreading Models 多執行緒模式 n 多對一 (Many-to-One) 將許多個使用者執行緒對應到同一個核心執行 緒。 n 一對一 (One-to-One) 將一個使用者執行緒對應到一個核心執行緒。 n 多對多 (Many-to-Many) 將使用者執行緒對應 到相同或是較少數目的核心執行緒。
11
4.11 Operating System Concepts 多對一 Many-to-One n 許多使用者層次的執行緒對應到一個單一的核 心執行緒. n 通常使用在不支援核心執行緒的作業系統.
12
4.12 Operating System Concepts 多對一模式
13
4.13 Operating System Concepts 一對一 n 每個使用者執行緒對應到核心執行緒 Each user-level thread maps to kernel thread. n 範例 F - Windows 95/98/NT/2000 F - OS/2
14
4.14 Operating System Concepts 一對一模式
15
4.15 Operating System Concepts 多對多模式 n 允許多個使用者層執行緒可以對應到許多核心 執行緒. n 允許作業系統產生足夠數目的核心執行緒. n Solaris 2 n Windows NT/2000 with the ThreadFiber package
16
4.16 Operating System Concepts 多對多模式
17
4.17 Operating System Concepts 執行緒的問題 n fork() 及 exec() 的系統呼叫問題. n 執行緒的取消 (Thread cancellation). n 訊號處理 (Signal handling) n 執行緒池 (Thread pools) n 執行緒相關特定資料 Thread specific data
18
4.18 Operating System Concepts Pthreads F Pthreads 依據 POS 以 (IEEE1003.1c) 標準定義執行緒產生和同步的 API 。 F Pthreads 是執行緒行為的規格,而非製作。作業系統設計者可以 用任何他們期望的方式製作此規格。 Win32 執行緒 : 使用 Win32 執行緒程式庫產生執行的技巧 與 Pthreads 技巧,在許多方面很相似。當使用 Win32API 時,必須含有 windows . h 的標題檔。 n Java 執行緒 : 執行緒是在 Java 程式、 Java 語言和 JavaAPI 中 程式執行的基本模式, Java 的 API 提供執行緒的產生與管 理一組豈富的特性。所有 Java 程式至少包含一個單一執 行緒控制,即使只包含一個 main() 方法的 Java 程式也是 以一個單一執行緒在 JVM 下執行。
19
4.19 Operating System Concepts Solaris 2 執行緒
20
4.20 Operating System Concepts Solaris 行程
21
4.21 Operating System Concepts Windows 2000 執行緒 n 製作一對一的對應. n 每一個執行緒包含 F - a thread id F - register set F - separate user and kernel stacks F - private data storage area
22
4.22 Operating System Concepts Java 執行緒狀態
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.