深入解析Windows操作系统(Windows Internals) 4th Edition 读书笔记 - 第二章 系统结构 (三)

 

硬件抽象层(HAL

HAL是支持可移植性的关键部分,它提供硬件平台的低层接口,隐藏了与硬件相关的细节。

Windows内部组件及用户编写的设备驱动程序并不直接访问硬件;它们通过调用HAL例程来保持可移植性。

Windows自带了几个不同的HAL,在安装时选择与硬件匹配的HAL拷贝到系统盘上,名为上Hal.dll。因此,如果把安装了Windows的硬盘直接插在另一台机器上启动,必须保证HAL的兼容性。

/Windows/Driver Cache/i386/Driver.cab里存有Windows自带的几种HAL文件。

 

设备驱动程序

设备驱动程序是可加载的内核模块,它们在I/O管理器和硬件之间建立起连接。

设备驱动程序的三种执行环境:

l         在发起I/O功能的用户线程环境中

l         在内核模式系统线程的环境中

l         作为一中断的结果,不在任何特定的进程或线程的执行环境中

设备驱动程序的类型:

l         硬件设备驱动程序

l         文件系统驱动程序

l         文件系统过滤器驱动程序

l         网络重定向器和服务器

l         协议驱动程序

l         内核流式过滤器驱动程序

编写设备驱动程序是访问操作系统内部函数和数据结构的简便方法。Sysinternals的许多工具就是由一个Windows GUI应用程序和驱动程序组成。

 

Windows驱动程序模型

驱动程序模型有三种:

l         总线型驱动程序:为总线控制器、适配器等提供服务。Microsoft会为各种总线类型(PCIUSB等)提供驱动程序。

l         功能型驱动程序:主要的设备驱动程序,为硬件设备提供接口。

l         过滤型驱动程序:为某一设备增加或修改功能。一般来说,低层次的过滤型驱动程序改变硬件的行为,高层次的过滤型驱动程序提供一些增值特性。

对某一设备而言,可能会有多种上述类型驱动程序同时存在。

 

内核函数常用前缀

Prefix

Component

Cc

Cache manager

Cm

Configuration manager

Ex

Executive support routines

FsRtl

File system driver run-time library

Hal

Hardware abstraction layer

Io

I/O manager

Ke

Kernel

Lpc

Local procedure call

Lsa

Local security authentication

Mm

Memory manager

Nt

Windows system services (most of which are exported as Windows functions)

Ob

Object manager

Po

Power manager

Pp

PnP manager

Ps

Process support

Rtl

Run-time library

Se

Security

Wmi

Windows Management Instrumentation

Zw

Mirror entry point for system services (beginning with Nt) that sets previous access mode to kernel, which eliminates parameter validation, because Nt system services validate parameters only if previous access mode is user

 

系统进程

空闲(Idle)进程:每个CPU一个线程,占用空闲CPU时间

System进程:包含内核模式系统线程

会话管理器(Smss.exe

Windows子系统(Csrss.exe

登录进程(Winlogon.exe

服务控制管理器(Services.exe)和它的子服务进程(如Svchost.exe

本地安全认证服务器(Lsass.exe

 

空闲进程

空闲进程是一个特殊的进程,没有一个实际运行的映像文件与这对应。在不同的工具中,该进程显示名称会有所不同。

 

中断和DPC

Process Explorer里,“Interrupts”和“DPCs”被显示为单独的两行,但它们都不是实际的进程。这两行用来显示中断和延迟过程调用所消耗的时间。在Windows任务管理器里没有这两项显示。

 

System进程和系统线程

System进程是系统线程的母体。这些系统线程只能在内核模式下运行,它们运行的代码可能是在Ntoskrnl.exe中或设备驱动程序中。在Process Explorer中,可以看到System进程中有哪些系统线程。通过观察这些系统线程CPU使用情况,可以诊断哪些驱动程序比较忙。

 

会话管理器

会话管理器进程(/Windows/System32/Smss.exe)是系统中第一个用户进程,由内核线程创建。

会话管理器创建子系统进程(crss.exepsxss.exe)Winlogon进程。Winlogon依次创建其他进程。

HKLM/SYSTEM/CurrentControlSet/Control/Session Manager下面是会话管理器的配置信息。

 

WinlogonLSASSUserinit

Winlogon处理用户的登录和注销,默认的登录界面是在msgina.dll中实现,用户可以替换此dll来实现自己的登录界面。

LSASS处理用户口令的认证,它也是调用一个dll来执行实际的认证操作。认证通过后会产生一个访问令牌对象。Winlogon利用此令牌创建用户会话中的初始进程。

用户会话初始进程名被保存在注册表HKLM/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Winlogon/Userinit键中,默认为userinit.exe程序。

Userinit执行用户环境的初始化工作,然后查询注册表HKLM/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Winlogon/Shell键的值,默认为Explorer.exe,启动它。然后Userinit进程退出。因此Explorer.exe进程没有父进程。

 

 

服务控制管理器

服务控制管理器负责启动、停止系统服务。映像文件是/Windows/System32/Sfervices.exe。注册表HKLM/SYSTEM/CurrentControlSet/Services下定义了系统的服务。

服务有三个名称:进程名、注册表中的内部名称和显示名。

Tlist /s命令可以显示进程所包含的服务。

 

以上各系统进程启动顺序参见http://blog.csdn.net/qwang24/archive/2009/05/16/4193498.aspx。

你可能感兴趣的:(windows,validation,Microsoft,读书,System,Parameters)