1 / 42

第四章 執行緒、對稱式多重處理及微核心 4.1 處理程序與執行緒 (Process and thread)

第四章 執行緒、對稱式多重處理及微核心 4.1 處理程序與執行緒 (Process and thread). 更進階的 Process 觀念,應分開為二個獨立的概念: 資源擁有權單位 (resource ownership) : Process 會分配到虛擬位址空間,放置 process 的 image ; 被配置主記憶體及其他資源的控制權,例如: I/O 裝置及檔案。 排程 / 執行 (scheduling/execution) :

trevet
Download Presentation

第四章 執行緒、對稱式多重處理及微核心 4.1 處理程序與執行緒 (Process and thread)

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. 第四章 執行緒、對稱式多重處理及微核心4.1 處理程序與執行緒(Process and thread) • 更進階的Process觀念,應分開為二個獨立的概念: • 資源擁有權單位(resource ownership): • Process會分配到虛擬位址空間,放置process的image; • 被配置主記憶體及其他資源的控制權,例如:I/O裝置及檔案。 • 排程/執行 (scheduling/execution): • Process是單一或多個程式的執行路徑。(process is an execution path through one or more programs) • 此執行可被插入其他process的執行路徑中。(execution may be interleaved with other process) • Process具備執行狀態及分派優先權(dispatching priority)。 • 目前發展的作業系統中,均已區別這兩個概念: • 資源擁有權單位:process或task • 分派單位:thread或輕量級process (lightweight process)

  2. Multithreading • Multithreading vs. Single threading • Multithreading: 一個單一process中執行多個thread。(multiple threads of execution within a single process) • Single threading:一個process中執行單一thread。 • 四種情形及其作業系統 • MS-DOS支援單一使用者process及單一thread。 • 傳統UNIX支援多個使用者process但僅支援每一process單一thread。 • Java虛擬機器是單一process多個thread的系統。 • Windows 2000, Solaris, Linux, Mach及OS/2支援多個process多個thread。 • 在multithreaded環境中 • process的定義:資源分配及保護的單位。 • thread包括:執行狀態、thread context(序文)、儲存thread環境的空間、執行堆疊、可和此process中其他thread共享的記憶體及資源。

  3. (Java Machine) (MS-DOS) (Traditional Unix) (Windows 2000, Solaris, Linux, Mach, OS/2) 3

  4. 4

  5. Thread的特點 • Process的所有thread • 共享此process的狀態及資源。 • 存在於相同位址空間,存取相同的資料。 • 舉例:某一thread改變記憶體的資料或以讀取權打開檔案。 • thread同步(synchronization):使共用資料或資源的thread,彼此間不會相互干擾。(見第5、6章) • thread的關鍵優點:效能 • 在已存在的process建立新的thread,比建立新的process花費較少的時間。(Mach的設計者發現與沒有thread的Unix相比,建立thread與建立process,效率相差10倍。) • 終止一個thread比終止一個process,花費的時間較少。 • 同一process的兩個thread的切換,僅需較少的時間。 • 在SMP機器上,數個thread可分配在不同處理器上執行。 • 提高process間通訊(IPC)的效率: IPC通常需要核心的介入;同一process中的thread則不需核心即可溝通。

  6. Thread的使用及狀態 • Thread的使用,在單一處理器上也很有用,以單一使用者多process系統為例: • 前景及背景工作(foreground and background work):例如:試算表軟體,前景(輸入資料)、背景(更新試算表) 。 • 非同步的處理(asynchronous processing): process中非同步的部分,以thread執行。例如:文書處理軟體,將定期備份由一thread執行,由系統自行排定。 • 加速執行(speed execution):在讀入下一筆資料時,同時計算目前這筆資料。 • 模組化程式結構(modular program structure):包含數個行為或數個I/O來源及目的的程式,使用thread可以較容易的設計。 • Thread狀態: • 主要為:執行中(Running)、備妥(Ready)、懸置(Blocked) • thread狀態不包括暫停(Suspend),暫停為process層次的觀念。 • 一個thread被懸置,不會影響到其他thread。 • 改變執行緒狀態的基本動作: 產生(spawn)、懸置(block)、解除懸置(unblock)、完成(finish)。

  7. Thread用於RPC • 對兩個不同主機做兩個遠端程序呼叫(Remote Procedure Call, RPC) 。 • (a) 依序等待伺服器回應。 • (b) 每個RPC使用一個thread。 Figure 4.3 Remote Procedure Call (RPC) Using Threads

  8. Running Figure 4.4 Multithreading Example on a Uniprocessor 8

  9. 使用者層級(User-Level) Thread (ULT) • 應用程式自行管理thread • 核心不會察覺thread的存在。 • 任何應用程式可靠使用thread 函式庫(library),達到multithread。 • thread 函式庫包括: • 建立及破壞thread; • 在thread間送訊息及資料; • thread排程; • 儲存及回存thread context(執行緒序文)。 • 控制權切換 • 當控制權轉移到函式庫:目前thread的序文被儲存。 • 當控制權由函式庫轉到thread:thread的序文被復原。

  10. Figure 4.7 Examples of the Relationships Between User-Level Thread States and Process States 10

  11. Figure 4.7 Examples of the Relationships Between User-Level Thread States and Process States 11

  12. User-Level Threads 的優缺點 • 優點 • Thread切換並不須核心模式特權。 • 排程可以有應用程式的特性。 • User-Level Threads可在任何作業系統中執行。 • 缺點 • 大部份系統呼叫有懸置性質(blocking),因此,當thread執行系統呼叫,除了此thread被懸置外,其餘thread也會遭懸置。 • 在對稱式多處理器(SMP)系統,核心只能配置一個處理器給一個process。在同一process中的多個thread,無法同時執行。 • 解決方法(1):將thread對應到process (減損thread的優點) • 解決方法(2):包覆(jacketing): 將懸置性質的I/O轉成非懸置性質。 • 先判斷是否忙碌,若是則thread進入預備狀態,且將控制權讓出。 • 待下次得到控制權後,再次檢查I/O裝置。

  13. 核心階層(Kernel-Level) Thread (KLT) • 核心管理thread • 提供thread相關應用程式介面(API) • Windows 2000, Linux, OS/2 • 任何應用程式可以被設計成multithread。

  14. Kernel-Level Threads 的優缺點 • 優點 • 核心能同時將同一process的數個thread安排在數個處理器上。 • 如果process中的一個thread被懸置,同一process的其他thread未被懸置(仍可執行)。 • 核心程式本身也可以是multithread。 • 缺點 • 控制權由同一process的一個thread轉到另一個時,要做模式轉換,切換到核心。 • 執行時間的差距:(單位s, 約差一個數量級)

  15. 結合ULT/KLT的方法 • 主要範例: Solaris • Thread的產生完全在使用者空間。 • 一個應用程式的多個ULTs被規劃在一些(更少或同數量)KLTs上。 • 程式設計者可以為一個特別的應用程式及機器,調整KLTs的數量,以達到最好的效能。 • 適當的設計,可以結合二者之優點,並減少缺點。

  16. Process 與Thread的對應關係

  17. 4.2 對稱性多重處理(Symmetric Multiprocessing) • 計算機系統的分類 • 單指令單資料 (Single Instruction Single Data, SISD):(循序處理) • 單指令多重資料 (Single Instruction Multiple Data, SIMD) • 多重指令單資料 (Multiple Instruction Single Data, MISD):(未被實作)。 • 多重指令多重資料 (Multiple Instruction Multiple Data, MIMD) Figure 4.8 Parallel Processor Architectures

  18. SMP的組織 • 每一處理器有一Cache。 • 快取連貫性(cache coherence):如果快取的一個字組被改變了,該字組在其他cache的值應為無效。 • 此被歸為硬體問題。 Figure 4.9 Symmetric Multiprocessor Organization

  19. 多重處理器(multiprocessor)作業系統的設計考量 • 同時並行的處理程序或執行緒(simultaneous concurrent processes or threads) • 核心常式必須是可重進入的(reentrant) • 核心的表格和管理結構,必須適當地管理以避免死結或無效的動作。 • 排程(scheduling): 避免“碰撞”(對同一處理程序的多個執行緒進行排程)。 • 同步(synchronization): 多個活動中的process可能對共享的位址空間或共享的I/O資源進行存取, • 同步處理: 強迫互斥(mutual exclusion)的機制。 • 記憶體管理(memory management) • 可靠度及容錯(reliability and fault tolerance)

  20. 4.3 微核心 (Microkernel) • 微核心:一個小型的作業系統核心,提供模組延伸的基礎。 • 核心要多小才是微核心? • 如何設計裝置驅動程式以獲得最佳的效能? • 實例: • Mach: 提供高度的彈性(flexibility)及模組化(modularity)。 • Windows 2000: 具備模組化及可攜性(portability)。 • 階層式的方法: 交互作用發生在鄰近的階層之間,大部分或全部的階層都在核心模式下執行。 • 微核心架構: 將作業系統傳統的垂直階層化,轉變成水平的結構。 • 只有絕對必要的核心作業系統功能才需要放入核心程式之內, • 較不必要的服務及應用程式被建立在微核心的上層。

  21. Figure 4.10 Kernel Architecture 22

  22. 微核心組織之益處 • 制式的介面:所有服務的提供,皆由訊息傳遞(message passing) 。 • 擴充性(Extensibility):允許新功能的加入,容易加入或修改伺服器(server) 。 • 彈性(Flexibility):現有之特性亦可刪減。 • 可攜性:所有處理器特定(processor-specific)的程式碼皆在微核心中,移植至其他處理器所需之改變將減少。 • 可靠性:一個小的微核心可被精密的測試。 • 支援分散式系統:訊息傳遞為分散式系統的基本機制。 • 支援物件導向作業系統:利用元件(component),元件為具有清楚定義介面的物件。

  23. 微核心效能 • 微核心必須花費更多時間來傳送訊息、接收、解讀、回覆。 • 選擇性增加微核心功能,可減少使用者、核心之切換及位址空間、process切換。 • 缺點:犧牲微核心設計原有之優點:最少的介面、彈性等。 • 使微核心縮小 • 經過適當設計的非常小的微核心,可消除對效能之損害、增進彈性及可靠性。 • 第一代微核心:300 KB程式碼、140個系統呼叫。 • 第二代微核心:12 KB程式碼、7個系統呼叫。 • 使用經驗指出:其效能與Unix相同或更佳。

  24. 微核心設計 • 不同微核心有不同之功能及大小。 • 本節提出最少的微核心功能及服務。 • 微核心必須提供和硬體直接相關,且支援使用者模式之伺服器及應用程式。 • 功能分類:基本記憶體管理、Process間通訊(IPC) 、I/O及中斷管理 • 低階記憶體管理 • 微核心必須控制硬體之位址空間概念,以使其能實作出process階層的保護機制。 • 將每一虛擬分頁(page)對應至實體頁框(frame) 。 • 大部分的記憶體管理機制均可於核心外實作,包括:保護process的位址空間、頁面置換取代演算法、分頁邏輯。

  25. 外部分頁之動作 • 應用程式參考不在主記憶體的分頁,產生分頁錯誤(page fault) ,控制權轉至核心。 • 核心傳送訊息至分頁處理器(pager) ,指出哪個分頁已被參考。 • 分頁處理器載入此分頁,配置頁框給它。分頁處理器及核心相互合作將分頁對應至實體記憶體。 • 一但此分頁可用,分頁處理器將傳送“重新開始”訊息給應用程式。 Figure 4.11 Page Fault Processing

  26. 外部分頁微核心指令 • 三個支援外部分頁及虛擬記憶體之微核心指令: • Grant (授與):位址空間之擁有者,可將一些分頁授與其他process。 • Map (對映):process可將其擁有之分頁,對應至其他process的位址空間,使得二個process都可以存取這些頁面。 • Flush (清除):process可索回已授與或對應至其他process之分頁。 • 分頁微核心指令之使用 • 一開始全部實體記憶體由一系統process所控制(單一位址空間) 。 • 有新process產生,原有位址空間之分頁便可授與或對映至新process。 • 可同時支援多種虛擬記憶體技術。 • 應用程式相關之記憶體共享可實作於核心之外。

  27. Process間通訊(IPC) • Process或Thread間基本的通訊形式:訊息。 • 訊息包含: • 表頭(header):識別傳送及接收之process。 • 本體(body):資料、指向一資料區塊的指標、process有關之控制資訊。 • IPC可視為伴隨process的(通訊)埠(port)為基礎。 • 本質上:訊息佇列。 • 附帶通訊能力清單:哪個process具有和此process通訊之能力。 • process可傳送訊息至核心,授與其他process和它通訊之能力。 • 埠的識別碼及通訊能力清單由核心保存。

  28. I/O及中斷管理 • 微核心架構中,硬體中斷的處理視為訊息來處理: • 發生中斷,控制權轉至微核心。 • 微核心產生一訊息給與此中斷有關的User-Level process。 • 微核心將中斷轉換成訊息,但並不處理(和裝置相關之)中斷。

  29. 4.4 Windows 2000 Thread 及SMP 管理 • Windows 2000(W2K)的設計提供各種作業系統環境支援。 • W2K核心所提供之原始process結構及服務,相對而言簡單及基本。 • 允許每一作業系統之子系統,發展其獨特的process結構及功能。 • W2K process的特性 • 實作成物件。 • 一可運作的process必須包含一個以上的thread。 • Process及thread物件均擁有內建之同步特性。

  30. W2K Process 及其資源 (存取標記) (虛擬位址空間描述) (僅有一thread) (存取的檔案) (共享記憶體區段) Figure 4.12 W2K Process and its Resources

  31. Process 及Thread 物件 (物件型別) (物件屬性) 可能執行(喜好)的處理器的集合 (服務) 32

  32. Thread 狀態 Figure 4.14 Windows 2000 Thread States

  33. 4.5 Solaris Thread 及SMP 管理 • Solaris 2.x使用下列四種thread相關概念: • Process:一般Unix process。 • User-level (使用者層級) Thread:由thread library來實現。 • Lightweight (輕量級) Process:支援多個User-level Thread,對應至一核心Thread。 • Kernel (核心) Thread:排班與分派給處理器執行的實體。

  34. 35 Figure 4.15 Solaris Multithreaded Architecture Example

  35. Figure 4.16 Process Structure in Traditional UNIX and Solaris 2.x [LEWI96] 36

  36. (被先佔) Figure 4.17 Solaris User-Level Thread and LWP States 37

  37. 4.6 Linux處理程序與執行緒的管理 • 處理程序或工作(task)是以task_struct結構來表示。 • Linux維護了一個稱為task的表格,含有指向目前被定義的每個task_struct的指標。 • Linux的執行緒 • 藉由複製目前的處理程序的屬性,新的處理程序可以被建立。 • 新的處理程序可以被複製(cloned)使它能共享資源,例如: 檔案、訊號處理程式,以及虛擬記憶體。 • 當二個處理程序共享了相同的虛擬記憶體時,它們就像是單一處理程序之內的執行緒一樣運作。 • 然而,並沒有任何不同的資料結構的型式提供給執行緒使用,因此,Linux的執行緒和處理程序之間並無分別。

  38. (已停止) (執行中) (備妥) (殭屍) (不可中斷) Figure 4.18 Linux Process/Thread Model (可中斷) 39

  39. [補充] Intel Hyper-Threading Technology • The Intel Pentium 4 processor at 3.06 GHz or higher • An Intel® chipset that supports HT Technology • System BIOS supports HT Technology and has it enabled • An operating system that includes optimizations for HT Technology: • Microsoft* Windows* XP Professional Edition • Microsoft* Windows* XP Home Edition

  40. HT -- Introduction • HT Technology makes a single processor act like multiple processors to the operating system. • HT Technology delivers two logical processors that can execute different tasks simultaneously using shared hardware resources. • HT Technology–enabled processor won't equal the computing power of two physical processors. • The newly announced Intel® Pentium® 4 processor with Hyper-Threading Technology† is delivering performance increases of up to 25 percent on desktop platforms.

  41. Figure. Two Logical Processors in One Physical Package. 42

More Related