Windows執行緒的資料結構


Windows實現了Windows API,這是Microsoft作業系統系列(Windows 98、NT、2000和XP,以及Windows 7)的主要API。基本上,Windows應用程式作為單獨的程序執行,每個程序可能包含一個或多個執行緒。此外,Windows使用一對一的對映,其中每個使用者級執行緒都對映到一個關聯的核心執行緒。執行緒的一般元件包括:

  • 唯一標識執行緒的執行緒ID

  • 一組暫存器,表示處理器的狀態

  • 一個使用者棧(執行緒在使用者模式下執行時使用)和一個核心棧(執行緒在核心模式下執行時使用)

  • 各種執行時庫和動態連結庫 (DLL) 使用的私有儲存區。暫存器集、堆疊和私有儲存區稱為執行緒的上下文。

執行緒的主要資料結構包括:

  • ETHREAD - 執行執行緒塊
  • KTHREAD - 核心執行緒塊
  • TEB - 執行緒環境塊

ETHREAD 的基本組成部分包括指向執行緒所屬程序的指標以及執行緒開始控制的例程的地址。ETHREAD 還包含指向相應 KTHREAD 的指標。KTHREAD 包含執行緒的排程和同步資訊。此外,KTHREAD 包含核心堆疊(執行緒在核心模式下執行時使用)和指向 TEB 的指標。ETHREAD 和 KTHREAD 完全存在於核心空間中;這意味著只有核心才能訪問它們。TEB 是一個使用者空間資料結構,線上程在使用者模式下執行時訪問。TEB 包含執行緒識別符號、使用者模式堆疊和執行緒區域性儲存的陣列等欄位。下圖說明了 Windows 執行緒的結構:

圖:Windows XP 執行緒的資料結構

更新於:2019年10月17日

536 次瀏覽

啟動你的職業生涯

完成課程獲得認證

開始學習
廣告