第一步:在主板接通电源以后,系统就由POST(Power On Self Test,上电自检)开始自检,在咱们刚刚接通电源的时候,整个系统由BIOS控制,电压还不太稳定(这个过程很是短暂,通常只有几毫秒,这个时候电压的稳定彻底依靠主板和电源内部的滤波电容进行),主板芯片组会向CPU发出reset的命令让CPU开始初始化,同时主板芯片组等待电源发出POWE GOOD命令,一旦电源发出POWER GOOD命令,主板芯片组会立刻中止reset命令的发出(若是是手动reset那么松开reset按钮时就会中止发出命令),这时候CPU会立刻从地址FFFFF0H或FFFF0H开始执行寻址指令(这个地址是在BIOS内而再也不内存里面),在这个地址中不管是AMI BIOS仍是Award BIOS,在这个地址中都会存储一条跳转命令,直接跳转到系统BIOS中真正的启动代码处,这个时候BIOS就会进行到第二个步骤POST。
第二步:系统BIOS的启动代码首先要作的事情就是POST,POST的主要任务就是在检测系统中的一些关键设备是否存在和正常工做。因为POST在初始化显示卡以前,所以若是POST过程当中出现任何的被BIOS认为的致命错误,好比没有找到内存或者说内存错误之类的,POST会经过主板上再带的扬声器来发送长短和数量不等的警报声以传递错误信息,若是在正常状况下,POST会进行的很是快,咱们是难以感受到这个过程的。设计模式
第三步:在这一步,系统BIOS会找到显示卡,存放显卡BIOS的ROM一般其实地址在C0000H处,系统BIOS找到显卡BIOS以后调用它的代码,因为显卡生产商的不一样,因此显卡的初始化是由显卡BIOS来完成的,因此不一样显卡厂商的界面也是不太同样的。
第四步:硬盘引导启动:这一步是根据BIOS设置的启动顺序进行,按照顺序将控制权依次转移给列表中的存储设备,不管是哪一个设备,计算机都会依次读取这个设备的第一个扇区,即第一个512字节,若是这512个字节的最后两个字节是0x55和0xAA,代表这个设备能够用于启动;若是不是,代表设备不能用于启动,控制权因而被转交给"启动顺序"中的下一个设备,这最前面的512个字节就被叫作主引导记录(Master boot record,缩写为MBR)。
其中主引导记录的主要做用就是引导硬盘到指定的位置来加载操做系统,通常分为三个部分:第1-446字节:调用操做系统的机器码;第447-510字节:分区表(Partition table);第511-512字节:主引导记录签名(0x55和0xAA)。
其中分区表的做用是将硬盘分为若干个分区,硬盘分区的好处就是在于能够在不一样的分区中安装不一样的操做系统,可是主引导记录必须知道每一个操做系统具体是在哪一个分区。
主引导记录的大小总共只有64个字节,其中分为四项,每项16个字节,也就是说,每块硬盘只有4个主分区,只能安装4套操做系统。每一个主分区总共16个字节,分为6个部分:
第一个字节:若是为0x80,就表示该主分区是激活分区,控制权要转交给这个分区。四个主分区里面只能有一个是激活的。
第二至四个字节:表示主分区第一个扇区的物理位置(柱面、磁头、扇区号等等)。
第五个字节:表示主分区类型(具体内容比较多在这里就再也不过多阐述)。
第六只八个字节:表示主分区的最后一个扇区的物理位置。
第九至十二个字节:表示主分区第一个扇区的逻辑地址。
第十三至十六个字节:表示主分区的扇区总数。
最后一条规定了 主分区的长度,也就是说,主分区的长度最大不能大于2^32,因此,每一个分区512个字节的话,整块硬盘的大小不会超过2TB,因此提升硬盘大小只有两个办法:一是提升硬盘扇区总数;二是提升每一个扇区的字节数。
第五步:硬盘启动。这个时候系统会优先从四个主分区里面的那个被激活的分区来启动,叫作引导卷启动(Volume boot record,缩写为VBR),卷引导记录的主要做用是,告诉计算机,操做系统在这个分区里的位置。而后,计算机就会加载操做系统了。可是若是系统被安装在了拓展分区和逻辑分区中,就要经过启动管理器来启动,在这种状况下,计算机读取"主引导记录"前面446字节的机器码以后,再也不把控制权转交给某一个分区,而是运行事先安装的"启动管理器"(boot loader),由用户选择启动哪个操做系统。
6
第六步:内核加载启动。这个时候计算机的操做系统位置已经肯定,就要进行内核加载。在内核加载阶段,Ntldr 将首先加载Windows内核 Ntoskrnl.exe 和 硬件抽象层 (HAL). HAL 有点相似于嵌入式操做系统下的BSP(Borad support package),这个抽象层对硬件底层的特性进行隔离,对操做系统提供统一的调用接口,操做系统移植到不一样硬件时只要改变相应的 HAL 就能够,其它的内核组件不须要修改,这个是操做系统一般的设计模式。ide
接下来Ntldr 从HKEYLOCAL MACHINE\SYSTEM\CurrentControlSet 下读取这台机器安装的驱动程序,而后依次加载驱动程序。驱动程序加载完成后,Windows作以下设置:操作系统