关闭

计算机到底是如何启动的?(传统BIOS)

1382人阅读 评论(81) 收藏 举报
分类:

引言


前先日子在装系统的时候,发觉自己对于计算机到底是如何启动的这一过程认识不清晰,然后下去查了查资料,看了阮一峰的一篇博客计算机是如何启动的,作者写的简单,易懂,我自己整理了一下,希望分享给大家。

boot


启动用英文来讲是boot,但是boot的意思是靴子,靴子又怎么和计算机的启动联系起来呐,这里的boot是bootstrap(鞋带)的缩写,它来自一句谚语:
"pull oneself up by one's bootstraps"。其字面意思就是拽着鞋带把自己拉起来,这当然是不可能的事情。最早的时候,工程师们用它来比喻,计算机启动是一个很矛盾的过程:必须先运行程序,然后计算机才能启动,但是计算机不启动就无法运行程序!

早期是这样,必须想尽各种办法,把一小段程序装进内存,然后计算机才能正常运行。所以,工程师们把这个过程叫做”拉鞋带”,久而久之就简称为boot了。

启动过程


一:BIOS


上个世纪70年代初,”只读内存”(read-only memory,缩写为ROM)发明,开机程序被刷入ROM芯片,计算机通电后,第一件事就是读取它。这块芯片里的程序叫做”基本輸出輸入系統”(Basic Input/Output System),简称为BIOS。

BIOS(Basic Input/Output System的缩写、中文:基本输入输出系统),在IBM PC兼容系统上,是一种业界标准的固件界面。BIOS这个字眼是在1975年第一次由CP/M操作系统中出现。BIOS是个人电脑启动时加载的第一个软件。


BIOS中主要存放的程序:


自诊断程序(通过读取CMOS RAM中的内容识别硬件配置,并对其进行自检和初始化)

CMOS设置程序(引导过程中,通过特殊热键启动,进行设置后,存入CMOS RAM中)

系统自动装载程序(在系统自检成功后,将磁盘相对0道0扇区上的引导程序装入内存使其运行)

主要I/O驱动程序和中断服务(BIOS和硬件直接打交道,需要加载I/O驱动程序)


1、开机自检


BIOS程序首先检查,计算机硬件能否满足运行的基本条件,这叫做”开机自检”(Power-On Self-Test),缩写为POST。


如果硬件出现问题,主板会发出含有不同含义的蜂鸣,启动中止。如果没有问题,屏幕就会显示出CPU、内存、硬盘等信息。



2、启动顺序


开机自检顺利完成后,BIOS会把控制权转交给下一阶段的启动程序。

这时,BIOS需要知道,"下一阶段的启动程序"具体存放在哪一个设备。也就是说,BIOS需要有一个外部储存设备的排序,排在前面的设备就是优先转交控制权的设备。这种排序叫做"启动顺序"(Boot Sequence)。

进入BIOS的操作界面,会发现有一项就是"设定启动顺序"。不同电脑的BIOS版本不同,可能位置会有变化,下图是从网上找到的,只做参考。



二:主引导记录(MBR)


BIOS按照”启动顺序”,把控制权转交给排在第一位的储存设备。根据用户指定的引导顺序从软盘、硬盘、可移动设备或者网卡中读取启动设备的MBR,并放入指定的位置(0000:7C00H)内存中。


这时,计算机读取该设备的第一个扇区,也就是读取最前面的512个字节。如果这512个字节的最后两个字节是0x55和0xAA,表明这个设备可以用于启动;如果不是,表明设备不能用于启动,控制权于是被转交给”启动顺序”中的下一个设备。如果没有启动设备满足要求则显示“NO ROM BASIC”然后死机。

事实上,BIOS不仅检查这512个字节的最后两个字节是不是0x55和0xAA,往往还对磁盘是否有写保护、主引导扇区中是否存在活动分区等进行检查。如果发现磁盘有写保护,则显示磁盘写保护出错信息;如果发现磁盘中不存在活动分区,则显示类似如下的信息“Remove disk or other media Press any key to restart”。


