1)按下电源按键,与按键相连的电信号线传送一个电信号给主板,主板将信号传给供电系统,供电系统开始供电,CPU立即进入16位实模式,同时强行设置CS为0xF000,IP为0xFFF0,然后开始执行CS:IP指向的程序——BIOS程序(前面这些步骤完全是硬件完成)
注:CPU在16位模式下,绝对寻址空间为0x00000-0xFFFFF,此时存储芯片组并未初始化,所以内存RAM和BIOS的ROM是混合编址,或者换种理解方式是BIOS程序是直接映射到RAM中的,即开始执行BIOS程序时,CPU是直接从BIOS的ROM调指令(这部分程序称为Boot Block),等到内存初始化等工作完成后,再把其它部分BIOS程序解压并调到内存中运行(这部分称为Compressed Area)
2)BIOS里的程序会把中断向量表、中断服务程序加载到内存中,然后加电自检,接着读取CMOS参数选择启动驱动器『其中BIOS还含有设置CMOS参数的程序(通过选择中断进行)和基本输入输出程序(最基本驱动),而这段过程中常出现的是笔记本主板的信息以及笔记本厂商的Logo』,选择不同的驱动器会向CPU发送不同的中断请求,从而选择不同的加载方案,如软/硬盘就是通过int 0x19中断来加载第一扇区的512B引导程序
3)接下来的步骤会因为驱动器和操作系统的不同而不同,所以下面以硬盘为驱动器、以XP作为主系统(这里的主系统意思指引导扇区的内容由该系统写入)进行介绍
4)中断服务程序于硬盘0盘片0磁道1扇区0位置开始加载,加载512个字节(即一个扇区的大小——实际上加载最小单位就是扇区,而这个扇区就叫引导扇区)到内存0x7c00H,如果第511-512个字节为55AA,则这512个字节确定为引导,并开始执行前446个字节(这446个字节称为主引导记录,又叫MBR,它主要负责将控制权给予一个操作系统),447-510字节是4个16字节分区表项,具体说明请看下图
5)MBR在磁盘上寻找活动分区(只能有一个活动分区,活动分区的标志,即图中的Boot signature是80h,非活动分区的标志为00h,所以现在实际上是只能找到一个系统盘,即若你还装了另一个系统在另一个盘,实际上是找不到的),找到后读取地址并从这里开始载入程序文件,而这个文件就是ntldr(XP的C盘隐藏文件)
6)ntldr将系统从实模式切换到保护模式,设置GDT(全局描述符表)LDT(局部描述符表)IDT(中断描述符表,这几个概念参见任何一本操作系统的书)等,同时载入可用的小型文件系统驱动
7)ntldr载入boot.ini文件的选项并解析选择(即出现的选择操作系统的界面,选择后由ntldr来解析如何执行)
8)如果选择的是xp(一般也是默认),则直接执行NTDETECT.COM程序文件,如果选择的是其它非win系统(如Ubuntu),则执行Bootsect.dos,这个文件在单系统的时候是不存在的,到此windows NT的过程结束
补充一:对于windows,执行NTDETECT.COM后就是包括读取信息、载入驱动、写注册表、载入内核等事情,这些都完了后,就是将管理权限全权交给内核(C:\WINDOWS\system32\ntoskrnl.exe)
补充二:ntldr对应的gun程序为grub
补充三:热启动(在不检测内存等情况下启动)/冷启动(完全重新启动)
补充四:MBR只支持寻址2TB的硬盘,所以现在慢慢的被GPT替代,分区方案也改用更先进的GUID