570 likes | 774 Views
執行緒、 SMP 與微核心 Threads, SMP and Microkenels. 第 4 章. 行程 Process. 資源的擁有權 : 行程會包含一塊虛擬位址空間,來保存行程映像 (Process Image) Process Image: Program, Data, Stack, PCB 排程 / 執行:隨著執行路徑 (Trace) ,可能會與其他行程交錯執行 這兩個特徵是相互獨立的,並且可以被作業系統分開處理. 行程 Process.
E N D
行程Process • 資源的擁有權:行程會包含一塊虛擬位址空間,來保存行程映像(Process Image) • Process Image: Program, Data, Stack, PCB • 排程/執行:隨著執行路徑(Trace),可能會與其他行程交錯執行 • 這兩個特徵是相互獨立的,並且可以被作業系統分開處理
行程Process • 分派動作的單位(Unit of Dispatching)通常被稱為執行緒(Thread)或輕量級行程(Lightweight Process) • 資源擁有權的單位則被稱為行程(Process)或工作(Task)
多重執行緒Multithreading • 作業系統在單一行程內執行多個執行緒(Thread)的能力 • MS-DOS支援單一執行緒 • 傳統的UNIX支援多個使用者行程,但是每個行程只能有一個執行緒 • Windows、Solaris、 Linux、Mach和OS/2等作業系統都支援多重執行緒
多重執行緒 Multithreading • 行程 Process • 一塊用來存放行程映像的虛擬位址空間 • 保護對處理器、其他行程、檔案,以及I/O資源(裝置和通道)的存取動作 • 執行緒 Thread • 執行狀態 (執行中、備妥等) • 不在執行中時所儲存的執行緒序文(Thread Context) • 一個執行堆疊 • 執行緒個別的靜態儲存空間,存放區域變數 • 行程的記憶體和資源存取資訊,所有執行緒共用
執行緒的好處Key Benefits of Threads • 花的時間比建立全新的行程短 • 建立新執行緒比建立新行程快10倍 • 終止一個執行緒比終止一個行程花費較少的時間 • 在同一行程中進行兩個執行緒的切換,所花費的時間較少 • 因為在同一個行程內的各個執行緒會共用記憶體和檔案,因此它們能彼此進行溝通,不需要呼叫核心程式
在單使用者多重處理系統中使用執行緒 • 前景及背景工作(Foreground and Background Work) • 非同步的處理(Asynchronous Processing) • 加速執行(Speed of Execution) • 模組化程式結構(Modular Program Structure)
多重執行緒 • 暫停某個行程牽涉到暫停此行程所有的執行緒,因為所有執行緒都共用相同的位址空間 • 終結某個行程也會終結行程中的所有執行緒
執行緒的狀態Thread States • 與執行緒狀態轉換相關的基本動作 • 繁衍 (Spawn) • 繁衍出其它執行緒 • 懸置(Block) • 解除懸置(Unblock) • 完成(Finish) • 釋放暫存器序文資訊及堆疊
執行緒同步Thread Synchronization • 同一行程的多個執行緒共用位址空間與資源 • 共用變數 • 開啟的檔案 • … • 變動共用資源的內容時,必須同步 • 避免兩個執行緒同時對一個鏈結串列插入新節點
使用者層級執行緒與核心層級執行緒User-Level and Kernel-Level Threads • 使用者層級執行緒(User-Level Thread, ULT) • 核心層級執行緒(Kernel-Level Thread, KLT) • 核心支援執行緒(Kernel-Supported Thread) • 輕量級行程(Lightweight Process)
使用者層級執行緒User-Level Thread • 所有的執行緒管理工作都由應用程式負責 • 核心並不知道執行緒的存在
使用者層級執行緒User-Level Thread • 優點 • 執行緒切換(Thread Switching)不需要核心,節省時間與工作量 • 可以針對個別應用程式進行排程 • 可以在任何作業系統執行 • 缺點 • 任何一個執行緒執行系統呼叫,整個行程被懸置 • 多重執行緒無法獲得多重處理的支援,任何一個行程內,每次只能執行一個執行緒
核心層級執行緒Kernel-Level Thread • Windows是使用這種方式 • 核心程式會為此行程及該行程內的執行緒維護序文資訊 • 排程工作是以執行緒為基礎
在VAX機器上執行類似UNIX的作業系統 • KLT 即使在同一行程內,從一個執行緒切換到另外一個執行緒,都必須先切到核心模式 • Null Fork:只計算行程/執行緒被產生、排程、執行、完成的時間 • Signal-Wait:兩個執行緒間處理同步作業所需的時間
合併使用Combined Approach • Solaris是最常見的例子 • 執行緒的建立是在使用者空間內完成 • 單一行程的 ULT 對應到數個(小於等於)KLT • 多個執行緒可以在多個處理器上執行
對稱式多重處理Symmetric Multi-Processing(SMP) • 電腦系統的分類 • 單指令單資料串流(Single Instruction Single Data, SISD) • 單一處理器執行單一指令串流,來處理儲存在單一記憶體內的資料 • 單指令多重資料串流(Single Instruction Multiple Data, SIMD) • 每個指令都是在不同處理器上處理不同的資料集合
對稱式多重處理Symmetric Multi-Processing(SMP) • 電腦系統的分類 • 多重指令單資料串流(Multiple Instruction Single Data, MISD) • 一連串的資料被傳送到一組處理器內,並且每個都執行不同的指令序列。這種結構從未被實作過 • 多重指令多重資料串流(Multiple Instruction Multiple Data, MIMD) • 一組處理器同時針對不同的資料集合,執行不同的指令序列
Distributed Memory Shared Memory Master/Slave Cluster
對稱式多重處理SMP • 核心程式能在任何處理器上執行 • 通常每個處理器都可以在可用行程或執行緒的集區中自己進行排程
SMP Organization • 每一個處理器有自己的的控制單元、數學邏輯單元、暫存器 • 共用記憶體、I/O裝置 • 記憶體支援同時存取
多處理器作業系統的設計考量 • 同時處理的行程或執行緒 • Reentrant:多個處理器同時執行同一段程式碼不出問題 • 排程:Avoid Conflict • 同步:Enforce Mutual Exclusion and Event Ordering • 記憶體管理:Multi-port Memory • 可靠度及容錯(Reliability and Fault-Tolerance) • Graceful Degradation
微核心Microkernel • 小型的作業系統核心 • Mach Operating System • 只包含絕對必要的核心作業系統功能 • 許多原本屬於作業系統一部份的服務,現在都成為外部子系統 • 裝置驅動程式 • 檔案系統 • 虛擬記憶體管理程式 • 視窗處理系統 • 安全功能服務
Monolithic Kernel Layered Kernel Microkernel
微核心結構的好處 • 一致化的介面(Uniform Interface) • 不需要特別區分核心層級與使用者層級的服務 • 所有服務都是由訊息傳遞的方法所提供 • 擴充性(Extensibility) • 允許加入額外的新服務 • 彈性(Flexibility) • 可加入新功能 • 現有的功能也可以被去除
微核心結構的好處 • 可攜性(Portability) • 將系統移植到其它處理器所需進行的變更是在微核心中,不是在其他服務中 • 可靠性(Reliability) • 模組化設計 • 小型的微核心程式可以被嚴密的測試
微核心結構的好處 • 支援分散式系統(Distributed System Support) • 不需要知道目標服務是在哪台機器上,也可以傳送訊息 • 物件導向作業系統(Support for Object-Oriented Operating System) • 元件是具有清楚定義介面的物件,它們可以像積木一樣彼此連結來建構軟體
微核心的效能 • 訊息傳遞比直接呼叫API耗費更多時間 • 改良 • 擴張微核心,減少使用者模式與核心模式切換的次數 • 提高行程間通訊的效率
微核心的設計 • 低階記憶體管理 • 負責對映虛擬分頁與實體頁框 • 支援外部分頁程式 • Grant:將部份分頁送給其他行程 • Map:將位址空間對應到其他行程的分頁 • Flush:將送出去的分頁取回
低階記憶體管理 External Pager
微核心的設計 • 行程之間的通訊(Inter-process Communication) • 訊息(Message):包含 Header 和 Body • 通訊埠(Port):識別訊息佇列 • I/O與中斷的管理 • 微核心不處理中斷 • 將中斷以訊息的方式送交使用者層級的行程處理
Windows行程 • 被實作為物件 • 可執行的行程可包含一個或一個以上的執行緒 • 行程與執行緒的物件都有內建的同步功能
Access Token Virtual Address Descriptor Handle Section
Windows 2000執行緒狀態 • 備妥(Ready) • 待命(Standby) • 執行中(Running) • 等待(Waiting) • 轉換(Transition) • 終結(Terminated)
Solaris • 一般UNIX的行程,包括使用者位址空間、堆疊,以及行程控制區塊 • 使用者層級的執行緒 • 輕量級行程 (LWP) • 核心執行緒