windows第2-1章系统结构.ppt

上传人:max****ui 文档编号:10978107 上传时间:2020-04-16 格式:PPT 页数:48 大小:373.50KB
返回 下载 相关 举报
windows第2-1章系统结构.ppt_第1页
第1页 / 共48页
windows第2-1章系统结构.ppt_第2页
第2页 / 共48页
windows第2-1章系统结构.ppt_第3页
第3页 / 共48页
点击查看更多>>
资源描述
1 第二章Windows系统结构 2 1需求和设计目标2 2操作系统原型2 3总体结构可移植性 对称多处理器 可伸缩性 检查版本2 4关键的系统组件环境子系统 硬件抽象层HAL 设备驱动程序 系统进程 2 2 1 需求和设计目标 需求提供一个真正32位抢先式 preemptive 可重入 reentrant 虚拟内存操作系统 在多种硬件体系结构和平台上运行 运行在对称多处理器系统 symmetricmultiprocessingsystems 很好适应处理器数量 成为一个主要的分布式计算平台 含客户机和服务器 能运行大多数已有的16位MS DOS和Windows3 1应用程序符合POSIX1003 1兼容性要求 符合对操作系统安全性要求 支持Unicode 以易于适应全球市场 3 扩展性Extensibility 编写的系统代码必须能够随市场需求变化而自如增长和改变 可移植性Portability 必须能在多种硬件体系结构运行 根据市场需要容易移到新的体系结构上 可靠性和健壮性ReliabilityandRobustness 系统能保护自己 不因内部错误和外部篡改而停止工作 应用程序应该无法伤害操作系统或者其它应用程序 兼容性Compatibility用户界面和API应该与老Windows和MS DOS兼容 也能与其它系统很好地互操作 如UNIX OS 2和NetWare 性能Performance满足其它设计目标约束 在每一种硬件平台上尽可能运行得更快 对外部响应尽可能地及时 设计目标1 4 2 2操作系统模型 内核模式kernelmode操作系统内核代码运行在处理器的特权模式下 用户模式usermode应用程序代码运行在处理器的非特权模式下 用户模式程序调用一个系统服务 处理器捕获到该调用 将调用线程切换到内核模式 该服务完成 将线程环境切换回用户模式 允许调用者继续 5 操作系统模型2 共享内核模式内存空间操作系统大部分代码与设备驱动程序代码共享同样的受保护的内核模式内存空间 操作系统任一组件或设备驱动程序都可能破坏其它系统组件的数据 不是微内核microkernel系统微内核定义 操作系统主要组件 内存管理器 进程管理器和I 0管理器 运行在各自独立进程中 有私有的地址空间 在这组组件上是微内核提供的一组原语服务 任何其它组件 包括各种API 文件系统和网络等 都运行在用户模式下 操作系统所有组件受保护组件体现基本的面向对象设计原则大多数代码用C语言编写 不支持面向对象概念 如数据类型动态绑定 多态函数 类继承等 其对象实现只是借用了特定面向对象语言的特性 6 2 3总体结构 图2 1简化的Windows结构图 7 四种基本的用户模式进程3 系统支持进程systemsupportprocesses 比如登录logon进程和会话管理器sessionmanager 它们不是Windows服务 它们不是由服务控制管理器来启动的 服务进程serviceprocesses 主持Windows服务 比如任务调度器 TaskScheduler 和假脱机服务 服务运行常独立于用户登录 用户应用程序userapplications 有六种类型 Windows32位 Windows64位 Windows3 116位 MS DOS16位 POSIX32位或者OS 232位环境子系统服务器进程environmentsubsystemserverprocesses 环境是指操作系统展示给用户或者程序员的个性化部分 最早带了三个子系统 Windows POSIX和OS 2 8 用户应用程序不直接调用原始的Windows操作系统服务 而是通过子系统动态链接库DLLs来发起调用 子系统DLL角色 将一个已文档化的函数转化为一些恰当的内部Windows系统服务调用 通常未文档化 此转化过程可能会 可能不会 向正在为用户应用程序提供服务的环境子系统进程发送一个消息 子系统DLL3 9 内核模式组件3 Windows执行体 executive 包含了基本的操作系统服务 比如内存管理 进程和线程管理 安全性 I O 网络和跨进程通信 Windows内核 kernel 由一组低层次功能组成 比如线程调度threadscheduling 中断interrupt和异常分发exceptiondispatching 以及多处理器同步 kernel提供了一组例程和对象 执行体利用它们实现更高层次的功能 设备驱动程序 devicedrivers 包括硬件设备驱动程序 将用户I O函数调用转换成特定的硬件设备I O请求 文件系统和网络驱动程序 硬件抽象层 HardwareAbstractionLayer 特殊代码 把内核 设备驱动程序和执行体的其余部分 跟平台相关的硬件差异隔离开来 窗口和图形系统 windowingandgraphicsystem 实现了GUI函数 即GDI函数 如窗口处理 用户界面控件 绘制等 10 Windows核心系统文件3 11 Windows2000只支持x86体系结构 WindowsXP和WindowsServer2003新增加支持64位处理器族 IntelItaniumIA 64族 AMDx86 64族 EM64T 两种可移植性实现方法 支持多种体系结构和平台 一 分层设计 关键组件 内核和硬件抽象层 体系结构相关功能 如线程环境切换 threadcontextswitching 和陷阱分发 trapdispatching 在内核实现 不同系统有差异的功能 比如不同主板 在HAL中实现 系统的高层部分可以不考虑体系结构之间的差别 二 代码绝大部分用C语言编写 少部分用C 编写 只有需要直接与硬件通信部分 如中断陷阱处理器 interrupttraphandler 或者对性能极端敏感部分 如环境切换 contextswitching 才用汇编语言编写 可移植性3 12 多任务multitasking与多处理multiprocessing 前者看起来同时执行多个线程 后者真正同时执行多个线程 对称多处理与非对称多处理 对称多处理SMP symmetricmultiprocessing 没有主处理器 所有处理器共享唯一的内存空间 非对称多处理ASMP asymmetricmultiprocessing 典型ASMP 操作系统选择其中一个处理器执行操作系统内核代码 其它处理器只运行用户代码 支持两种新的多处理器系统 超线程 hyperthreading 和NUMA 非一致内存结构 non uniformmemoryarchitecture 超线程为Intel引入技术 可以在一个物理处理器上提供多个逻辑处理器 每个逻辑处理器有自己的CPU状态 并共享执行引擎和芯片上的高速缓存 NUMA系统中 处理器被组织成更小单元 即节点nodes 每个节点有自己的处理器和内存 通过一个缓存一致的互联总线连接到更大的系统 对称多处理3 13 多处理器系统的资源竞争和其他性能问题更为复杂 操作系统代码能够运行在任何一个可用的处理器上 也可以同时在多个处理器上运行 单个进程内执行的多个线程 可以在不同处理器上并行执行 内核内部以及设备驱动程序和服务器进程内部的细粒度同步 使多个组件可并行运行于多个处理器 诸如I O完成端口之类的编程机制 可实现高效的多线程服务器进程 并且这样的程序在多处理器系统上有很好的伸缩性 Windows2003使用针对每个CPU的调度队列 使得可以在多个CPU上并行地执行线程调度 可伸缩性scalability3 14 所支持的处理器的数目不同 所支持的物理内存的数量不同 所支持的并行网络连接的数量不同 Server版本随带的分层服务 layeredservices 并不包含在Professional版本中 例如目录服务 directoryservices 集群服务 clustering 以及对多用户终端服务 multiuserTerminalServices 的支持 客户和服务器版本差异3 15 客户和服务器版本差异3 表2 3Windows2000Professional和Server几个版本之间的差异 Windows操作系统有多个客户版本和服务器版本 但是它们共享同一组核心系统文件 包括内核映像Ntoskrnl exe 以及PAE版本Ntkrnlpa exe HAL库 设备驱动程序 以及基本的系统辅助工具和DLL 这些文件在Windows2000的所有版本中都相同 WindowsXP和WindowsServer2003的内核映像相同 默认配置下 服务器系统针对系统吞吐量进行优化 达到高性能应用服务器 客户版本针对交互式桌面用途的响应时间进行优化 16 客户和服务器版本差异3 表2 4WindowsXP和WindowsServer2003之间的差异 WindowsServer2003不同版本之间的详细比较 请参考 17 客户和服务器版本差异3 表2 5ProductType注册表值 系统查询注册表的HKLM SYSTEM CurrentControlSet Control ProductOptions键下的ProductType和ProductSuite两个值 注册表值ProductType用来区分当前系统是客户系统还是服务器系统 其值存放在系统全局变量MmProductType中 在设备驱动程序中可用内核模式函数MmIsThisAnNtAsSystem查询此值 注册表值ProductSuite可以区分服务器系统的不同版本 Standard Enterprise Datacenter等 也可区分WindowsXPHome和WindowsXPProfessional系统 18 Windows操作系统的一个特殊调试版本 称为检查版本checkedbuild 这是定义一个 DBG 标志之后 将Windows源代码重新编译得到的版本 用于调试和跟踪的编译时刻条件代码也被包含进来 并且为了更加易于理解所得的机器代码 没有执行针对Windows二进制代码的后处理优化 检查版本代码中 大多数附加代码使用了ASSERT宏 该宏定义在DDK头文件Ntddk h中 参见DDK文档 ASSERT宏测试一个条件 若表达式计算结果为FALSE 则该宏调用内核模式函数RtlAssert 后者进一步调用DbgPrint 将调试信息文本发送到一个调试信息缓冲区 若有一个内核调试器附载 则该消息自动显示在一个提示符后面 请用户决定如何处理此断言失败 断点 忽略 终止进程或者终止线程 若没有附载内核调试器 ASSERT测试失败将会导致系统崩溃 检查版本3 19 2 4关键的系统组件 环境子系统和子系统DLLOS 2子系统 POSIX子系统和Windows子系统 Ntdll dll 执行体 内核 内核对象 硬件抽象层 HAL 设备驱动程序Windows驱动程序模型WDM 系统进程空闲进程 System进程和系统线程 会话管理器 服务控制管理器 本地安全认证服务器 20 Windows系统核心结构和组件4 服务控制管理器 用户模式 内核模式 图2 3Windows系统核心结构和组件 系统进程 服务 应用程序 环境子系统 LSASS Winlogon 会话管理器 SvcHost exe WinMgt exe SpoolSv exe Services exe 任务管理器 Explorer 用户应用 子系统DLL Windows OS 2 NTDLL DLL POSIX WindowsDLLs 系统线程 系统服务分发器 内核模式的可调用接口 I O管理器 文件系统高速缓存 对象管理器 即插即用管理器 安全引用监视器 虚拟内存 进程和线程 配置管理器 注册表 本地过程调用 LPC WindowsUSER GDI 图形驱动程序 硬件抽象层 HAL 设备及文件系统驱动程序 内核 硬件接口 总线 I O设备 中断 间隔定时器 DMA 内存缓存控制 等 21 OS 2和POSIX被配置成按需启动 Windows子系统必须总是在运行 子系统启动信息被保存在注册表键HKLM SYSTEM CurrentControlSet Control SessionManager SubSystems下面 环境子系统和子系统DLL4 Required值列出引导时加载的子系统 其中文件csrss exe代表Client ServerRun TimeSubSystem Optional值表明OS 2和POSIX子系统将按需启动 22 环境子系统的角色 将Windows基本系统服务的部分子集暴露给应用程序 每个子系统都提供了对于Windows原生服务不同部分的访问能力 这意味着 建立在某一个子系统上的应用程序可以做到的事情 是另一个建立在不同子系统上应用程序所无法做到的 例如 Windows应用程序不能够使用POSIX的fork函数 每个可执行映像 exe 被绑定到唯一一个子系统上 当映像文件被运行时 创建进程代码会检查映像头部的子系统类型代码 VC 中link命令的 SUBSYSTEM修饰符可指定此类型代码 Windows资源工具箱中的Exetype工具可查看类型代码 不同子系统之间 函数调用不能混合 应用程序不直接调用Windows系统服务 而是通过调用子系统DLL库导出的接口 都有很好文档说明 如Windows子系统DLL Krenel32 dll Advapi32 dll User32 dll和Gdi32 dll 实现了WindowsAPI函数 POSIX子系统DLL Psxdll dll 实现了POSIXAPI函数 环境子系统和子系统DLL4 23 应用程序调用子系统DLL中某个函数时发生的事件该函数完全在该子系统DLL中实现 在用户模式下运行 该函数不向环境子系统发送消息 也没有调用Windows执行体的系统服务 该函数在用户模式下完成 结果返回调用者 如GetCurrentProcess函数和GetCurrentProcessId函数 该函数要求调用Windows执行体一次或多次 例如ReadFile和WriteFile函数分别调用底层的 无文档 内部WindowsI O系统服务NtReadFile和NtWriteFile 该函数要求在环境子系统进程 运行于用户模式 负责维护在其控制下运行的客户应用程序的状态 中完成某些工作 该函数以消息形式给环境子系统发送一个客户 服务器请求 从而让环境子系统执行某个操作 然后子系统DLL等待应答 收到应答后再返回给调用者 Windows设计者将显示基本函数放在Windows子系统中 POSIX和OS 2调用Windows子系统服务来完成显示I O 环境子系统和子系统DLL4 24 环境子系统进程 Csrss exe 控制台 文本 窗口 创建或删除进程和线程 对16位虚拟DOS机 VDM 进程的部分支持 其它函数 如GetTempFile DefineDosDevice ExitWindowsEx 及自然语言支持函数 内核模式设备驱动程序 Win32k sys 窗口管理器 windowmanager 控制窗口显示 管理屏幕输出 采集来自键盘 鼠标和其它设备的输入 同时将用户消息传递给应用程序 图形设备接口 GDI GraphicDeviceInterface 是专门针对图形输出设备的函数库 包括线 文本和图形绘制函数 及绘图控制函数 子系统DLL 如Kernel32 dll Advapi32 dll User32 dll和Gdi32 dll 它们将已经文档化WindowsAPI函数 翻译成Ntoskrnl exe和Win32k sys中恰当的且未文档化的内核模式系统服务调用 图形设备驱动程序 与硬件相关的图形显示器 打印机和视频微端口的驱动程序 Windows子系统4 25 POSIX可看成 一个基于UNIX的可移植操作系统接口aPortableOperatingSystemInterfacebasedonUNIX 的缩写 仅仅实现了POSIX 1标准 目的是满足美国政府采购要求 因此POSIX 1兼容性是Windows的一个强制性目标 POSIX 1定义了很有限的一组服务 进程控制 进程通信等 随Windows2000带的POSIX子系统不是一个完整编程环境 要在Windows中编译和链接一个POSIX应用程序 要使用PlatformSDK中的POSIX头文件和库文件 POSIX可执行文件需链接POSIX子系统库Psxdll dll 默认配置成按需启动POSIX子系统 第一次运行一个POSIX应用程序时 POSIX子系统进程 Psxss exe 必须被启动 POSIX映像文件本身不直接运行 可启动Posix exe来创建子进程运行POSIX应用程序 POSIX子系统4 26 仅仅实现了OS 21 2版本 不支持OS 22 x 及以后版本 如果OS 2程序中含有执行IN OUT指令和高级视频I O AVIO 的I O特权代码 在Windows平台上无法支持 支持使用CLI STI指令的应用程序 但系统中其它所有OS 2程序以及发出CLI指令的进程中所有其它线程都被挂起 直到执行STI指令为止 原来OS 21 2上的16MB内存限制取消 在OS 2子系统中可向应用程序提供512MB内存 64个OS 2优先级 0到63 仅仅映射到Windows动态优先级1至15 OS 2线程不会授予Windows实时优先级16至31 OS 2子系统在第一次激活一个兼容的OS 2映像文件时才自动启动 它会一直保持运行状态 直到系统被重新引导为止 OS 2子系统4 27 特殊系统支持库 主要用于子系统DLL 包含两种类型 系统服务分发存根 stubs 会调用Windows执行体系统服务 内部支持函数 供子系统 子系统DLL以及其它的原生映像文件使用 第一组函数为Windows执行体系统服务提供了接口 用户模式可通过该接口函数调用Windows执行体的系统服务 函数多过200个 如NtCreateFile NtSetEvent等 每个这样函数 Ntdll包含一个同名的入口点 函数内部包含与处理器体系结构相关的模式切换指令 通过该指令可转换到内核模式从而调用系统服务分发器 systemservicedispatcher 分发器检验某些参数 然后调用真正的内核模式系统服务 包括Ntoskrnl exe内部的实际代码 包含支持函数 如映像加载器 函数以Ldr开头 堆管理器 Windows子系统进程通信函数 以Csr开头 一般运行库过程 以Rtl开头 也包含用户模式的异步过程调用APC AsynchronousProcedureCall 分发器和异常分发器 Ntdll dll4 28 Windows执行体是Ntoskrnl exe的上层 内核是其下层 执行体包含以下类型的函数 可在用户模式下调用的导出函数 称为系统服务 systemservices 并通过Ntdll被导出 其中绝大多数通过WindowsAPI来访问 或通过另一个子系统API来访问 然而有些服务 通过任何一个文档化子系统函数都无法访问 如LPC 可通过DeviceIoControl函数来调用的设备驱动器函数 在用户模式下可调用设备驱动程序中不与读或者写操作关联的函数 只能在内核模式下调用的导出函数 且这些函数在WindowsDDK或者WindowsIFSKit InstallableFileSystemKit 中已经文档化 执行体 函数类型4 29 配置管理器 configurationmanager 负责系统注册表的实现和管理 进程和线程管理器 processandthreadmanager 创建或终止进程和线程 Windows内核中实现针对进程和线程的底层支持 而执行体则在底层对象基础上又加上附加语义和功能 安全引用监视器 securityreferencemanager 简称SRM 强制在本地计算机上实行安全策略 它守护着操作系统的资源 执行对运行时对象的保护和审计 I O管理器 I Omanager 实现了与设备无关的I O操作 负责将这些操作分派到恰当设备驱动程序以供进一步处理 即插即用 PnP 管理器 PlugandPlaymanager 为支持一个特定设备 确定哪些驱动程序是必需的 同时也负责加载这些驱动程序 它在设备列举过程中 获取到每个设备的硬件资源需求 PnP管理器根据每个设备的资源请求 分派适当硬件资源 如I O端口 IRQ DMA通道和内存位置 当设备变化 增加 移除 时 负责发送恰当的事件通知 执行体 主要组件14 30 电源管理器 powermanager 负责协调电源事件 向设备驱动程序发送电源管理I O通知 可配置为 当系统空闲 通过将CPU置于睡眠状态从而降低电源消耗 单独设备电源消耗变化可由设备驱动程序来处理 但是需要电源管理器协调 WDMWindows管理规范例程 WDMWindowsManagementInstrumentationroutines 允许设备驱动程序发布有关性能和配置的信息 接收来自用户模式WMI服务的命令 WMI信息消费客户可在本地机器上 也可在远程机器上 高速缓存管理 cachemanager 提高以文件为基础的I O操作性能 让最近引用过的磁盘数据驻留在主内存中以便快速访问 延迟磁盘写操作 在将更新数据发送到磁盘之前现在内存中停留小段时间 利用内存管理器的映像文件支持来实现 内存管理器 memorymanager 实现虚拟内存 是一种内存管理方案 为每个进程提供一个巨大的私有地址空间 其数量可大大超过当前可用的物理内存 也为高速缓存管理器提供最基本的底层支持 逻辑预取器 logicalprefetcher 加速系统和进程的启动过程 对系统或进程启动过程中引用的数据 优化了加载过程 执行体 主要组件24 31 对象管理器 objectmanager 创建 管理和删除Windows执行体对象和抽象数据类型 这些对象和数据类型往往代表了操作系统的资源 如进程 线程和各种同步对象 LPC设施 它在同一台机器上的客户进程和服务器进程之间传递消息 LPC是RPC RemoteProcedureCall远程调用 的一个更灵活优化版本 此RPC是指跨网的客户进程和服务器进程之间的通信设施工业标准 公共运行库 一组涉及范围广泛的公共运行库函数 如字符串处理 算术操作 数据类型转换 以及安全结构处理等 执行体支持例程 如系统内存分配 换页的和非换页的内存池 互锁的内存访问 以及两种特殊类型的同步对象 资源和快速互斥体 fastmutexes 执行体 主要支持函数4 32 内核是Ntoskrnl exe的一组函数以及对于硬件体系结构的底层支持 比如中断和异常分发 构成 Ntoskrnl exe中的这组函数提供了最为基本的机制 如线程调度和同步服务 供执行体组件使用 对硬件的底层支持则随处理器结构不同而有所区别 内核代码主要用C编写 对那些用到特殊的处理器指令和寄存器 并且不容易在C代码中访问的任务 则保留使用汇编代码形式 内核函数多在DDK中有详细文档描述 以Ke打头函数 内核提供了一组定义明确 可预知的操作系统低层原语和机制使得执行体高层组件可做它们需要做的事情 内核实现了操作系统的基本机制 且避免了各种策略决定 从而将自己与执行体的其余部分分开 几乎将所有的策略决定都留给了执行体 只有线程调度和分发是由内核自己实现 内核4 33 从内核外部来看 执行体将线程和其它可共享资源表示为对象 这些对象要求策略开销 比如维护用的对象句柄 以及保护用的各种安全检查 和相应的资源配额 对象被创建时将扣除资源配额 内核对象 kernelobjects 内核对象只是内核分配的一个内存块 并且只能由该内核访问 该内存块是一种数据结构 它的成员负责维护该对象各种信息 内核对象帮助内核控制中心处理过程 并支持执行体对象创建 控制对象 controlobjects 一组称为控制对象的内核对象建立了有关控制各种操作系统功能的语义 包括APC对象 DPC DeferredProcedureCall 延迟过程调用 对象 以及I O管理器使用的对象如中断对象等 分发器对象 dispatcherobjects 一组称为分发器对象的内核对象融合了同步的能力 改变或者影响线程的调度 分发器对象包括内核线程 互斥体 内部称为突变体mutant 事件 内核事件对 pair 信号量 semaphore 定时器 以及可等待的定时器 waitabletimer 执行体利用内核函数来创建和维护内核对象实例 构建提供给用户模式的对象 内核对象4 34 内核一个主要任务是将执行体和设备驱动程序从windows所支持的各种硬件体系结构中抽象出来 或隔离这些变种之间的差异 包括处理各种功能方面 如中断处理 异常分发和多处理器同步 的变化情况 对于这些与硬件相关功能 设计内核时也尽可能使公共代码最大化 内核支持一组可移植接口 其语义和大部分代码在不同体系结构上等同 这组接口的实现 部分代码与体系结构相关 差异的例子 环境切换 contextswitching 从高层看 线程选择和环境切换可使用同样算法 保存前一线程环境 加载新线程环境 但不同处理器的实现仍存在体系结构差异 因为执行环境是由处理器状态 寄存器等 来描述 所以哪些信息应该保存或加载 随着体系结构的不同而有所不同 硬件支持4 35 硬件抽象层 HAL 4 表2 6在 Windows DriverCache i386 Driver cab中的x86HAL列表 硬件抽象层是Windows设计实现可移植性的关键 HAL是一个可加载内核模式的模块 提供针对Windows当前运行所在的硬件平台的低层接口 隐藏与硬件相关的细节 如I O接口 中断控制器 多处理器通信机制 任何与体系结构或者机器相关的功能 Windows内部组件和设备驱动程序不直接访问硬件 需要时 将通过调用HAL来保持可移植性 HAL例程相应文档包含在WindowsDDK中 36 设备驱动程序是可加载的内核模式模块 sys 在I 0管理器和相应硬件之间建立链接 设备驱动程序运行于内核模式 位于三种执行环境之一 在发起I O功能的用户线程的环境中 在内核模式系统线程的环境中 作为一个中断的结果 因此不在任何特定进程或者线程的执行环境中 当该中断产生时 无论当前进程或线程是哪个 设备驱动程序类型 硬件设备驱动程序 hardwaredevicedrivers 通过HAL操纵硬件 对物理设备或网络输入输出 类型有总线驱动程序 人机界面驱动程序 大容量存储器驱动程序等 文件系统驱动程序 filesystemdrivers 可以接受面向文件的I 0请求 并将请求转换成针对某一特定设备的I O请求 文件系统过滤器驱动程序 filesystemfilterdrivers 比如执行磁盘镜像和加密的驱动程序 截取I O请求并增值处理后传递的 网络重定向器和服务器 networkredirectorsandservers 将文件系统I O请求传递给某台机器 或从网络上接收此类请求 协议驱动程序 protocoldrivers 实现TCP IP NetBEUI和IPX SPX等网络协议 内核流式过滤器驱动程序 kernelstreamingfilterdrivers 被串联起来 对数据流进行信号处理 如录制或播放视音频 设备驱动程序4 37 WDM WindowsDriverModel 新增支持即插即用 电源选项 总线型驱动程序 busdriver 它为总线控制器 适配器 桥或带有子设备的设备提供服务 是必需的驱动程序 通常Microsoft会提供 系统中每一种总线类型 PCI PCMCIA和USB 都有一个总线驱动程序 功能型驱动程序 functiondriver 是主要的设备驱动程序 为相应设备提供可操作的接口 是必需的 除非相应设备可以直接使用 功能型驱动程序最了解某个特定的设备 它往往是惟一能访问该设备相关寄存器的驱动程序 过滤型驱动程序 filterdriver 用来为某一设备增加新功能 或修改来自其它设备的I O请求或应答 可选 可以有任意数目 可放在一个功能型驱动程序之上或之下 也可放在总线型驱动程序之上 在WDM环境中 设备不是由单个驱动程序来控制所有方面 一个总线型驱动程序负责向PnP管理器报告其总线上的设备 而一个功能型驱动程序操纵该设备 低层次过滤型驱动程序改变设备行为 用Msinfo32 exe查看已安装的设备驱动程序 Windows驱动程序模型WDM4 38 常用前缀4 表2 7常用的前缀 以下列出了执行体组件常用的绝大多数函数前缀 i代表内部 p代表私有 39 常用前缀4 40 空闲 Idle 进程 每个CPU一个线程 占用空闲的CPU时间 System进程 包含大多数内核模式系统线程 会话管理器 Smss exe Windows子系统 Csrss exe 登录进程 Winlogon exe 服务控制管理器 Services exe 和它创建的子服务进程 如系统提供的通用服务宿主进程Svchost exe 本地安全认证服务器 Lsass exe 系统进程4 41 空闲进程4 系统进程树中 第一个是系统空闲进程 进程由它们的映像文件名来标记 空闲进程并没有运行一个实际的用户模式映像文件 目录 Windows下没有文件 SystemIdleProcess exe 且不同工具中 该进程显示名称不同表2 8进程ID为0在各种工具中的名称 42 任务管理器将中断和DPC时间包含在系统空闲时间中 如果使用任务管理器 那么具有大量中断任务的应用系统看起来似乎是空闲的 中断和DPC4 43 System进程和系统线程4 System进程 在Win2K中进程ID8 在WinXP和Win2K3中是进程ID4 是一种特殊线程的母体 此种特殊线程只能在内核模式下运行 称为内核模式系统线程 Kernel modesystemthread 系统线程具备普通用户模式线程的所有属性和环境 它们只能在内核模式下运行系统空间中加载的代码 系统线程没有用户进程地址空间 因此 需要任何动态存储空间 都必须从操作系统的内存堆中分配 比如从一个换页的或非换页的池中分配 系统线程是通过PsCreateSystemThread函数创建 该函数只能从内核模式调用 Windows及各种设备驱动程序在系统初始化阶段创建系统线程 以执行各种要求线程环境的操作 内核会创建一个称为平衡集管理器 balancesetmanager 的系统线程 每秒钟被唤醒一次 从而发出各种与调度和内存管理相关的事件 高速缓存管理器使用系统线程实现预读和滞后写I O 文件服务器设备驱动程序 Srv sys 利用系统线程来响应网络I O请求 默认系统线程属于System进程 但设备驱动程序可在任何进程中创建系统线程 例如 Windows子系统设备驱动程序 Win32k sys 在Windows子系统进程 Csrss exe 中创建系统线程 因而这些线程可以很容易地访问该进程用户模式地址空间中的数据 44 会话管理器 Smss exe 是系统中第一个创建的用户模式进程 负责完成执行体和内核初始化工作的内核模式系统线程在最后阶段创建实际的Smss进程 启动Windows的过程中 会话管理器负责许多重要的步骤 比如打开额外的页面文件 执行延迟的文件改名和删除操作 创建系统环境变量 启动子系统进程 通常只有Csrss exe 和Winlogon进程 Winlogon进程依次创建其它的系统进程 HKLM SYSTEM CurrentControlSet Control SessionManager注册表键 含许多配置信息 Smss主线程执行完初始化步骤后 一直在Csrss和Winlogon的进程句柄上等待 若这两个进程有一个非正常终止 则Smss让系统崩溃 Windows依赖这两进程 Smss创建终端服务会话 TerminalServicessession 调用NtSetSystemInformation建立数据结构 调用MmSessionCreate来建立会话虚拟地址空间 会话管理器4 45 Winlogon LSASS和Userinit4 Windows登录进程 System32 Winlogon exe 处理交互式用户的登录和注销 按下安全注意序列 SecureAttentionSequence 组合键 Winlogon就接到一个用户登录请求 默认SAS是组合键Ctrl Alt Del 可避免 用户模式的 口令窃听程序 登录过程身份识别和认证由GINA GraphicalIdentificationandAuthentication 图形识别和认证 可替换DLL实现 Winlogon加载DLL 捕捉到用户名和口令 送到本地安全认证服务器进程 System32 Lsass exe 进行验证 LSASS调用适当的认证包 DLL 执行验证操作 检查该口令是否符合存储于活动目录或SAM 注册表关于用户和组 中的口令信息 认证成功 LSASS调用安全引用监视器的函数NtCreateToken 生成一个访问令牌对象 accesstokenobject 该对象包含当前用户的安全轮廓 Winlogon用此访问令牌来创建该用户会话中的初始进程 这些初始进程存储在HKLM SOFTWARE Microsoft WindowsNT CurrentVersion Winlogon键的值Userinit 默认Userinit exe 46 Winlogon LSASS和Userinit4 Userinit执行该用户环境的初始化工作 运行登录脚本 应用组策略 查找注册表Winlogon键Shell值 创建进程运行系统定义的外壳程序 默认是Explorer exe 然后 Userinit退出 因此Explorer exe在进程树中没有父进程 它可以看作是Winlogon的孙子进程 Winlogon不仅当用户登录和注销时是活动的 而且无论何时 一旦它截获键盘SAS时也是活动的 当登录进入后 若按下Ctrl Alt Del 则Windows安全对话框就会出现 提示 注销 启动任务管理器 锁住工作站 关闭系统 等选项 Winlogon进程负责处理这些交互工作 47 服务控制管理器是特殊的系统进程 相应的映像文件是 System32 Services exe 它负责启动 停止服务进程 也负责与服务进程的交互 服务services 可指一个服务器进程 也可指一个设备驱动程序 本节的服务指用户模式进程 就像UNIX的 守护进程 daemonprocess 或者VMS的 分派进程 detachedprocess 这些进程可被配置为系统引导时自动启动 无需交互式登录过程 可配置为手工启动 所谓服务程序 只是调用特殊Windows函数的Windows映像 通过特殊Windows函数 它们与服务控制管理器交互 执行诸如此类动作 注册一个服务成功启动 响应那些对状态的请求 暂停或停止一个服务 服务控制管理器4 48 服务有三种名称 在系统中看到的正在运行的进程名 注册表中的内部名称 在Services管理工具中给出的显示名 服务若无显示名 则显示内部名称 还可以有一个描述域 descriptionfield 进一步详细解释一个服务的功能 从服务进程映射到该进程包含的服务 用tlist s命令 服务进程和所运行的服务不总是一一对应 注册表中 服务类型代码指明该服务是运行它自己的进程 还是与同一映像中的其它服务共享一个进程 许多Windows组件是以服务的方式来实现的 如Spooler假脱机 事件日志 任务调度器 以及各种网络组件 服务控制管理器4
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!