平时使用linux开发,但却没有空真正静下心来研究过它,所以计划从今天起完全学习一下linux系统.
第一篇 linux 启动开发学起.
无论是linux,还是window系统,启动流程原理大致是一样的.
- 首先机器加电,系统开始在实模式下启动.
- 主板的bios程序的入口地址被cs:ip加载,也就是就说cpu开始执行第一条指令是bios的程序指令.此时bios程序开始运行.
- bios程序会对机器的硬件进行自检(内存,显卡及其它的硬件),并初始化中断向量表,完成后会触发一个中断
- cpu收到中断后查找之前bios初始化的向量表,找到对应中断服务程序的入口,加载到cs:ip中,开始执行中断服务程序.
- 中断服务程序要做的事情是把系统的启动程序加载到内存中来,并把cs:ip指向启动程序地址,使启动程序开始执行.
- 启动程序对内存重新规划,并加载系统程序到内存并让它开始执行,后面控制权就交给系统了.
再具体看下要研究的linux是如何实现的:如下图,文字待续