电脑开机时都干了些什么 计算机启动过程分哪几个阶段

如果你们的主板上有Debug LED等和简易Debug灯的话,在开机的时候可以观察一下,在显示器有东西显示之前这些Debug灯都会在一直跳动,如果卡在某个地方不动的话,恭喜你,有东西出问题了 。
传统的AMI BIOS自检,图片来源:
【电脑开机时都干了些什么计算机启动过程分哪几个阶段】你看到的这个过程其实就是电脑的上电自检Power On Self Test,简称POST,这是计算机接通电源后系统进行的一个自我检查的例行程序,其实许多电子设备都有这个自检过程,当然我们这里只讨论PC的,POST自检是设备预引导序列的一部分,自检成功的话结果会显示在屏幕上,当自检完成后BIOS就会进入下一个步骤,从硬盘、光盘、移动设备或网络驱动器上寻找操作系统进行启动,PC控制权会交给操作系统 。
上电自检是有BIOS所执行的,当然有些外围设备自带BIOS的会让他们自己检查,比如显卡和SCSI设备,这时你就会看到自检过程中多了一两个画面 。
现在主板的自检界面已经相当简化
上电自检期间主板BIOS的主要基本职责包括:
验证CPU寄存器
验证BIOS自身的完整性
验证一些基本组件,例如DMA、计时器、中断控制器
初始化、调整和验证系统内存
初始化BIOS
把控制器交给其他扩展卡的BIOS
识别与选择可用于引导的设备
而现在设备的主板BIOS上,POST自检还包括:
初始化芯片组
查找、初始化和分类所有系统总线与设备
提供用于系统配置的用户界面
构建目标操作系统所需要的系统环境
当你按下电源键后,系统就会启动上电自检程序,在此期间系统的控制权在BIOS上 。刚开机的时候电压还不稳定,主板就会通过芯片组向CPU发出一个RESET信号,此时CPU会初始化,同时会等待电源发出的POWER GOOD信号,这段时间其实只有短暂的瞬间,当电压稳定后就会撤去RESET信号 。
随后CPU就会从地址处执行指令,而这个地址是在主板BIOS的范围内的,无论是什么哪种BIOS放在这里的都是一条跳转指令,就是跳转到BIOS的启动代码,而这个启动代码要做的第一个事情就是执行上电自检,检查PC的硬件设备工作状态是否正常 。
上电自检的大致过程为:Power——CPU——ROM——BIOS—— Clock——DMA——64KB RAM——IRQ——显卡等非关键设备,I/O口、软硬盘驱动器、鼠标键盘、即插即用设备以及CMOS设置等都排在显卡的后面,通常显卡通过测试后屏幕就会亮起,并且在屏幕上显示各种信息 。
主板上的DeBug LED
这个过程是逐一进行的,每个设备都有一个POST Code开机自我检测代码,在对某个设备进行检查时就会把这个自我检测代码写入诊断端口,检测通过后就会送入另一个设备的代码,如此重复 。
如果某个设备检测没有通过,它的POST Code就会在检测端口保留下来,而检测程序也会终止,并会发出警报,看到这里你应该已经明白DeBug卡上面的两个数字是怎么来的了,如果你有接蜂鸣器的话还能听到警报声,通过DeBug卡或者蜂鸣器的声音就能比较快速的找到问题的所在位置,并进行修理 。
其实在早期的电脑上,上电自检其实是会对所有设备进行全面的测试的,包括完整的内存测试 。这其实是继承了IBM在大型机上的设计,不过随着PC逐渐发展为一种个人的消费级设备,大多数产品都放弃了这种高可靠性功能,内存的奇偶校验和全面检测被放弃了,因为这一过程非常的长,而且随着内存容量的指数膨胀,这时间只会逐渐让人无法接受 。
最初的IBM PC最少内存容量只有16KB,而通常的产品容量是在64到640KB之间,当时使用的8088 CPU频率只有4.77MHz,完成上电自检大概耗时5秒到一分半钟,而且无法跳过内存扫描,从IBM XT开始上电自检期间会显示内存计数器,而不是之前的空白屏幕 。在上世纪80年代人们开始关注启动时间,光内存自检就要30到60秒其实是很让人不爽的,所以从哪个时候开始,兼容机的BIOS里面就多了个设置,运行用户通过按一个按键跳过内存自检 。