刚开机时,我们的计算机还没有任何的软件系统,那么计算机是如何读取硬盘内的操作系统文件呢?这就牵扯到计算机里的开机程序了,还会牵扯到一些概念,比如BIOS\CMOS\MBR等。首先看,BIOS。
BIOS是Basic input output system的缩写。BIOS是什么呢?是一段程序,会固化在一个只读存储器中,可以是ROM或者NvRAM等,我们称这个硬件叫BOIS芯片,而我们平时所说的BIOS就是一段固化在BIOS芯片上的程序。
BOIS的运转的大概功能:硬件自检(读取CMOS存储的硬件信息和配置信息,对硬件进行自检、初始化等);硬件自检OK后,执行跳转到操作系统引导设备的引导分区(一般指硬盘中的第一个扇区);CMOS设置程序;硬件IO及终端服务。那么,CMOS是什么呢
CMOS是硬件,是一个随机存储器RAM,用于保存当前电脑的硬件配置信息,所以CMOS只是用来保存数据的。那么,我们如何修改CMOS中的数据呢,通过刚才说的BIOS中的CMOS设置程序功能对其修改,就是一般开机时按F12等(不同的计算机按键不一样)其实就是通过BIOS程序去修改CMOS硬件中的数据。另外, 刚才说了,CMOS是一个RAM,那么断电就会导致数据丢失,咋办?就必须给CMOS一直供电,所以主板上都会有一个电池,在电脑关机后给CMOS供电。
整理一下,就是:开机后主动执行BIOS程序,可以通过BIOS去设置CMOS,也可以不设置;然后BOIS会去识别操作系统引导设备的引导分区,一般也就是电脑里的硬盘中的第一个扇区;OK,下面再来看这个扇区是什么
磁盘的第一个扇区主要记录2个重要的信息,分别是:主引导分区(MBR);分区表;这里不说分区表,只提主引导分区MBR
BIOS会找到MBR并执行他。MBR里存放的是引导加载程序(Boot loader),这个加载程序很小很完美,他的目的就是加载(load)内核文件,这个程序一般由操作系统安装的时候提供,所以可以识别硬盘内的文件系统格式,能读取内核文件。所以,引导加载程序可读取内核文件。
这里在整理一下:开机后主动执行BIOS程序,可以通过BIOS去设置CMOS,也可以不设置;然后BOIS会去识别操作系统引导设备的引导分区,一般也就是电脑里的硬盘中的第一个扇区;这个扇区中有分区表和主引导分区MBR,我们找到了MBR;MBR中存放的是引导加载程序(Boot loader),其可以读取内核文件;内核文件:开始操作系统的功能了。
到这里就结束了么?现在有一个问题,如果我们电脑安装了2个操作系统咋办?MBR里存放的到底是哪个操作系统的引导加载程序呢?其读取的是哪个操作系统的内核文件呢?
引导加载程序还提供了一个菜单的功能,可以在开机后选择你要启动的操作系统。如果是windows,那么引导加载程序会直接读取内核文件开机;如果是LINUX,那么引导加载程序将会将工作交给另一个引导加载程序。那么,另一个引导加载程序在哪里呢?就在LINUX安装所在分区的启动扇区。所以,每一个分区都是有自己的启动扇区。当需要启动第二个操作系统的时候,就会去该分区去读取这个启动扇区中的引导加载程序了,加载第二个操作系统。
到这里本篇经验就结束了,如果想学习的更深,就需要自行学习一些操作系统的原理、硬件相关的知识了。如果觉得有错,麻烦指出修改;如果觉得不错,记得投票撒