Windows 线程的数据结构
operating systemwindowsmca更新于 2026/2/6 5:22:17
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 线程的数据结构