Windows系统启动详解:从BIOS到smss.exe

需积分: 12 2 下载量 96 浏览量 更新于2024-08-08 收藏 1.16MB DOCX 举报
"Windows系统启动过程涉及多个步骤和组件,包括BIOS、MBR、Ntoskrnl.exe、HAL以及服务程序的启动。服务程序的启动顺序对系统的正常运行至关重要,不正确的顺序可能导致功能异常。会话管理器(smss.exe)是启动过程中的关键部分,它负责读取特定的注册表项并创建进程。" 在Windows系统启动时,首先由基本输入输出系统(BIOS)进行硬件自检,然后引导主引导记录(MBR),找到活动分区,加载内核文件Ntoskrnl.exe和硬件抽象层(HAL)。这些组件初始化系统环境,接着启动类型为0和1的服务,这些服务通常是系统核心服务。 会话管理器(smss.exe)是Windows启动流程中的第一个用户模式进程,由内核进程4(Ntoskrnl.exe)创建。smss.exe在系统启动过程中扮演着重要角色,它负责执行以下任务: 1. **读取注册表项**: - `HKLM\System\CurrentControlSet\Control\SessionManager\BootExecute`:这里定义了开机时要执行的本机(native)程序,例如杀毒软件可能利用这个机制来清除病毒。 - `HKLM\System\CurrentControlSet\Control\SessionManager\SubSystems`:决定启动哪些环境子系统进程,如Windows子系统(CSRSS)。 - `HKLM\System\CurrentControlSet\Control\SessionManager\PendingFileRenameOperations`:处理上一次系统重启前未完成的文件重命名操作。 2. **创建进程**: - **本机程序**:由ntdll.dll中的API编写的程序,它们在环境子系统之前启动,注册表`BootExecute`项指定的程序会在开机时由smss.exe启动。 - **环境子系统进程**:smss.exe会检查`HKLM\System\CurrentControlSet\Control\SessionManager\SubSystems`下的配置,启动相应的子系统。通常有Windows子系统(csrss.exe)和POSIX子系统(psxss.exe)。如果psxss.exe不存在,只启动csrss.exe。 会话管理器(smss.exe)之后,系统会继续启动csrss.exe,这是用户界面的主要组成部分,负责处理大部分与图形用户界面相关的任务。接着,系统会启动更多的服务,这些服务按照其依赖关系和服务启动类型有序地启动,直到所有服务都启动完毕,桌面界面才会显示给用户。 理解Windows系统的启动过程对于排查启动故障、优化系统性能以及解决服务程序遇到的问题(如监控剪贴板、设置磁盘卷标或处理COM失败等问题)至关重要。通过深入研究系统启动流程,我们可以更有效地诊断和修复与启动相关的问题。