本文详细阐述 windows 操作系统的启动顺序,以方便IT从业者对windows 启动问题的分析和解决。
windows 的启动过程包括以下几个阶段:
启动自检阶段
这个阶段主要是读取 BIOS ,然后内存,CPU,硬盘,键盘等设备进行自检。这个阶段在屏幕上显示就是自检的那些打印信息。
屏幕显示:自检的打印信息
初始化启动阶段
这个阶段根据 BIOS 指定的启动顺序,找到可以启动的优先启动设备,比如本地磁盘,CD Driver , USB 设备等等,然后准备从这些设备启动系统。
屏幕显示:黑屏
Boot 加载阶段
这个阶段首先从启动分区(比如 C 盘) 加载 Ntldr ,然后Ntldr 做如下设置:
- 设置内存模式,如果是 x86 的处理器,并且操作系统是 32位,则设置为 32-bit flat memory mode, 如果是 64 位操作系统 + 64位处理器,则设置为64位内存模式。
- 启动文件系统
- 读取 boot.ini 文件
屏幕显示:黑屏,如果按F8或者多系统时会显示启动选项菜单。
检测和配置硬件阶段
这个阶段检查和配置一些硬件设备,它们分别是:
- 系统固件,比如时间和日期
- 总线和适配器
- 显示适配器
- 键盘
- 通讯端口
- 磁盘
- 软盘
- 输入设备(如鼠标)
- 并口
- 在ISA总线上运行的设备
屏幕显示:黑屏
内核加载阶段
在内核加载阶段,Ntldr 将首先加载windows 内核 Ntoskrnl.exe 和 硬件抽象层 (HAL). HAL 有点类似于嵌入式操作系统下的BSP(Borad support package),这个抽象层对硬件底层的特性进行隔离,对操作系统提供统一的调用接口,操作系统移植到不同硬件时只要改变相应的 HAL 就可以,其它的内核组件不需要修改,这个是操作系统通常的设计模式。
接下来Ntldr 从HKEY_LOCAL_ MACHINE\SYSTEM\CurrentControlSet 下读取这台机器安装的驱动程序,然后依次加载驱动程序。
驱动程序加载完成后,windows 做如下设置:
1. 创建系统环境变量
2. 启动 win32.sys ,这个是windows 子系统的内核模式部分。
3. 启动 csrss.exe,这个是windows 子系统的用户模式部分。
4. 启动 winlogon.exe
5. 创建虚拟内存页面文件
6. 对一些必要的文件进行改名,(主要是驱动文件,如果更新后,需要在下次重启前改名)
屏幕显示:显示windows logo 界面和进度条
登录阶段
这个阶段会做如下几件事:
1. 启动机器上安装的所有需要自动启动的 windows 服务
2. 启动本地安全认证 Lsass.exe
3. 显示登录界面
屏幕显示:显示登录界面
本文参考如下文档:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述