1、电脑自我启动:从执行Bios指令到将操作系统载入内存
我住在一个机箱里,每天早上一阵电流把我叫醒, 还夹杂着嗡嗡的声音, 我知道我忠实的护卫-电风扇又开始工作了, 我特别怕热, 又运行的飞快, 如果没有电风扇给我降温, 我很快就会生病, 生病的后果很严重, 那就是我的伙伴们像内存、硬盘、网卡等我的好伙伴全部都要罢工了, 没有我这个系统就会陷入的一片死寂。
我的脑容量很小, 所以醒来后只想起了我的创造者告诉我的几件事情 :
I 你的工作就是取指、译指并产生控制信号,并执行运算;
II 你不能保存指令序列, 你的指令序列全在内存里(可以有十分有限的寄存器保存中间结果、地址及单条指令);
III 你的第一条指令在内存的最顶端处0xFFFFFFF0;
那还有什么可说的, 赶紧去取这条指令吧!我把地址发给系统总线,指令很快就回来了,这是一条跳转指令。
我立刻回忆起来了, 这是我的老朋友BIOS 等着我去运行他那一堆指令呢。
我对BIOS说: “老弟,今天干点啥?”
“阿甘,早上好! " BIOS从不失忆,把所有人都记得清清楚楚。“ 还不是老一套啊,无非做一下系统的自检, 看看内存、硬盘、显卡等这些老伙计们有没有问题, 有问题的话用小喇叭提示一下主人 ”
这些过程我已经轻车熟路了, 很快搞定, 像往常一样,没有问题, 我还把一个叫做中断向量表的东西给弄好了, 我知道一会儿要用。
这些东西都搞完了,BIOS果然告诉我: "阿甘, int 0x19。"
我赶紧去刚弄好的中断向量表中去查第19号, 顺藤摸瓜又找到对应0x19的一大堆指令。
执行吧, 这堆指令把将磁盘的第一扇区(磁盘最开始的512字节)搬到内存的0X0000:0X7C00处,然后我就从此处接着执行。
我想起来了, 接下来有一大堆精巧的指令把迷迷糊糊的操作系统从硬盘中唤醒, 运输到内存中来。
你看这就是为啥他们叫我阿甘, 我做事飞快,但非得别人告诉去哪里执行才行, 要不然我就只会坐在那里无所适从。