Windows2000启动时加载的系统支持进程
该文章讲了一个.exe文件的启动过程,文中提到windows explorer.exe是一
切用户应用程序的创建者。那么读者会想到是谁创建了explorer.exe呢?下面我就就window
s2000平台来说一说。(我用的是Windows2000Server).
Windows2000Server启动时引导程序(Ntldr.dll)将操作系统内核加载到内存中,然后开始
执行内核,创建系统核心进程和线程来完成操作系统内部的初始化。接下来创建的进程就和
我们息息相关了,Windows2000Server提供了一个察看进程之间关系的工具tlist/t命令。下
面我们就看一看这个工具能为我们作什么。
C:\>tlist/t
系统过程(0)
系统(2)
smss.exe(20)
csrss.exe(30)
WINLOGON.exe(34)
SERVICES.exe(40)
//Userinit.exe
explorer.exe(87)
CMD.exe(156)
TLIST.exe(174)
看到了吧,系统启动时创建的大多数支持进程都在这了,下面我就一个一个解释一下他们的
功用。
(1)System Process(0):其实是系统建立的一个idle进程,它的进程id总为0。该进程和下面
的System进程不是真正运行在用户态,所以他的名称因不同的观察程序而不 同,用tlist/t
得到的名称 是System Process,该进程是系统的idle线程的宿主。
(2)System(2):该进程是内核定义的系统线程的宿主,所谓系统线程是具有一般用户线程所
有属性和描述表 (context)的但却只能运行在核心态的一种特殊线程,它不占用用户进程
地址空间,必须从系统的内存堆中分配动态存储区。
(3)smss.exe(session manager,会话管理器)其实是系统建立的第一个用户进程,它由运行在
核心态的核心系统线程ExInitializeSystem创建,它负责执行一些系统的初始化操作,这里
不详述,对我们来说他的最大功劳在于它启动了子系统进程csrss.exe和登录进程WINLOGON.
exe;之后该进程的主线程将无限期等待csrss.exe和
WINLOGON.exe两进程的句柄,如果这两个进程意外终止,smss.exe将使系统崩溃。
(4)csrss.exe(子系统进程)将负责管理windows2000的主子系统---win32子系统。
(5)WINLOGON.exe(系统登录进程):负责处理用户登录和注销的内部活动。其次它负责启动S
ERVICES.exe---系统服务器进程和LSASS.exe---本地安全身份验证服务进程 ,你可以回顾一
下系统的启动过程,当登录界面出现后,用户输入用户名和密码,按"确定"后,通知系统登录
进程,要求登录。WINLOGON.exe截获用户名和密码,将它们发送到本地安全身份验证服务进
程进行验证,如果确认合法,则创建一个Userinit.exe ----用户环境初始化进程,它先执行
用户环境的初始化,然后察看注册表中的shell的值,然后运行该值下的进程(缺省为:expl
orer.exe),然后,该进程退出系统,这也是我在上面的Userinit.exe前面加上//的原因,因
为用tlist/t是不能显示出该进程的。WINLOGON.exe平时是挂起状态的,但当从键盘截取到c
trl+alt+del时,它将被激活。
(6)SERVICES.exe:负责启动/停止windows2000服务(即与服务控制器交互)。
(7)LSASS.exe:接收来自WINLOGON.exe的验证请求并予以验证,若成功,将生成一个包含用户
安全配置文件的访问令牌对象,WINLOGON.exe随后将用这个令牌去初始外壳对象(explorer.
exe)创建.然后由该外壳创建的进程都将会默默的继承该令牌。
(8)explorer.exe进程和其子进程是所有应用程序的创建者。
以上是Windows2000启动时加载的系统支持进程,这里也只是简单介绍一下,希望对读者们有
帮助。
bigwhite