[PConline 杂谈]对于身边我们早已习以为常的事情,往往会忽略其背后更多原理,但是被人突然问起来原因的时候,却又说不出其所以然,不知道大家有没有这样体验?正如有人问你,电脑是如何开机呢?相信你肯定会很干脆回答道,“按下开机建。”
那问题来了,你有没有想过电脑开机背后原理呢?按下了开机键后硬件部分会发生什么反应?又是如何通过CPU、内存、显卡、主板等硬件将硬盘搭载的系统启动,以便我们使用呢?
如果你组装过电脑或看过电脑组装视频,可能对机箱线路构成有大概印象,它们分别负责硬盘指示灯、音频接口、开机和重启的指示灯、机箱上面USB接口及开机按键的正常工作。
当你按下电脑电源键的时候,其实是将主板上的两个负责开机的针脚进行“短接”。于是出现按下电源键开不了机的情况时,一些专业人士会将主板的连接线拔掉,再通过螺丝刀将主板的电源开关线“PowerSW”来连接两个接线柱,实现“短接”开机。有趣的是,这两个接口不能一直连接在一起,否则电脑会关机。
说到接口方面,主机的主板提供CPU、AGP、PCI插槽、USB端口以及PS/2接口等在通信速度存在比较大的区别。如何解决不同插槽通信速度差异?主板给CPU、SATA、USB设备提供不同的时钟频率,从而保证这些硬件能正常运行。
此外,当你按下电脑电源键给微控制器发出了Reset信号的时候,主板会经过一系列的转换后,开始启动电脑里面的一块芯片,这块芯片里面有一个程序叫做“基本输出输入系统”,也就是我们常说的BIOS。
此时,BIOS会先检查,也就是“硬件自检”,主要是检查电脑的硬件能不能满足电脑正常运行的基本条件,如果硬件出现问题,主板会发出不同含义的蜂鸣,电脑也不会正常启动。
BIOS自检完毕后将按照BOOT顺序列表逐一检查。如果光驱/软驱在前,BIOS会自动检测是否有光盘/软盘在内,如果有光盘/软盘,BIOS会尝试使用光盘软盘对系统进行引导,USB启动亦是如此。
如果当前光盘/软盘/USB存储设备内没有相关的引导文件,BIOS会自动跳转到下一个BOOT项目,一直按照BOOT顺序表进行到有可执行的项目为止。接着,BIOS把控制权转交给下一阶段的启动程序,再到启动系统的阶段。
此时,BIOS需要知道,\"下一阶段的启动程序\"具体存放在哪一个设备,等于BIOS需要有一个外部储存设备的排序,排在前面的设备就是优先转交控制权的设备。这种排序叫做\"启动顺序\",打开BIOS的操作界面,里面有一项就是\"设定启动顺序\"。
当BIOS按照硬盘的顺序启动后,这时候电脑把控制权转交给了第一位的硬盘,给到硬盘搭载的系统来控制,读取该设备的第一个扇区,也就是读取最前面的512个字节,称作“主引导记录”。如果这512个字节的最后两个字节是0x55和0xAA,表明这个设备可以用于启动。如果不是,表明设备不能用于启动,控制权于是被转交给\"启动顺序\"中的下一个设备。
“主引导记录”仅起到引导的作用,告诉电脑要去硬盘中的哪一个部分去寻找操作系统,“主引导记录”还有一部分记录了硬盘的分区表,也就是将硬盘里面的分区情况记录了下来,由于每个区可以安装不同的操作系统,这是时候,“主引导记录”必须知道将控制权转交给哪个区。
如果每个扇区为512个字节,这意味着单个分区最大不超过2TB,考虑到扇区的逻辑地址是32位,所以单个硬盘可利用的空间最大也不超过2TB。如果想使用更大的硬盘,只有2个方法,一是提高每个扇区的字节数,二是增加扇区总数。
由于计算机的控制权就要转交给硬盘的某个分区,会出现了三种情况。
第一种情况,卷引导记录。盘的四个主分区里面,只有一个是激活的。计算机会读取激活分区的第一个扇区,叫做卷引导记录。而卷引导记录的作用主要是告诉电脑,操作系统在这个分区里的位置后,计算机就会加载操作系统了。
第二种情况,扩展分区和逻辑分区。随着硬盘容量越来越大,四个主分区已经不够了,需要更多的分区。不过分区表只有四项,因此规定有且仅有一个区可以被定义成扩展分区。所谓扩展分区指的是这个区里面又分成多个区,而这种分区里面的分区,就叫做逻辑分区。
电脑先读取扩展分区的第一个扇区被称为“扩展引导记录”,它里面也包含一张64字节的分区表,但最多只有两个逻辑分区,计算机接着读取第二个逻辑分区的第一个扇区,再从里面的分区表中找到第三个逻辑分区的位置,以此类推,直到某个逻辑分区的分区表只包含它自身为止。从这里看到,扩展分区可以包含无数个逻辑分区,但在日常中很少通过这种方式启动操作系统,除非操作系统确实安装在扩展分区,否则采用第三种情况。
第三种情况,启动管理器。在启动管理器后,计算机读取\"主引导记录\"前面446字节的机器码之后,不再把控制权转交给某一个分区,而是运行事先安装的\"启动管理器\"(bootloader),由用户选择启动哪一个操作系统。
到了这一阶段,控制权交给了操作系统后,操作系统的内核将载入内存。内核加载成功后,第一个运行的程序。这时根据配置文件产生init进程。然后,init线程加载系统的各个模块,比如窗口程序和网络程序,直至跳出登录界面,等待用户输入用户名和密码。
总结
看完上面介绍后,大家对电脑按下开机键产生一系列奇妙的变化有了更深的感知,不知道有没有被这精密的设计震撼到呢?小小的按钮,大大的世界,希望大家拥有一双善于发现“美”的眼睛,还能继续探索美丽背后的原理,做个生活观察家。