这最前面的512个字节,就叫做”主引导记录”(Master boot record,缩写为MBR)。


1、MBR的结构


“主引导记录”只有512个字节,放不了太多东西。它的主要作用是,告诉计算机到硬盘的哪一个位置去找操作系统。


主引导记录由三个部分组成:

(1) 第1-446字节:调用操作系统的机器码。

(2) 第447-510字节:分区表(Partition table)。

(3) 第511-512字节:主引导记录签名(0x55和0xAA)。


其中,第二部分”分区表”的作用,是将硬盘分成若干个区。


2、分区表


硬盘分区有很多好处。考虑到每个区可以安装不同的操作系统,”主引导记录”因此必须知道将控制权转交给哪个区。


从上面提到的MBR的结构可以知道,分区表长度有64个字节,里面又分成四项,每项16个字节。所以,一个硬盘最多只能分四个一级分区,又叫做”主分区”。每个主分区的16个字节,由6个部分组成:


(1) 第1个字节:如果为0x80,就表示该主分区是激活分区,控制权要转交给这个分区。这四个主分区里面只有一个是激活的。

(2) 第2-4个字节:主分区第一个扇区的物理位置(柱面、磁头、扇区号等等)。

(3) 第5个字节:主分区类型

(4) 第6-8个字节:主分区最后一个扇区的物理位置。

(5) 第9-12字节:该主分区第一个扇区的逻辑地址。

(6) 第13-16字节:主分区的扇区总数。最后这四个字节决定了这个主分区的长度。也就是说,一个主分区的扇区总数最多不超过2的32次方。


如果每个扇区为512个字节,就意味着单个分区最大不超过2TB。再考虑到扇区的逻辑地址也是32位,所以单个硬盘可利用的空间最大也不超过2TB。如果想使用更大的硬盘,只有2个方法:一是提高每个扇区的字节数,二是增加扇区总数。


三:硬盘启动


这时,计算机的控制权就要转交给硬盘的某个分区了,这里又分成三种情况。


1、卷引导记录

上面提到,四个主分区里面,只有一个是激活的。计算机会读取激活分区的第一个扇区,叫做”卷引导记录”(Volume boot record,缩写为VBR)。

“卷引导记录”告诉计算机,操作系统在这个分区里的位置。然后,计算机就会加载操作系统了。


2、扩展分区和逻辑分区


随着硬盘越来越大,四个主分区已经不够了,需要更多的分区。但是,分区表只有四项,因此规定有且仅有一个区可以被定义成”扩展分区”(Extended partition)。所谓”扩展分区”,就是指这个区里面又分成多个区。这种分区里面的分区,就叫做”逻辑分区”(logical partition)。


计算机先读取扩展分区的第一个扇区,叫做”扩展引导记录”(Extended boot record,缩写为EBR)。它里面也包含一张64字节的分区表,但是最多只有两项(也就是两个逻辑分区)。


计算机接着读取第二个逻辑分区的第一个扇区,再从里面的分区表中找到第三个逻辑分区的位置,以此类推,直到某个逻辑分区的分区表只包含它自身为止(即只有一个分区项)。因此,扩展分区可以包含无数个逻辑分区。

但是,似乎很少通过这种方式启动操作系统。如果操作系统确实安装在扩展分区,一般采用下一种方式启动。


3、启动管理器

在这种情况下,计算机读取”主引导记录”前面446字节的机器码之后,不再把控制权转交给某一个分区,而是运行事先安装的”启动管理器”(boot loader),由用户选择启动哪一个操作系统。

Linux环境中,目前最流行的启动管理器是Grub。


四:操作系统


控制权转交给操作系统后,操作系统的内核被载入内存。


总结


这里只是写了计算机启动的大致过程,当然还有更为详细的过程,如果有不正确的地方还请大家指出。





0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:181188次
    • 积分:7227
    • 等级:
    • 排名:第3491名
    • 原创:99篇
    • 转载:0篇
    • 译文:0篇
    • 评论:2609条
    感谢您的打赏 支付宝
    感谢您的打赏 微信
    博客专栏
    最新评论