1 / 57

執行緒、 SMP 與微核心 Threads, SMP and Microkenels

執行緒、 SMP 與微核心 Threads, SMP and Microkenels. 第 4 章. 行程 Process. 資源的擁有權 : 行程會包含一塊虛擬位址空間,來保存行程映像 (Process Image) Process Image: Program, Data, Stack, PCB 排程 / 執行:隨著執行路徑 (Trace) ,可能會與其他行程交錯執行 這兩個特徵是相互獨立的,並且可以被作業系統分開處理. 行程 Process.

Download Presentation

執行緒、 SMP 與微核心 Threads, SMP and Microkenels

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 執行緒、SMP與微核心Threads, SMP and Microkenels 第 4 章

  2. 行程Process • 資源的擁有權:行程會包含一塊虛擬位址空間,來保存行程映像(Process Image) • Process Image: Program, Data, Stack, PCB • 排程/執行:隨著執行路徑(Trace),可能會與其他行程交錯執行 • 這兩個特徵是相互獨立的,並且可以被作業系統分開處理

  3. 行程Process • 分派動作的單位(Unit of Dispatching)通常被稱為執行緒(Thread)或輕量級行程(Lightweight Process) • 資源擁有權的單位則被稱為行程(Process)或工作(Task)

  4. 多重執行緒Multithreading • 作業系統在單一行程內執行多個執行緒(Thread)的能力 • MS-DOS支援單一執行緒 • 傳統的UNIX支援多個使用者行程,但是每個行程只能有一個執行緒 • Windows、Solaris、 Linux、Mach和OS/2等作業系統都支援多重執行緒

  5. 多重執行緒 Multithreading • 行程 Process • 一塊用來存放行程映像的虛擬位址空間 • 保護對處理器、其他行程、檔案,以及I/O資源(裝置和通道)的存取動作 • 執行緒 Thread • 執行狀態 (執行中、備妥等) • 不在執行中時所儲存的執行緒序文(Thread Context) • 一個執行堆疊 • 執行緒個別的靜態儲存空間,存放區域變數 • 行程的記憶體和資源存取資訊,所有執行緒共用

  6. 執行緒的好處Key Benefits of Threads • 花的時間比建立全新的行程短 • 建立新執行緒比建立新行程快10倍 • 終止一個執行緒比終止一個行程花費較少的時間 • 在同一行程中進行兩個執行緒的切換,所花費的時間較少 • 因為在同一個行程內的各個執行緒會共用記憶體和檔案,因此它們能彼此進行溝通,不需要呼叫核心程式

  7. 在單使用者多重處理系統中使用執行緒 • 前景及背景工作(Foreground and Background Work) • 非同步的處理(Asynchronous Processing) • 加速執行(Speed of Execution) • 模組化程式結構(Modular Program Structure)

  8. 多重執行緒 • 暫停某個行程牽涉到暫停此行程所有的執行緒,因為所有執行緒都共用相同的位址空間 • 終結某個行程也會終結行程中的所有執行緒

  9. 執行緒的狀態Thread States • 與執行緒狀態轉換相關的基本動作 • 繁衍 (Spawn) • 繁衍出其它執行緒 • 懸置(Block) • 解除懸置(Unblock) • 完成(Finish) • 釋放暫存器序文資訊及堆疊

  10. 使用單一執行緒的遠端程序呼叫

  11. 使用執行緒的遠端程序呼叫

  12. 多重執行緒範例

  13. 執行緒同步Thread Synchronization • 同一行程的多個執行緒共用位址空間與資源 • 共用變數 • 開啟的檔案 • … • 變動共用資源的內容時,必須同步 • 避免兩個執行緒同時對一個鏈結串列插入新節點

  14. Adobe PageMaker

  15. 使用者層級執行緒與核心層級執行緒User-Level and Kernel-Level Threads • 使用者層級執行緒(User-Level Thread, ULT) • 核心層級執行緒(Kernel-Level Thread, KLT) • 核心支援執行緒(Kernel-Supported Thread) • 輕量級行程(Lightweight Process)

  16. 使用者層級執行緒User-Level Thread • 所有的執行緒管理工作都由應用程式負責 • 核心並不知道執行緒的存在

  17. 使用者層級執行緒User-Level Thread

  18. 使用者層級執行緒User-Level Thread • 優點 • 執行緒切換(Thread Switching)不需要核心,節省時間與工作量 • 可以針對個別應用程式進行排程 • 可以在任何作業系統執行 • 缺點 • 任何一個執行緒執行系統呼叫,整個行程被懸置 • 多重執行緒無法獲得多重處理的支援,任何一個行程內,每次只能執行一個執行緒

  19. 核心層級執行緒Kernel-Level Thread • Windows是使用這種方式 • 核心程式會為此行程及該行程內的執行緒維護序文資訊 • 排程工作是以執行緒為基礎

  20. 核心層級執行緒Kernel-Level Thread

  21. 在VAX機器上執行類似UNIX的作業系統 • KLT 即使在同一行程內,從一個執行緒切換到另外一個執行緒,都必須先切到核心模式 • Null Fork:只計算行程/執行緒被產生、排程、執行、完成的時間 • Signal-Wait:兩個執行緒間處理同步作業所需的時間

  22. 合併使用Combined Approach • Solaris是最常見的例子 • 執行緒的建立是在使用者空間內完成 • 單一行程的 ULT 對應到數個(小於等於)KLT • 多個執行緒可以在多個處理器上執行

  23. 合併使用 Combined Approach

  24. 執行緒與行程之間的關係

  25. 對稱式多重處理Symmetric Multi-Processing(SMP) • 電腦系統的分類 • 單指令單資料串流(Single Instruction Single Data, SISD) • 單一處理器執行單一指令串流,來處理儲存在單一記憶體內的資料 • 單指令多重資料串流(Single Instruction Multiple Data, SIMD) • 每個指令都是在不同處理器上處理不同的資料集合

  26. 對稱式多重處理Symmetric Multi-Processing(SMP) • 電腦系統的分類 • 多重指令單資料串流(Multiple Instruction Single Data, MISD) • 一連串的資料被傳送到一組處理器內,並且每個都執行不同的指令序列。這種結構從未被實作過 • 多重指令多重資料串流(Multiple Instruction Multiple Data, MIMD) • 一組處理器同時針對不同的資料集合,執行不同的指令序列

  27. Distributed Memory Shared Memory Master/Slave Cluster

  28. 對稱式多重處理SMP • 核心程式能在任何處理器上執行 • 通常每個處理器都可以在可用行程或執行緒的集區中自己進行排程

  29. SMP Organization • 每一個處理器有自己的的控制單元、數學邏輯單元、暫存器 • 共用記憶體、I/O裝置 • 記憶體支援同時存取

  30. 多處理器作業系統的設計考量 • 同時處理的行程或執行緒 • Reentrant:多個處理器同時執行同一段程式碼不出問題 • 排程:Avoid Conflict • 同步:Enforce Mutual Exclusion and Event Ordering • 記憶體管理:Multi-port Memory • 可靠度及容錯(Reliability and Fault-Tolerance) • Graceful Degradation

  31. 微核心Microkernel • 小型的作業系統核心 • Mach Operating System • 只包含絕對必要的核心作業系統功能 • 許多原本屬於作業系統一部份的服務,現在都成為外部子系統 • 裝置驅動程式 • 檔案系統 • 虛擬記憶體管理程式 • 視窗處理系統 • 安全功能服務

  32. Monolithic Kernel Layered Kernel Microkernel

  33. 微核心結構的好處 • 一致化的介面(Uniform Interface) • 不需要特別區分核心層級與使用者層級的服務 • 所有服務都是由訊息傳遞的方法所提供 • 擴充性(Extensibility) • 允許加入額外的新服務 • 彈性(Flexibility) • 可加入新功能 • 現有的功能也可以被去除

  34. 微核心結構的好處 • 可攜性(Portability) • 將系統移植到其它處理器所需進行的變更是在微核心中,不是在其他服務中 • 可靠性(Reliability) • 模組化設計 • 小型的微核心程式可以被嚴密的測試

  35. 微核心結構的好處 • 支援分散式系統(Distributed System Support) • 不需要知道目標服務是在哪台機器上,也可以傳送訊息 • 物件導向作業系統(Support for Object-Oriented Operating System) • 元件是具有清楚定義介面的物件,它們可以像積木一樣彼此連結來建構軟體

  36. 微核心的效能 • 訊息傳遞比直接呼叫API耗費更多時間 • 改良 • 擴張微核心,減少使用者模式與核心模式切換的次數 • 提高行程間通訊的效率

  37. 微核心的設計 • 低階記憶體管理 • 負責對映虛擬分頁與實體頁框 • 支援外部分頁程式 • Grant:將部份分頁送給其他行程 • Map:將位址空間對應到其他行程的分頁 • Flush:將送出去的分頁取回

  38. 低階記憶體管理 External Pager

  39. 微核心的設計 • 行程之間的通訊(Inter-process Communication) • 訊息(Message):包含 Header 和 Body • 通訊埠(Port):識別訊息佇列 • I/O與中斷的管理 • 微核心不處理中斷 • 將中斷以訊息的方式送交使用者層級的行程處理

  40. Windows行程 • 被實作為物件 • 可執行的行程可包含一個或一個以上的執行緒 • 行程與執行緒的物件都有內建的同步功能

  41. Access Token Virtual Address Descriptor Handle Section

  42. Windows行程物件

  43. Windows執行緒物件

  44. Windows 2000執行緒狀態 • 備妥(Ready) • 待命(Standby) • 執行中(Running) • 等待(Waiting) • 轉換(Transition) • 終結(Terminated)

  45. Solaris • 一般UNIX的行程,包括使用者位址空間、堆疊,以及行程控制區塊 • 使用者層級的執行緒 • 輕量級行程 (LWP) • 核心執行緒

More Related