从开机到main函数的执行分三步完成:(1)启动bios,在内存中加载实模式下的中断向量表和终端服务程序
(2)从启动盘加载操作系统程序到内存
(3)为执行32的main函数做过渡工作
这篇博客先将第一步。
我们都知道cpu只能运行内存中的程序,但是内存中得内容是断电即消失的。那么开机后,空空如也的内存
最终是怎么管理起整个硬件的呢?
第一个执行的代码肯定不是软件来加载到内存中的,只能硬件实现。Intel cpu硬件逻辑设计为在加电的瞬间
强行将cs置为0xFFFF,ip置为0x0000,这样cs:ip指向的地址就是0xFFFF0.那么这个地址指向什么呢?
恰好,这就是bios的入口地址(bios的地址范围是0xFE000~0xFFFFF),而bios是闪存芯片做的ROM,上
面是有代码的,这样就可以运行bios程序了。
bios程序短小精深(8KB),这里不深究,只说明它完成的功能。通过bios
(1)在内存的0x00000~0x003FF构建中断向量表(256项)
(2)在内存的0x00400~0x004FF构建bios数据区
(3)在内存的0xE05B(约56KB)处开始加载8k左右的中断服务程序
这些代码就是操作系统打下江山的资本啦。