LINUX内核启动流程-1

1、BIOS启动

硬件设置从OXFFFF0启动:CPU硬件设置加电即进入16位实模式状态运行,CPU硬件逻辑设计为加电瞬间强行将CS的值置为oxF000,IP的值置为0xFFF0,这样CS:IP就指向0xFFFF0这个地址位置。

BIOS程序的入口地址恰恰就是0xFFFF0 ! 也就是说,BIOS程序的第一条指令就设计在这个位置。

LINUX内核启动流程-1_第1张图片

 BIOS在内存中加载中断向量表和中断服务程序

INT(INTerrupt):中断,顾名思义,中途打断一件正在进行中的事。其最初的意思是:外在的事件打断正在执行的程序,转而执行处理这个事件的特定程序,处理结束后,回到被打断的程序继续执行。

计算机将分三批逐次加载操作系统的内核代码

第一批由BIOS中断int 0x19把第一扇区bootsect的内容加载到内存;

第二批、第三批在bootsect的指挥下,分别把其后的4个扇区和随后的240个扇区的内容加载至内存。

2、加载第一部分内核代码——引导程序(bootsect)

经过执行一系列BIOS代码之后,计算机完成了自检等操作,包括显卡、内存……等硬件信息。

2.1 计算机硬件体系结构的设计与BIOS联手操作,会让CPU接收到一个int 0x19中断。

CPU接收到这个中断后,会立即在中断向量表中找到int 0x19中断向量。CPU接收到这个中断后,会立即在中断向

你可能感兴趣的:(嵌入式实时系统开发,linux)