WEB开发网
开发学院软件开发VC Win32 系统线程信息块(TIB)浅析 阅读

Win32 系统线程信息块(TIB)浅析

 2009-03-05 20:02:37 来源:WEB开发网   
核心提示:原文出处:May 1996 Under The HoodWindows 操作系统各个版本之间虽然核心部分差异很大,但它们都共享一个关键的系统数据结构,Win32 系统线程信息块(TIB)浅析,许多程序员都没有加以关注,更精确地说,事实上,TIB 在 OS/2 和 Windows 之间不仅格式一样,这种共享是针对此数据结

原文出处:May 1996 Under The Hood

Windows 操作系统各个版本之间虽然核心部分差异很大,但它们都共享一个关键的系统数据结构,许多程序员都没有加以关注。更精确地说,这种共享是针对此数据结构的某些域。先不说差别,这个结构被广泛使用,甚至是被编译器产生的代码存取。没错,你的C++编译器产生代码直接存取系统级的信息。

到底是什么结构呢?这个结构至少有两个不同的名字。在 Windows 95 中称之为“线程信息块”(TIB:Thread Information Block)。在 Windows NT 中,它被称为“线程环境块”(TEB:Thread Environment Block)。但是,我看到在某些 Windows NT 都文件中也有叫 TIB 的,本文中我将它称之为 TIB 吧。

线程信息块中到底有什么东西呢?让它如此特别。顾名思义,TIB 中的数据肯定与线程有关,并且在系统中每个线程都对应有一个 TIB。在 Windows 各个版本共享的数据域中,你会发现:有一个指针指向线程结构化异常处理列表,线程堆栈的位置以及线程局部存储槽。TIB 中的其它信息域在 Windows 各个版本之间是不同的。

TIB 并不是在 Windows NT 或 Windows 95 第一次出现的,对此你可能会觉得奇怪。其实 TIB 的祖先是在 OS/2 中,在微软创建 Windows NT 之前就有了,并且至今都存在于 OS/2 中。事实上,TIB 在 OS/2 和 Windows 之间不仅格式一样,连存取方式都一样。在微软的头文件 NTDDK.H 中甚至有一行是这样写的:

<< begin snippet >>
// This structure MUST MATCH OS/2 V2.0!
<< end snippet >>

1 2 3 4 5 6  下一页

Tags:Win 线程

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接