电脑是怎么启动的?
你是非曾经想过当你按下你电脑或者手提的电源键时,出现了Windows或者Linux标志
的屏幕后方到底发生了什么?从按下按键到出现登录画面的过程中,大概有上百的部件被初始化以及上前行的代码在启动过程中运行。但是,什么时候启动(Booting)呢?
我们将到机器里面看看到底发生了什么。那就让我们开始了吧。。。
什么是启动(booting)?
启动时一个加载然后开始运行操作系统的一系列过程或者操作,过程从你按下你的电源键开始。
什么是启动过程?
很多基础的启动过程文档都会让人感到困惑,因为他们经常会与linux或者windows等操作系统相关。但是我会竟可能的把他写的通用一点。
一盘启动过程由下面这些步骤组成:
- 按下电源键
- 重设CPU的引脚电平,把寄存器设为特定的初始值
- CPU跳到加载了BIOS的内存区(0xFFFF0)
- BIOS运行上电自检(POST - Power-On Self Test)和一些其他检测
- 主加载器(Primary Bootloader)冲MBR运行,然后跳转到第二加载器(Secondary Bootloader)
- 第二加载器加载操作系统
这些就是启动过程中所需要做的任务。现在我们来说说他们的细节。
当我们按下电源键,送出重置信号然后CPU的寄存器初始化为特定的初始值(译者注:送出重置信号指的是:通常有一个引脚只要在CPU通电以后,这个引脚检测到特定的电平,例如高电平,就会重置CPU)。最开始和最重要的是重置如下图所示的重置向量(例子使用的是4GB的RAM)。值得注意的是目前内存里面的值都是一些垃圾值(复位后的随机值),指令和数据所存放的地址是由你电脑的芯片组的内存地图(memory map)所决定的。内存地图把储存在ROM中的数据和指令映射到特定的内存地址。必须保证的是,这些重置向量地址里面的值必须存放“跳转到系统BIOS代码的地址”的指令,以便于接下来BIOS代码接手,继续启动系统。
BIOS - Basic Input Output System (基础输入输出系统)
正如我们之前看到上电后CPU重置以及把寄存器的值设置为初始值,那到底是哪一个内存地址存放了BIOS呢?一般来说EEPROM(电擦除只读存储器)这个硬件里面存放着BIOS。BIOS执行的任务有以下几类:
l POST-上电自检,是一个用来检测和测试基础硬件的最重要的程序。如果这一步中出现了错误,将会显示错误。
l 初始化硬件设备,然后让各个设备运行各自的BIOS(例如:有的显卡会有他们自己内置的显卡代码)
l 寻找主引导记录(MBR)然后读取他们
l 把启动扇区中的代码复制到RAM(内存)中然后把控制权移交给这段代码。
启动扇区
指的是一个硬盘中的其中一个扇区,它有512字节的大小。一个扇区会被被视为为启动扇区是因为它所在的位置和这个扇区负责进一步地启动系统。这个启动扇区一般被称为主引导记录(MBR - Master Boot Record)。主引导记录是一个位于硬盘第一个位置的扇区,拥有512字节(0号柱面,0号磁头,1号扇区)。当BIOS找到了启动扇区,他就会把这个扇区复制到RAM中,然后把运行权交给MBR中的代码。
在MBR中的头446个字节是主加载器,也被叫做PBL,主引导加载程序(primary bootloader)。
接下来的64字节是分区表,里面存折分区的记录。
MBR以0xAA55这两个字节结束(511byte为0x55,512byte为0xAA)。这两个数字就像是凭证一样,指明这是一个启动扇区。
原网站:http://www.engineersgarage.com/tutorials/how-computer-pc-boots-up?page=1
转载本文请保留以下网址:http://www.cnblogs.com/warren-wong/p/3982149.html
如果发现文中有错误之处,请务必告诉我,谢谢大家。