开机的第一条指令
你们有没有想过这样一个问题:为什么我按了电脑的开机键,电脑就会开机?这个问题看起来似乎很蠢,但我相信很少有人能够回答出来。
CPU会在接通电源后执行第一条指令,而我们知道,我们的程序代码需要放在内存里才能被CPU读取。那么接通电源后的第一条指令在哪里呢?还是内存。
学过ICS
的同学对内存应该都有一定的概念,它就相当于程序运行的草稿纸。一般来说,断电之后,内存的内容会丢失。那么,按照这种说法,在加电之前,内存中应该是空的,所以加电之后,第一条指令需要被CPU
搬到内存中去;但是内存中没有指令,CPU
又不会运行。这样就出现了先有鸡还是先有蛋的问题!
其实,内存中除了我们常说的RAM
(断电易失),还有ROM(可以长久保存)。
不管是i386
(采用intel 80386
架构)还是i386
之前的芯片,在加电后的第一条指令都是跳转到BIOS固件进行开机自检,然后将磁盘的主引导扇区(Master Boot Record, MBR
,0号柱面,0号磁头,0号扇区对应的扇区,512字节, 末尾两字节为魔数 0x55 和 0xaa )加载到0x7c00。
补充
BIOS(Basic Input Output System)是硬件厂商在硬件上自带的一段启动的代码,它的作用是进行一些硬件检查,并且跳转到引导程序bootloader。
Last updated