读书频道 > 系统 > windows > Windows内核原理与实现
2.2.4 系统线程和系统进程
2013-05-18 14:19:36     我来说两句 
收藏    我要投稿   

本文所属图书 > Windows内核原理与实现

本书从操作系统原理的角度,详细解析了Windows如何实现现代操作系统的各个关键部件,包括进程、线程、物理内存和虚拟内存的管理,Windows中的同步和并发性支持,以及Windows的I/O模型。在介绍这些关键部件时,本...  立即去当当网订购

在Windows 中,每个线程代表一个指令执行序列,同时也是一个调度单元;进程定义了一个执行环境,有自己独立的地址空间。每个线程都必定依附于一个进程。Windows内核除了接受来自应用程序的系统服务调用,它自己也有一些线程用于各种用途。这些线程运行在一个特殊的进程环境中,称为System 进程。为区分该进程与本节下文即将介绍的操作系统关键进程,本书将前者称为 System 进程,而将后者称为系统进程。System 进程的线程被称为系统线程,其中有一组系统辅助线程(system worker thread ),它们代表操作系统或者其他的应用进程来完成一些特殊的工作。

设备驱动程序或执行体既可以在调用者进程中创建线程,也可以在System 进程中创建线程。或者,也可以不创建任何一个线程,而是调用执行体函数ExQueueWorkItem 或I/O 管理器函数IoQueueWorkItem ,向系统辅助线程请求得到它们的服务。这两个函数负责把一个工作项目(WorkItem)放到一个队列中,而系统辅助线程将从此队列提取工作项目,并执行工作项目中指定的一个例程。因此,工作项目中的例程是在System 进程的环境中执行的,它不能访问其他进程空间中的数据。

系统辅助线程实际上是一个线程池,Windows 在系统初始化时创建了一定数量的辅助线程,而且,随着辅助线程的负载的变化,执行体也会动态地创建一些辅助线程,以满足系统负载的变化需求。

除了系统辅助线程,内核中的许多组件也会创建系统线程来完成一些必要的工作,例如,内存管理器需要后台系统线程来监视和管理页面的换入和换出。另外,设备驱动程序也可以通过调用PsCreateSystemThread 函数来创建系统线程,以便完成一些并非依附于调用者进程空间的任务,例如网络驱动程序和文件系统驱动程序可以利用系统线程来完成一些必要的后台处理。注意,通过PsCreateSystemThread 函数来创建系统线程时也可以指定其他的进程作为系统线程的宿主进程,从而能够访问该进程地址空间中的数据,但默认的宿主进程是System 进程。在本书后面章节的讲述中,我们会提到一些特定任务的系统线程,甚至可以了解到它们在什么情况下是如何被创建的。

从进程的角度来看,Windows 有一组系统进程对于整个系统的运行来说是必不可少的,包括本章前面介绍过的子系统进程csrss.exe 。当Windows 操作系统引导起来,并且用户登录到系统中时,Windows 已经经过了一系列初始化过程,除了负责与用户交互的Shell 进程,还启动了诸多系统进程用于实现各种不同的系统任务。总体而言,以下这些系统进程在Windows 操作系统中扮演了重要的角色:

系统空闲进程(Idle )。该进程的 ID为0,其中每个处理器或核对应有一个线程。

System 进程。在 Windows XP和Windows Server 2003 中该进程的 ID为4 ,它包含了内核模式系统线程。正如本节上文所述,系统辅助线程,以及执行体和驱动程序通过PsCreateSystemThread 创建的线程,都在 System 进程中。

会话管理器(Session manager ,smss.exe )。这是 Windows 系统中第一个创建的用户模式进程。Smss在Windows 启动过程中承担了一些重要的步骤,例如创建环境变量等,尤为重要的是,它启动了子系统进程csrss.exe 和登录进程winlogon.exe。另外,会话管理器也负责创建新的终端服务器会话(terminal server session ),包括建立会话空间的数据结构,然后为新建的终端服务器会话加载子系统,启动 csrss.exe 和winlogon.exe。

登录进程(winlogon.exe)。它负责处理交互用户的登录和注销。当用户按下Ctrl+Alt+Del 组合键(称为安全注意序列[SAS,Secure Attention Sequence] )时,winlogon 就会接到登录请求,然后激发安全认证过程,并启动用户会话中的初始进程。在用户会话的任何时候,当用户按下了SAS 组合键时,winlogon 都会提示一个安全对话框,其中通常包含“注销”、“启动任务管理器”、“锁定计算机”、“更改密码”、“关机”等选项。

Windows 子系统进程(csrss.exe )。正如本章前文所提到的,Windows 子系统进程负责为用户提供一个子系统环境,包括提供控制台窗口的功能,以及创建或删除进程和线程。

本地安全权威子系统进程(lsass.exe )。它负责本地系统安全策略,例如允许哪些用户登录到本地系统中、口令策略、授予用户和用户组的特权,以及系统安全审计设置;同时也负责认证用户的身份,以及将安全审计消息发送到系统的事件日志(Event Log )中。

Shell进程(explorer.exe )。这是 Windows 的默认Shell,它提供了系统与用户打交道的各种界面,包括开始菜单、任务栏、资源管理器窗口等几乎所有Windows 用户都熟悉的界面。

服务控制管理器(services.exe )。它负责管理Windows 的系统服务,这里的系统服务是指一些特殊的进程,它们通常并不与登录用户进行交互,因而被配置成可以在系统引导时自动启动起来,无须交互登录过程。Windows 中有很多功能组件是以服务的方式来实现的,比如事件日志、任务调度器和各种网络组件等。

点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:2.2.3 Windows子系统
下一篇:2.3 关于Windows研究内核
相关文章
图文推荐
3.4.4 进程生命期管
3.4.2 Windows应用商
3.4.1 Windows应用商
3.4 进程生命期管理
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站