在Windows中,每个线程代表一个指令执行序列,同时也是一个调度单元;进程定义了一个执行环境,由自己独立的地址空间。每个线程都必定依附于一个进程。Windows内核除了接受来自应用程序的系统服务调用,它自己也有一些线程用户各种用途。这些线程运行在一个特殊的进程环境中,称为System进程。为区分该进程与本节下文即将介绍的操作系统关键进程,本书将前者称为System进程,而将后者称为系统进程。System进程的线程被称为系统线程,其中有一组系统辅助线程,它们代表操作系统或其他的应用进程来完成一些特殊的工作。
设备驱动程序或执行体即可以在调用者进程中创建线程,也可以在System进程中创建线程。或者,也可以不创建任何一个线程,而且调用执行体函数ExQueueWorkItem或I/O管理器函数IoQueueWorkItem,向系统辅助线程请求得到它们的服务。这两个函数负责把一个工作项目(WorkItem)放到一个队列中,而系统辅助线程将从此队列提取工作项目,并执行工作项目中指定的一个例程。因此,工作项目中的例程是在System进程的环境中执行的,它不能访问其他进程空间中的数据。
系统辅助线程实际上是一个线程池,Windows在系统初始化时创建了一定数量的辅助线程,而且,随着辅助线程的负载的变化,执行体也会动态地创建一些辅助线程,以满足系统负载的变化需求。
除了系统辅助线程,内核中的许多组件也会创建系统线程来完成一些必要的工作,例如,内存管理器需要后台系统线程来监视和管理页面的换入和换出。另外,设备驱动程序也可以通过调用PsCre